Lun 8 Feb 18:31:29 GMT 1999
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 :)))
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.
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?
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
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
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!
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)
______________________________ __|__ ___|___ | | 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.
Il floppy è formnatop da 1722 blocchi di 1024K ed è diviso in tre parti:
un filesystem ext2 non compresso (montabile). Verrà montato sotto
/startup
;
un'immagine gzippata di un filesystem ext2, ovviamente montata sotto /
;
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
.
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:
specifica la modalità di testo VGA: normale (80x25), estesa (80x50), or "ask" (chiedi).
monta questa device come partizione di root.
specifica il nome del programma di init da eseguire, es. /bin/sh, or /bin/rc.1,etc. Utile per il recupero..
stabilisce la quantità di memoria installata (se il rapporto del BIOS non è corretto).
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...
La lista che segue è in continua modifica: non appena ho spazio sul disco l'elenco cresce.w.
/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
.
In realtà non ci sono. E' disponibile un help
interattivo(stile
VAX)
.
elvis tiny
(clone standard UNIX di vi ) e ae Antony
Editor
(ma questo è sul floppy X11).
Parecchie mappe di tastiere nazionali. Codepages: 437,850.
Mouse Serial. Bus Mouse: PS/2 (stile aux port): /dev/psaux; Logitech BUS Mouse: /dev/logibm; Microsoft BUS Mouse: /dev/inportbm.
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]
.
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è zip
nè unzip
:
sono piuttosto grossi. Forse in futuro.
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.
ifconfig
, route
, ipfwadm
per masqueranding & forwandingdi processes, ping
, finger
,
traceroute
, trafshow(tcpdump)
. ftp
, telnet
(emulato), rlogin
,
finger
(emulato) e netcat
, uno scanner di porta
TCPUDP di uso generale.
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.
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
.
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.
miterm
, simile a minicom
, per sessioni di
modem remoto.agetty
(sessione di dialin) e efax
(invio
e ricezione fax)
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.
sound.o
(SoundBlaster) e modulo+patch PC-Speaker
(di Michale Beck). Sul mio PC la SoundBlaster funziona, In certi casi
può essere necessario fornire al kernel opzioni extra.mpg123
per suonare file MPEG file (layers 1-2-3) (X11
addon)vplay
per suonare file .wav
vrec
per registrare col microfono.playcd
per ascoltare un CD..au
vanno direttamente a /dev/audio
lynx
, versione 2.6 un client World Wide Web (WWW) completo
per device a carattere (es. terminali vt100, emulatori vt100 su PC o Mac
o altri display a carattere). Visualizza documenti Hypertext Markup Language
(HTML) che contengono link a files del sistema locale o a sistemi remoti
con server http, gopher, ftp, wais, nntp, finger, o cso/ph/qi, e servizi
accessibili con account telnet, tn3270 o rlogin.sed
, less
e netcat
.
La sua unica caratteristica notevole è la sua dimensione in byte:
3713. rpost
(emulato), e inews
(emulato) usato
da Lynx per i posting su newsgroup. Chimera
Web Browser grafico (in X11 addon)
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.
Pygmy
server WWW, un semplice server httpd (2202 bytes),
che supporta connessioni multiple, download e browsing delle directory.
Provate lynx://localhost/ atd
) per l'esecuzione differita (comandi
quali at,atq,atrm
). fortune
(classico fortune, ma in latino), paganini,
piano
(giochi sonori) reverse, blue
(solitari).
No comment.
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.
Vedi anche il file README.custom
Funzionalità del kernel necessaria per 'mu -r':
- loopback device support
Sono incluse le versioni corrette di 'fdformat', 'lilo' e 'bzip2'.
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.
Le keymaps personalizzate si trovano sotto tree/startup/init
,
in keymap.tgz
. Vedi tree/startup/init/README
per le
istruzioni di customizzazione.
E' possibile salvare mailrc
e/o bookmarks.html
sotto
tree/startup/init
.
/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.
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!
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:
/usr/X11R6/lib/X11/XF86Config
: configurazione dell' X server;/usr/X11R6/lib/X11/fvwm95-2/*
: file di configurazione di fvwm;/usr/X11R6/lib/X11/afterstep/*
: file di configurazione di
afterstep;/usr/X11R6/lib/X11/xfm/*
: configurazione di xfm.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!!!!!
In questo floppy da 1722K presente nella release 4.0, alcune utilità per gli sviluppatori C.
as
-- l'assembler portatile GNU.gcc
-- Compilatore GNU project C (v2.7.0)cpp
--il Preprocessore compatibile con lo GNU C Compilermake
-- Programma GNU make per manipolare gruppi di programmiar
-- crea, modifica, e estrae da archivi.ld
-- il linker GNUldd
-- print shared library dependenciesldconfig
-- determine run-time link bindingsstrip
-- scarta i simboli dai file oggetto.flex
-- fast lexical analyzer generator (sostituisce "lex")bison
-- Generatore di parser GNU (sostituisce "yacc")f2c
-- traduttore da FORTRAN a C. p2c
-- traduttore da turbo-PASCAL a C. qb2c
-- traduttore da Quick-BASIC a C (sorgente) g48
-- traduttore da C a RPN (Reverse Polish) per HP48G (sorgente)
In aggiunter: vere man pages UNIX per tutto e molte sorgenti in /gcc/usr/src, per il testing.
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"