Come creare una listribuzione Live-CD Live Linux, le distribuzioni su Cd-Rom in grado di funzionare da sole I Pc moderni possono essere avviati da diversi supporti fisici: dischi rigidi Ide o Scsi, Cd-Rom, floppy e dischi Usb. Fino a oggi per molti utenti questa possibilità è sempre stata soltanto il modo più facile per far coesistere diversi sistemi operativi sullo stesso hardware senza perdere tempo in configurazioni complesse. In realtà ci sono modi molto diversi di sfruttare questa opportunità: se il programma di avvio può non essere sul disco rigido, lo stesso vale per qualsiasi software da usare in secondo tempo. Limitandosi al mondo Gnu/Linux esistono da diversi anni distribuzioni specializzate contenute in un unico Cd-Rom o addirittura floppy: l'uso più frequente è stato finora l'impiego come firewall, router o kit di emergenza per recupero e analisi di server compromessi da attacchi. La vera novità in questo campo è la proliferazione di soluzioni desktop, complete delle interfacce grafiche più avanzate come Gnome o Kde. Questi sistemi, normalmente chiamati "Live Linux", una volta avviati possono lanciare programmi, connettersi a Internet o montare partizioni remote come se fossero stati installati normalmente sul computer. Le varie applicazioni sono compresse sul disco e decompresse in tempo reale quando vengono caricate in Ram. Pro e contro I vantaggi di una versione Linux contenuta interamente in un Cd-Rom sono parecchi. Quello forse più importante è che provare Linux è diventato più facile, rapido e sicuro. Non c'è alcun bisogno di installare alcunché: basta programmare il Bios per effettuare il boot da Cd-Rom, inserire il disco e riavviare il computer. In pochi minuti si ha a disposizione un desktop completo per navigare in Internet, lavorare con OpenOffice.org o consultare i newsgroup. Il sistema operativo precedente rimane indisturbato sul disco rigido, a disposizione al prossimo riavvio. Linux-Live è anche un'ottima soluzione per garantirsi sempre lo stesso ambiente quando non si vuole o non si può utilizzare un laptop. Basta un Cd per ritrovare sempre la stessa interfaccia, con gli stessi menu, la stessa configurazione e così via in ufficio, all'università, a casa di amici o in qualunque altro ambiente. Un altro possibile campo di applicazione sono tutti qui casi in cui si deve creare un desktop per uso pubblico e a prova di contaminazione: appartengono a questa categoria i terminali per Internet Kiosk o quei laboratori didattici dove non sono possibili configurazioni client-server. Se tutte le applicazioni sono contenute in un Cd non c'è bisogno di installare un disco rigido e non c'è nessuna possibilità che l'utente corrompa programmi e file di sistema: qualunque cosa accada un reboot ripristina il sistema originale. Gli aggiornamenti richiedono inoltre il minor tempo possibile: basta sostituire il Cd-Rom. Ovviamente questo tipo di soluzione ha anche limitazioni piuttosto importanti, almeno per alcune situazioni e classi di utenti. Nessun aggiornamento parziale del software è possibile, per non parlare dell'installazione di singoli programmi da parte dei singoli utenti. Lo stesso vale per cambi significativi nella configurazione di sistema. L'uso simultaneo dello stesso computer da parte di più utenti sarebbe parimenti limitato rispetto a un'installazione tradizionale. La quantità massima di software è molto minore di quella che entrerebbe in un disco rigido. Il sistema è inoltre notevolmente più lento dello stesso software installato su hard disk, a meno che non si abbia a disposizione abbastanza memoria da caricarvi simultaneamente tutto il contenuto del Cd-Rom. Live Linux rimane comunque uno strumento molto utile, che vale senz'altro la pena di provare e conoscere meglio. Come funziona un live Cd Il modo di operare di quasi tutte le distribuzioni Live Linux è molto simile, qualunque sia l'aspetto dell'interfaccia utente. Il boot viene effettuato da Isolinux, un programma in grado di far partire direttamente da Cd-Rom immagini del kernel senza problemi di dimensioni. A partire dalla versione 1.65 isolinux può essere utilizzato per avviare (se il Bios del computer lo permette) anche altri sistemi operativi. Isolinux fa parte del progetto SysLinux che sviluppa boot loader anche per avvio da floppy o dalla rete locale. Subito dopo il caricamento del kernel viene creato in memoria un ramdisk (normalmente della dimensione di 7/8 Mbyte). Si tratta di una porzione di memoria dichiarata come partizione, per poterla usare come se fosse un disco rigido tradizionale su cui si possono leggere e soprattutto scrivere file. Si noti che l'uso di un ramdisk in Linux non è ristretto alle distribuzioni su Cd-Rom. In generale si può usare un ramdisk ogni volta che il computer deve usare soltanto un numero relativamente ristretto di file noti a priori: mantenerli permanentemente in memoria sarà più veloce rispetto all'uso di un disco. Sistemi molto diversi come un server web o un client senza disco locale possono avvantaggiarsi dell'uso di un ramdisk. La procedura per creare e usare una periferica virtuale di questo tipo è quella, relativamente semplice, utilizzata anche con altri tipi di dispositivi. Occorre creare sul supporto fisico interessato il file system vero e proprio, poi una nuova cartella e infine associare i due. I comandi corrispondenti a queste tre operazioni sono: mke2fs /dev/ram0 mkdir /tmp/ramdisk0 mount /dev/ram0 /tmp/ramdisk0 Normalmente qualsiasi sistema Gnu/Linux include dei dispositivi per ramdisk, che comunque consumano memoria soltanto quando sono effettivamente formattati o utilizzati. Quelli disponibili sono visibili digitando in un terminale il comando: ls -al /dev/ram* Non appena la partizione virtuale è stata creata le cose ricominciano ad andare (quasi) come nelle installazioni tradizionali. Dopo il bootstrap vero e proprio il controllo deve passare quindi a un rootdisk, che provvede alla creazione delle partizioni Linux necessarie e ad altre operazioni di configurazione. Il rootdisk presente su un Cd-Rom Live Linux viene decompresso nel ramdisk e le sue partizioni montate come file system principale. I vari applicativi e librerie di sistema vengono invece montati direttamente in modalità read-only dal Cd-Rom, a partire dalla cartella /mnt. Anche gli script e i moduli del kernel disponibili vengono caricati nella stessa maniera. A questo punto (tramite il comando chroot) la cartella /mnt diventa la nuova radice del sistema: il comando /bin/ls basterà quindi per lanciare il programma che, fino a un attimo prima, si sarebbe trovato nella posizione /mnt/bin/ls. Successivamente viene lanciato init, l'utility che fa partire le varie console e altri processi fondamentali. In pratica, da questo punto in poi, il kernel e i vari applicativi non si renderanno nemmeno conto (con l'eccezione discussa fra poco) di girare su una configurazione anomala. In altre parole, per creare un Cd Live Linux quasi nessun programma ha bisogno di essere modificato e ricompilato. C'è ancora un grande problema da risolvere. Anche se si è riusciti a caricare ed eseguire software nella maniera tradizionale, rimane il fatto che non si ha, in generale, nessuno spazio su cui scrivere i dati. Nemmeno quelli indispensabili, generati dal kernel e dai vari daemon per gestire il sistema. Anche quando non si sta eseguendo nessun programma utente esistono diverse cartelle e file che potrebbero essere scritti in ogni momento: l'esempio più comune sono le caselle di posta elettronica. Questo ostacolo viene superato tramite l'uso dei driver ovlfs (OVerLaying File System). Il principio su cui si basa ovlfs è molto semplice. Il file system visto dal kernel e dagli altri programmi (incluse le cartelle di sistema come /var e /tmp) viene ricreato al di sopra di un altro, normalmente il ramdisk descritto precedentemente. Questo rende "scrivibili", per quanto ne sanno i vari applicativi, anche quelle cartelle provenienti originariamente dal Cd-Rom. Come si crea un live Cd Creare un desktop Gnu/Linux su Cd-Rom completamente personalizzato non è particolarmente difficile. La ragione migliore per farlo, oltre al desiderio di imparare, è la possibilità di aggiungere driver hardware o specifici programmi assenti dalle immagini Iso. Il modo più facile è procurarsi il codice sorgente di un sistema già ampiamente collaudato, basato su una distribuzione che già si conosce, e modificarne soltanto alcune parti. I punti di partenza migliori per molti utenti saranno Knoppix, basata su Debian, e Slax, derivata da Slackware. Gli utenti delle distribuzioni come Red Hat e Mandrake, basate sul gestore di pacchetti Rpm (Red Hat Package Manager), possono invece fare riferimento a partire da questo indirizzo. Si tratta di una guida che descrive la creazione di un disco Live Linux a partire da qualsiasi distribuzione che usi Rpm. Il documento copre soltanto un'installazione testuale, anche se è possibile usarlo come base per un sistema con interfaccia grafica. La risorsa principale è comunque il progetto Rpm Live Linux. Gli obiettivi sono lo sviluppo di dischi Live Linux per uso desktop, con interfacce Kde e Gnome e di tutti gli strumenti per automatizzare il processo. Sono già disponibili immagini Iso sotto i 200 Mbyte basate su Red Hat Linux 9 o sul suo successore, Fedora Core. In generale il primo strumento necessario, indipendente dalla particolare versione di Linux che si vuole modificare, è una serie di script shell noti come linux-live. In teoria, per ottenere un Cd-Rom funzionante potrebbe bastare procurarsi un Pc con almeno 700 Mbyte di spazio su disco, la distribuzione di riferimento già installata e far girare una volta questi script. In pratica, ovviamente, è opportuno procedere un passo alla volta ed effettuare delle prove come descritto nel seguito prima di creare il Cd-Rom. La procedura di default è contenuta interamente nello script runme.sh. I passi principali (ognuno delegato a uno o più script ausiliari) sono la creazione dell'immagine di init, la copiatura del kernel nella cartella che diventerà la base del Cd-Rom, e la creazione di immagini binarie delle varie cartelle di sistema. Tali immagini, chiamate moduli nella documentazione, sono riconoscibili dall'estensione .img. L'ultimo passo è ovviamente la creazione dell'immagine ISO finale, che però non ha quasi niente di specifico al discorso Live Linux. I moduli che poi diventeranno file system fittizi contenenti applicativi e librerie possono essere creati a partire da pacchetti binari propri della distribuzione (in formato .tgz nel caso di Slackware) oppure copiando direttamente cartelle preparate dall'utente. La distribuzione di script Live Linux include script specifici per entrambi i casi. La procedura può essere pesantemente personalizzata, ma è bene limitare al massimo i cambiamenti, almeno all'inizio. Si consideri inoltre che ogni modulo creato con queste procedure potrebbe avere un impatto non trascurabile sulle prestazioni: ogni file system indipendente richiede un punto di mount indipendente con la creazione e gestione di parecchi link simbolici a file e cartelle. È quindi preferibile riunire tutti i file che servono in una sola cartella e creare un solo modulo a partire da quest'ultima. Un'altra sfida è limitare al massimo le modifiche o la creazione di file e log di sistema. Un'altra parte da gestire con cura è la cartella /dev/ che contiene un file (pseudo driver) per ogni dispositivo fisico da controllare, inclusi tastiera e mouse. Come altre cose questi file sono scrivibili da una distribuzione live perché creati direttamente in Ram, ma ogni cambio (se non passato come parametro di boot o inserito in qualche script di inizializzazione) viene perso a ogni riavvio. Lo stesso problema si presenta con link a modem, lettori Cd-Rom e così via, anche perché in genere cambieranno ogni volta che si usa il Cd-Rom su un computer diverso. Le cartelle di sistema in cui vengono normalmente scritti messaggi di diagnostica o creati file temporanei (/var/ e /tmp/) devono essere create ogni volta, sempre con gli artifici descritti in precedenza, e proprio all'inizio della procedura di avvio. Quando tutte le cartelle che costituiranno il sistema Live Linux sono pronte è consigliabile fare una prova, ma senza perdere tempo a masterizzare un Cd. Il modo migliore è trattare quella cartella come se fosse il Cd, ovvero far ripartire il computer con l'immagine del kernel e i file che essa contiene. Perché questo accada si deve modificare la configurazione del programma di avvio del computer (boot loader). Nel caso di LiLo (Linux Loader) si dovranno aggiungere le istruzioni seguenti al file /etc/lilo.conf ed eseguire in un terminale (come amministratore di sistema) il comando /sbin/lilo: image=/hda7/boot/vmlinuz label=Linux-live read-only append="root=/dev/hda7" La prima riga indica qual è l'immagine di boot da usare, e l'ultima la partizione da usare come base del sistema. All'avvio del sistema l'utente dovrà scegliere l'opzione Live Linux per caricare il sistema destinato al Cd-Rom. Qualunque errore segnalato in questa fase potrà essere corretto direttamente nella partizione interessata: appena si sarà ottenuto un boot senza problemi si potrà copiare il tutto su Cd-Rom. Questa guida è tratta da: http://www.pcprofessionale.com/software/articolo/idA028002039957.art Data: 6/10/2005 Sezione: Guide L'indirizzo di questo articolo: http://www.mandrakeitalia.org/modules/wfsection/article.php?articleid=123