muLinux: Linux in floppy, v 4r0 Tomato

© 1998, Michele Andreoli, andreoli@pisoft.it

Lun 8 Feb 18:31:29 GMT 1999


Questa è la documentazione di muLinux, la micro distribuzione Linux sviluppata da Michele Andreoli. Ritraduzione dall'inglese di Marcello Missiroli. Non si capisce perché non la si sia scritta in italiano da subito, ma ci piace essere complicati.

1. Cos'è muLinux?

muLinux (micro-Linux) è una distribuzione Linux pienamente configurata, minimalistica e orientata alle applicazioni, capace di stare su di un unico floppy da 1722K.

Il suo scopo è quello di mostrare la potenza e la scalabilità di questo sistema operativo. Il Kernel 2.0.36 è complitato per un 386 (senza coprocessore) e modularizzato il più possibile. I file binari sono presi da decine di distribuzioni e floppies di boot raccolti sui miei tre hard disk. Vi state forse chiedendo perché ho scelto un dato binario quando ne avevo due con lo stesso nome? Ho semplicemente scelo la versione più piccola e che richiedesse solo la libc.so.5. Non mi dilungherò nell'esporre tutti gli sporchi trucchi per risparmiare spazio: vi basti sapere che ho riscritto in C il comando expr, dato che non riuscivo a capire perché servissero 50328 byte quando si poteva fare la stessa cosa con soli 4586. Ma non mi sono limitato soltanto a sostituire grep con sed ed altre cose innocenti come questa: ho cancellato, con le mie stesse mani, ottime righe di codice C da un certo numero di binari (no quelli veramente importanti). Comunque, se questo puo' consolarvi, devo ancora averle qui, da qualche parte :)))

2. A chi serve muLinux?

muLinux non è pensato per il neofita, che non sarebbe affatto contento della sua interfaccia spartana, ma per il fanatico di Linux, per il curioso che vuol vedere in che modo un sendmail di soli 1216 byte possa consegnare la posta con l'indirizzo di ritorno assegnato correttamente. Inoltre, un Linux portatile potrebbe essere utilie in molte circostanze: manutenzione in vari posti, una dimostrazione o anche solo per vederlo partire ogni tanto, senza una precisa ragione.

3. Requisiti Hardware

L' Hardware della maggior parte dei computer funzionerà alla grande. Il minimo assoluto consiste di un 386 con 4MB di RAM. Il coprocessore matematico NON è richiesto dato che mulinuz contiene l'emulazione matematica-

L'Hard Disk non è richiesto. Certo, è possibile montare le partizioni esistenti se lo si desidera. I dischi SCSI non sono supportati direttamente data l'enorme varietà delle schede. Se volete supporto SCSI leggete Come personalizzare muLinux?

4. Il comando setup

Per personalizzare la partizione di root , muLinux ha uno script (setup, vedi setup -h )che può leggere(setup -r) e scrivere (setup -s) sul floppy la configurazione del tipo di tastiera, dei dati ethernet, di dove sono mouse e modem, di che moduli il kernel deve caricare, dell numero di telefono del provider e così via.Per fortuna occorre preoccuparsi di questo solo la prima volta che fate il boot da floppy. L'utente, comunque, può usare comandi come setup -f ppp o setup -f net ogni volta che vuole (-f vuol dire "forzare"). Se volete, potete anche battere setup -f -a, dove -a vuol dire "all", cioè "tutto".Per poter usare il floppy con varie configurazione, il comando setup realizza una sorta di "multiconfigurazione". Sarete in grado di passare da una configurazione all'altra quando volete. Potete salvare diverse configurazioni con nomi diversi. Per esempio, con setup -r "home" caricherete una configurazione con il solo supporto per ppp, con setup -r "pc12" una configurazione con una scheda ethernet e il numero IP del PC n. 12. Tutto questo si trova nella directory /init del segmento BOOT, mentre la configurazione attiva si trova in /setup.

Quando fate il boot di muLinux, setup vi chiede la configurazione da caricare. Nomi di configurazioni speciali sono "NONE" e "lock": con "NONE", setup non fa assolutamente nulla e, se l'ultima configurazione che avete salvato si chiama "lock" verrà caricata senza richiesta di conferma.

Con il comando setup potete anche caricare in memoria moduli compressi: setup -m nome_modulo, e simili

5. muLinux e la pecora Dolly

A partire dalla versione 2.0, muLinux si installa da solo non solo in RAM, ma in modo permanente in una directory DOS (installazione UMSDOS) o in una partizione libera dell'hard disk (installazione EXT2). Sono sufficiente 8-10MB di spazio libero sull'hard disk.

Per effettuare questo tipo d'installazione il kernel muLinux è corredato di supporto UMSDOS e DOS e abbiamo aggiunto loadlin.exe. In entrambi i casi, si usa loadlin per lanciare muLinux ed è necessario partire dal prompt DOS con il comando linux.bat. Le motivazioni di questa scelta sono che muLinux è stato concepito per essere usato temporaneamente anche su PC non di nostro possesso: occorre compiere installazioni non invasive e facilmente rimovibili.

Le installazioni UMSDOS realizzano il seguente concetto: potete condividere lo spazio tra Linux e DOS; non è necessario ripartizionare gli hard disk e potete rimuoverla senza particolari sforzi.

L'installazione EXT2, al contrario, è solo una curiosità ed è l'unica intrinsecamente pericolosa: muLinux deve formattare la partizione scelta (come qualsiasi floppy d'installazione per Linux) ed un utente inesperto potrebbe scegliere la partizione sbagliata. Tra parentesi: se avete a disposizione una partizione sufficientemente grande, perché non installate un Linux vero?

A questo punto vi chiederete del titolo di questa sezione. In realtà, ciò che abbiamo descritto finora non sono vere installazioni ma processi di clonazione; l'intero filesystema muLinux (anche dispositivi montati) saranno copiati (con cp -a, si, proprio lui!) sulla destinazione scelta.

Un piccolo consiglio: non lasciate montati un cd-rom o una qualsiasi partizione NFS durante la clonazione se non volete replicare l'intero univeso nella partizione DOS!

I sistemi muLinux cloanti funzionato allo stesso modo dei sistemi montati in RAM. Setup e autoconfigurazione sono le stesse nelle tre modalità d'installazione. L'utente non noterà alcuna differenza. Questa caratteristiche rende muLinux diverso dalle proposte simili di Linux su floppy, che hanno legami più forti con il floppy diski

6. muLinux e sistemi con poca memoria

Il processo di clonazione (vedi muLinux e la pecora Dolly), che può essere lanciato dall'utente in qualsiasi momento, partirà automaticamente quando il sistema riconosce che c'è poca RAM a disposizione (<4M).

In questi casi, muLinux resta al "runlevel 3" (disponibili solo i comandi /bin), crea immediatamente un file di swap nella partizione DOS e inizia a clonarsi senza ulteriori attese.

Quando vedete il messaggio Automatic reboot in progress, estrarre il floppy e lanciare DOS. Al prompt date cd su c:\linux e lanciate linux.bat: il muLinux clonato sarà disponibile in breve tempo.

Il primo avvio sarà esenuante: se muLinux nota che alcune componenti mancano (per esempio /usr e X11), inizierà a copiarli dal floppy all'HD. Se invece hai clonato manualmente mulinux da un sistema montato in RAM già configurato, il sistema clonato sarà già completo.

Tenete presente che su di un 386 con 4M l'intero processo di cloanzione e "rianimazione" può durare più di 15 minuti la prima volta, ma dopo potrete vedere XWindow sul vostro 386!

7. muLinux come client NFS-root senza disco

A partire dalla versione 3.0, nome in codice "Hammameth", muLinux è in grado di caricare il suo filesystem di root via NFS (Network File System) purché abbiate un server NFS che supporti questo protocollo TCP/IP classico.

Il servizio di nfsroot si configura con la solita procedura di setup (vedi Il comando setup): muLInux chiederà di configurare i parametri Ethernete specificare nfs_root, cioè la directory remota che contiene un sistema Linux (e potrebbe trattarsi di una copia di muLunux).

Il Kernel di muLinux è stato leggermente modificato in modo da montare la "vera root" solo dopo la configurazione dei vari driver: il kernel è modulare, per cui non è possibile configurare tali driver con i soliti parametri di boot (nfsroot= e nfsaddr=). La modifica è così piccola (una sola riga) che può essere il Subject di un email o scritta su di un francobollo!

Per esempio, supponiamo che ivostri client muLinux abbiano (in dqn) 192.168.1.x, e che nfs_root sia /remote/root. Il file /etc/xports del sever potrebbe essere simile a

        #/etc/exports
        /remote/root    192.168.1.0/255.255.255.0(rw,no_root_squash)

Una volta salvata la configurazione sul floppy (col nome che preferite, come ad esempio "nfs"), al successivo boot dovrete solo richiedere a muLinux la configurazione "nfs": muLinux configurerà i driver di rete e monterà nfs_root.

Se il sistema remoto è a sua volta un sistema muLinux, è possibile che al primo boot muLinux vi chieda di ripartire con il setup un'altra volta. Perdonatelo: come fa a sapere che avete già risposto a tutte quelle domande?

Per preparae il sistema remoto è sufficiente copiare l'intero albero muLinux in /remote/root. Un altro metodo consistte mell'esportare l'intera root del server (QUESTA SOLUZIONE NON E' SICURA).

Se avete una partizione EXT2 di scorta sul server (come /dev/hdb1), potreste preparla con una distribuzione funzionante ed esportarla alle stazioni di lavore. In questo caso è sufficiente montare la partizione in fase di boot (mettete la linea "mount -t ext2 /dev/hdb1 /remote/root" in uno script di avvio del server) per renderlo disponibile ai client. L' /etc/fstab dei client dovrebbe contenere qualcosa simile a

        /dev/nfs        /       ext2    defaults 1 1

Se i client necessitano di spazio di swap, dovranno usare un disco locale: muLinux non è in grado (al momento) di swappare via NFS.

Su macchine con poca memoria (meno di 4MB di RAM) il processo di boot è in parte modificato: muLinux chiederà immediatamente di poter clonare il sistema su disco (come nei casi precedenti) o di montare il sistema via NFS. con un po' di sforzi è possibile trasformare il vostro 386 in stazioni di lavoro senza disco basati sul Linux+XWindow. La soluzione è molto economica ed efficiente per molte scuole con laboratori informatici obsoleti (come in molti Istituti Tecnici italiani)

8. Filtraggio IP con muLinux

______________________________
 __|__                  ___|___
|     |  rete locale   |       |   ______  PPP-link al provider
| PC  |  192.168.1.0   | Linux |--|modem |------------------>
|     |                | Router|  |______|      x.x.x.x
|_____|                |_______|          (indirizzo IP dinamico)
                         pppd

Un firewall con filtraggio di IP è concepito per controllare il flusso dei pacchetti basandosi sull'origine, destinazione, port e tipo di pacchetto. In muLinux (versione > 2.7, setup ipfwadm) potete attivare IP masquerading e protezione generica IP su un server Linux, permettendo ai computer collegati (che usano TCP/IP ma senza un indirizzo internet registrato) di connettersi a Internet attraverso il vostro box muLinux.

9. Che succede durante il boot?

Il floppy è formnatop da 1722 blocchi di 1024K ed è diviso in tre parti:

BOOT

un filesystem ext2 non compresso (montabile). Verrà montato sotto /startup;

ROOT

un'immagine gzippata di un filesystem ext2, ovviamente montata sotto /;

USR

un'immagine bzippata di un filesystem ext2e. Verrà montato /usr.

Il floppy di estensione X11 (1772K) è, invece, in formato tar+bzip(tbz).

Il kernel viene caricato, come al solito, con LILO. Quando il kernel è caricato, esegue /sbin/init. BOOT viene montato da floppy sotto /startup, mentre USR è montato sotto /usr come ramdisk. Accedendo a /startup siamo in grado di salvare la nostra configurazione in modo permanente: vedi la sezione Il comando setup.

Gli script di setup si occupano anche di creare una quarta partizione in RAM, caricata sotto /tmp.

10. Parametri del prompt di boot

Il kernel Linux ha una capacità limitata di accettare informazioni in fase di boot nella forma variabile=valore. In generale questo metodo si usa per fornire al kernel parametri dell'hardware.

Gli argomenti in fase di boot si applicano solitamente a driver hardware comilati direttamente nel kernel, per cui tale caratteristica è poco utile in muLinux

Se, al prompt "boot:" premete [SHIFT] o [TAB], LILO si aspetta un nome di un'immagine bootabile (nel nostro caso: mulinux) e passerà opzioni attraverso la linea di comando al kernel. Un esempio:

                boot: mulinux root=/dev/hdb2 vga=extended 

Ecco un elenco dei parametri utilizzabili dal kernel muLinux:

vga=mode

specifica la modalità di testo VGA: normale (80x25), estesa (80x50), or "ask" (chiedi).

root=device

monta questa device come partizione di root.

init=program

specifica il nome del programma di init da eseguire, es. /bin/sh, or /bin/rc.1,etc. Utile per il recupero..

mem=size

stabilisce la quantità di memoria installata (se il rapporto del BIOS non è corretto).

load_ramdisk=0

impedisce il caricamento di root.

Nel caso vogliate usare in un floppy di root alternativo, invece del ramdisk standard di muLinux (sistemi con poca memoria) potete battere

                boot: mulinux load_ramdisk=0

Il kernel chiederà "Insert ROOT floppy ..." (inserisci il floppy ROOT)

Se vuoi montare una partizione di root EXT2 esistenti, battere

                boot: mulinux root=/dev/hd...

11. Cosa c'è sul floppy

La lista che segue è in continua modifica: non appena ho spazio sul disco l'elenco cresce.w.

Shell.

/bin/ash: Lo so che è brutta, ma è molto più piccola di bash ed è uguale per quanto concerne gli script. "Command history" ha un supporto approssimativo con ile.

Pagine Man

In realtà non ci sono. E' disponibile un help interattivo(stile VAX)

 

.

Editor.

elvis tiny (clone standard UNIX di vi ) e ae Antony Editor (ma questo è sul floppy X11).

Supporto tastiere.

Parecchie mappe di tastiere nazionali. Codepages: 437,850.

Supporto Mouse.

Mouse Serial. Bus Mouse: PS/2 (stile aux port): /dev/psaux; Logitech BUS Mouse: /dev/logibm; Microsoft BUS Mouse: /dev/inportbm.

Accesso ai filesystem.

Dos, UMSDOS, Windows, vfat, NFS (nfs.o module), WfW/NT fs share Samba/SMB (smbfs.o module), cdrom (isofs.o module). Comandi quali mount, smbmount, umount, fdisk, fdformat, df, free, mkfs.ext2, [e2fsck].

Comandi generali

ls, cp, mv, gzip, gunzip, bzip2, bunzip2, more, less, zless, zcat, cmp, find (emulazione), grep,fgrep (emulazione), sed, tr (riscritto), clock, date (emulato da clock), basename (emulazione), dirname (emulazione), pidof (emulazione), ee editor, dd, od (emulazione), file (emulazione), pr (emulazione), du (emulazione), expr (riscritto), setserial, tar, insmod, rmmod, lsmod ecc. Sognavo di non includere gzip e usare l'opzione z di tar. Ma tar può solo gunzippare...

Non troverete nè zipunzip: sono piuttosto grossi. Forse in futuro.

Supporto stampante

Il modulo lp.o module, a richiesta più un semplice lpr con codici di escape (senza spooler). muLinux supporta solo stampanti ASCII, POSTSCRIPT (es. Apple Laserwriter) e HP-PCL (es. Laserjet) e stampa solo i seguenti formati:: ascii, pgm, tiff (g3,fax). A partire dalla release 4.0, muLinux supporta anche stampanti UNIX remote in stile BSD.

TCP/IP

 

Ethernet.

Solo le schede 3c509, ne e ne2k-pci, Ma i moduli sono sul sloppy. Dovrete gzippare il vostro modulo e metterlo sul floppy. Vedi la sezione Come si personalizza muLinux? per ulteriori dettagli.

PPP.

Moduli ppp.o, serial.o e slhc.o, comandi chat e pppd. La configurazione è automatica e si lancia PPP battendo pppd o ppp-on, ppp-off. PPP mulinux setup permete inoltre di collegare due PC fra loro con un cavo seriale null-modem (o una rete locale a internet).

 

Recupero posta.

Un fetchmail di pochi K, perfettamente funzionante, con la opzione -F (flush), ma anche un vero fetchpop.

Invio e lettura posta.

Un sendmail compatibile con quello vero che supporta smarthost e processing offline. L'ho provato con pine dal mio Linux "grosso". Potere usare il campo From: che preferite (-f option). Mail processing con RNA Messenger, symlink `mail` (offline supportato).

 

 

Connessione via Modem.

 

Fax management.

Una script fax che ti permette di scrivere, spedire, ricevere e stampare fax, con il pacchetto efax (C) Ed. Casas. Provato con un USR Sportster 3.66 ma funziona su ogni modem. Spero.

 

 

Musica e suono.

 

Il Web.

 

Server

A partire dalla release 2.3, muLinux è corredato da alcuni "server e demoni" rustici. Un server muLinux, in generale, è una shell script (basata su netcad) che viene eseguita da init(8) senza inetd. I server vanno in shutdown con "init s" e ripartono con "init 5"; "init q" aggiorna lo stato di init(8). L'elenco crescerà, spero.

 

 

 

 

Giochi

fortune (classico fortune, ma in latino), paganini, piano (giochi sonori) reverse, blue (solitari).

12. Quanto spazio liberò c'è sul floppy?

No comment.

13. Modelli dei floppy

Il comando mu -i permette la creazione di vari modelli dei floppy, di dimensione 1440K o 1770K. Per esempio, il modello a due floppy BOOT+ROOT(1722K) e USR(1722K) permette di aumentare il numero di eseguibili messi in ROOT (/bin) e in USR (/usr/bin).

Il modello BOOT+ROOT(1440K) e USR(1722K) fa il boot molto più rapidamente. mu -i ha però un contrattempo: chi installa da DOSnon può scegliere questo modello ma deve accettare il modello di default BOOT+ROOT+USR su di un singolo floppy 1722K, dato che LILO non esiste come programma DOS. Dal punto di vista tecnico, costruire un floppy è un semplice comando simile a cat BOOT ROOT > /dev/fd0, ma LILO è necessario per modificare l' MBR. Non so di alcun metodo semplice per farlo sotto DOS (senza LILO). Infine, non credo non penso che distribuire BOOT.1440 e BOOT.1722 sia una buona idea.

14. Come personalizzare muLinux?

Vedi anche il file README.custom

14.1 Prerequisiti

Funzionalità del kernel necessaria per 'mu -r':

- loopback device support

Sono incluse le versioni corrette di 'fdformat', 'lilo' e 'bzip2'.

14.2 Moduli

La partizione di root riiede sul floppy, scissa in due parti (vedi la sezione Che succede durante il boot?): la prima parte (ROOT) contiene solo la struttura della directory (/bin, /lib, ecc.)

La prima cosa da fare per costruire un muLinux personalizzate è di scompattare le immagini BOOT,ROOT,USR e X11 con il comando mu -u. La partizione di BOOT verrà scompattata nella subdirectory tree/startup e ROOT+USR+X11 nella subdirectory tree/.

Ora potete aggiungere, cancellare e sostituire comandi come preferite.

Se volete cambiare il kernel, compilatelo con make zImage e copiatelo in tree/startup/boot/mulinuz. I moduli necessari dovranno essere gzippati e copiati in tree/startup/modules/archive.tbz (vedi tree/startup/modules/README, per i dettagli).

E' spesso necessario specificare parametri quali io, irq e simili quando si carica un modulo. Se il vostro modulo X.o necessita di parametri extra scriveteli semplicemente in tree/startup/modules/X.param, ricordando che muLinux carica i moduli con comandi simili a questo

insmod X.o `cat X.param`

Notare che dovrete compilare il supporto per i filesystem ext2, DOS, UMSDOS e ramdisk direttamente nel kernel perché sono richiesti durante il boot per i modelli muLinux su UMSDOS.

Se date un'occhiata allo script mu troverete una variabile chiamata BOOT_FREE: con essa potrete mettere a punto lo spazio libero che volete sulla partizione BOOT, dove tutte le configurazioni sono salvate permanentemente e dove potreste voler salvare la posta lettronica, per esempio.

14.3 Keymaps

Le keymaps personalizzate si trovano sotto tree/startup/init, in keymap.tgz. Vedi tree/startup/init/README per le istruzioni di customizzazione.

14.4 Personalizzazioni

E' possibile salvare mailrc e/o bookmarks.html sotto tree/startup/init.

14.5 La directory /usr/bin

Troverete il contenuto di questa directory in tree/usr/bin. Potete cambiare senza restrizioni. Se finite lo spazio dovrete cercare qui qualche comando da eliminare. ricordare che lynx è l'eseguibile di maggiori dimensioni presente sul dischetto.

14.6 Ricostruire il floppy

Una volta finita la personalizzazione di muLinux, battete

mu -r
mu -x   # this if for X11 subsection
per ircostruire l'immagine del floppy. Occhio ai messaggi d'errore! Se tutto funziona potete fare il reboot della nuova e personale versione di muLinux!

15. L'estensione XWindow per muLinux

L'estensione consiste, fondamentalmente, dell XSserver VGA-16, i window manager fvwm95-2 & Afterstep e il file Manager XFM. muLinux monta il contenuto di questo floppy (circa 4.2M non compresso) sotto /usr/X11R6. Troverete i nuovi eseguibili e librerie sotto /usr/X11R6/bin e /usr/X11R6/lib.

I file di configurazione si trovano sotto /usr/X11R6/lib/X11, la scelta iniziale di molti sviluppatori X11R6. Potreste aver necessità di consultare i file seguenti:

XKB è disabilitata: le tastiere nazionali sono esportate direttamente in X. Molti font sono stati cancellati.

Troverete infine questi programmi X: : xcalc, xclock, xload, xhost, xmodmap, xsetroot, xinit, xcal, xmixer, pyro, xsnow e xterm. Si può usare xterm per lanciare qualsiasi comando muLinux in modo testo (lynx, minicom, workbone, ecc...). xhost e interessante perché permette al server X locale di mostrare applicazioni eseguite su stazioni di lavoro remote.

Se avete 16-32M di RAN, X viaggerà ad una velocità terrificante!!!!!

16. L'estensione GCC per muLinux

In questo floppy da 1722K presente nella release 4.0, alcune utilità per gli sviluppatori C.

In aggiunter: vere man pages UNIX per tutto e molte sorgenti in /gcc/usr/src, per il testing.

17. Cose da fare

18. Su questo documento

Il documento è basato sull'originale inglese, scritto in SGML e renderizzato con sgml-tools.

Potete trovare l'ultima versione del documento su http://www4.pisoft.it/~andreoli/mulinux.html, e la sua versione italiana su http://www4..pisoft.it/~andreoli/apps/mulinux/italian/readme.html"

19. Download muLinux

Click qui.