+-----------------------------------------+ | muLINUX -- Linux su un floppy | | Versione 10^-6 | | (C) 1998 M. Andreoli | +-----------------------------------------+ Questa e' la versione originale in italiano dell'unica documentazione disponile su muLinux e non e' piu' aggiornata, in favore della versione SGML in inglese, mantenuta da E. Cavalli. COS'E' muLinux --------------- E' una minuscola implementazione di Linux capace di stare interamente su un floppy e il cui scopo e' dimostrare la potenza e la scalabilita' del questo sistema operativo. La sua realizzazione e' il frutto di una certosina attivita' di taglia-e-cuci e di gzippamento oltre ogni limite. Il kernel e' un 2.0.30 compilato per un 386 e quanto piu' possibile modulare. I binari (pochi ma buoni) sono in parte emulati, in parte autocostuiti e in parte rapinati qua e la dalle decine di installazioni di Linux e di floppy di boot che ho sui miei 3 capienti hard-disk. Vi chiederete: come ho fatto a scegliere quale binario prendere, quando ne avevo due dello stesso nome? Semplice: ho preso il piu' piccolo e che si accontentasse della libc.so.5. Vi risparmio il racconto di quant'altro di turpe e di immondo ho fatto per risparmiare spazio: vi basti sapere che mi sono riscritto in C il comando `expr`, perche' non mi riesciva di capire come mai ci volessero 50328 byte per fare quello che si puo' fare con 4586, e che perfino `grep` l'ho costruito con `sed`. A CHI E' RIVOLTO ---------------- muLinux e' rivolto non tanto al principiante, che non troverebbe particolare diletto nella sua interfaccia essenziale e spartana, quanto all' appassionato di Linux in generale, all'anima curiosa che vuole spulciare dentro gli script per vedere come mai un 'sendmail' di soli 1216 byte spedisce davvero la posta e col return-address che vogliamo. Inoltre, un Linux portatile puo' far sempre comodo, per attivita' di manutenzione in vari luoghi, a scopo dimostrativo, o anche solo per vederlo "bootare" di tanto in tanto, senza motivi particolari. COSA SUCCEDE AL BOOT --------------------- Beh, su questo anch'io, diciamolo pure, ho le idee un po' confuse :) Quello che so e' che al boot, il kernel (mulinuz) carica in RAM (loadlin) la partizione di root (ramdisk.gz, file-system ext2) e come prima azione "da vivo" lancia il mio script /linuxrc, il quale si incarica di scompattare la seconda parte (ram2.bz2) e di personalizzare la /root in base alla configurazione desiderata dall'utente. Inutile cercarlo, ma non c'e' ne' il superserver inetd, ne' /sbin/init. Questo significa che, a modem spento, muLinux fa' una certa tristezza, e' vero: le porte TCP e i services ci sono, ma l'oste e' scappato e i camerieri si sono licenziati. Vuoi mettere pero' la sicurezza? Forse muLinux e' il sistema piu' sicuro al mondo: si puo' solo uscire, ma non entrare :) Comunque: sto' pensando ad implementare qualche servizio lato server (vedi in seguito) anche se non so con esattamente che farmene. IL COMANDO setup ------------------ Per personalizzare la /root muLinux dispone di uno script (`setup`) in grado di leggere (setup -r) e scrivere (setup -s) sul floppy, quindi in maniera permanente, l'insieme dei dati necessari a configurare in maniera sufficiente Linux: il tipo di tastiera, di scheda ethernet, dov'e' attaccato il mouse, dov'e' attaccato il modem, quali moduli del kernel caricare ogni volta, il numero di telefono del provider, etc. Questa seccante orgia di richieste e risposte avviene soltanto la prima volta che si usa il floppy, grazie a dio. L'utente, comunque, puo' in qualsiasi momento battere un comando come "setup -f ppp" o "setup -f net" (dove -f sta' per "force") e la lagna si ripete. Se proprio si e' masochisti, allora battere "setup -f -a", dove "-a" sta' per "all". Per facilitare l'uso del floppy su varie postazioni, il comando `setup` gestisce una sorta di "multi-configurazione" ed e' possibile passare dall'una all'altra in qualsiasi momento, rispondere diversamente alle domande e risalvare la configurazione con un altro nome. In questo modo, con "setup -r home", ad esempio, carico una configurazione col solo ppp; con "setup -r pc12" ne carico una con la scheda ethernet e con gli indirizzi IP giusti per il PC numero 12. La zona della ramdisk dove risiede la configurazione corrente e' /setup mentre l'insieme di tutte le configurazioni disponili sul floppy sono in /a/init. COSA C'E' ATTUALMENTE SUL FLOPPY -------------------------------- Questa lista e' in continuo aggiornamento: man mano che faccio spazio, aggiungero' altre cose. - Shell o /bin/ash (lo so che e' un'immondezza, ma e' mooolto piu' piccola di bash e negli script si comporta uguale). - Tastiera o it.map e us.map , per ora (ma e' sul floppy, per cui ...) - Accesso ai vari file-system o Dos, Windows, vfat (modulo vfat.o) e NFS (modulo nfs.o) i cdrom (modulo isofs.o). Comandi mount, umount, fdisk, mke2fs, df, free ... - Comandi di utilita' generale e per gli script o ls, cp, mv, ... gzip, gunzip, more, less, zless, zcat, grep (emulato), sed, tr (riscritto), clock, date (emulata con clock), basename (emulato) pico, dd, od, etc ... e il tar. Ho anche sognato di cancellare gzip e utilizzare in qualche modo la "z" di tar. Ma tar unzippa soltanto :(. o manca zip e unzip: un po' grossini. Vedremo. - Stampante ( solo ASCII ) o modulo lp.o, a richiesta. Ho scritto anche una specie di lpr per stampare file di testo. - Il mondo TCP/IP o comandi quali ifconfig, route, ping o ftp, telnet (autocostruito), finger. - Connessione Ethernet o Solo il modulo per la 3c509, ma i moduli sono sul floppy. Basta gzippare il proprio e scaraventarvelo sopra. - Connessione PPP o Moduli ppp.o, serial.o e slhc.o, comandi chat e pppd. La configurazione e' automatica e si parte battendo `pppd`. - Scarico della posta o con un `fetchmail` autocostruito di pochi K, ma perfettamente funzionante, dotato dell'opzione -F (flush). o col "vero" fetchpop - Invio e lettura della posta o con un `sendmail` autocostruito e compatibile con quello "vero". L'ho testato chiamandolo con pine dal Linux "grosso". Permette di utilizzare qualunque campo FROM ( optione -f) o col comando `mail`, quello vero, quello della RedHat4.2 per intenderci. - Musica e suoni o modulo sound.o, a richiesta. Sul mio PC la SoundBlaster funziona. In casi piu' difficili, occorrera' passare qualche parametro al kernel (si vedra'). o comando `vplay` per suonare i .wav o comando `vrec` per registare dal microfono. o `workbone` per ascoltare i CD. o file .au direttamente sulla porta /dev/audio - IRC Il client irc si potrebbe mettere (e' piuttosto piccolo), ma per ora sto risparmiando spazione per ... - Il Web Il browser Quark, a colori, con funzionalita' simili a quelle di Lynx, ma molot, molto piu' rustico. QUANTO SPAZIO RESTA ANCORA SUL FLOPPY ------------------------------------ o No comment. NOTIZIE SPECIFICHE ------------------- Per le attivita' di TCP ho utilizzato `netcat`, un programmino di pochi K che e' un vero portento: con questo ho sostituito `telnet`, `fetchmail`, `sendmail`, e presto anche `ftp`, se non mi resta spazio per tenermelo. Per realizzare i dialoghi expect/send necessari ai vari protocolli POP3, SMTP etc, ho dovuto implementare un sistema macchinoso di pipe che ancora mi stupisco coma abbia potuto funzionare. E' incredibile a dirsi, ma non `netcat` si posso implementare quasi tutti i server che ascoltano una porta: ho gia' fatto `telnetd` e faro' anche un minuscolo server web di 4 righe. TODO ----- o Un sistema di help su file, possibilmente utilizzando i colori. o Un piccolo spooler per stampe ascii. o Uno script `menu` per facilitare l'accesso alle varie "risorse". o Aggiungere i comandi rz e sz per trasferire file via telefono. o Aggiunge potenzialita' BOOTP. o .... Michele Andreoli andreoli@pisoft.it