Costruisci una ”live” fai da te derivata da Debian

Pensate che le distribuzioni “preconfezionate” siano tutte uguali e poco adatte alle vostre esigenze? Noi vi mostriamo come crearne una su misura per voi.

Il modo usuale di utilizzare un sistema operativo è procedere preventivamente alla sua installazione sul computer/dispositivo. L’installazione richiede una unità di memoria di massa (tipicamente un hard disk), nel quale memorizzare tutte le librerie e le applicazioni di sistema, che con tutta probabilità diventerà anche l’area dati dell’utente. In molti casi è impossibile trasferire un sistema operativo precedentemente installato su altro hardware senza dover ripetere l’installazione o ripristinarlo dai supporti di installazione. Questo comportamento è diffuso tra i sistemi operativi commerciali, che sembrano essere profondamente affetti da mancanza di adattamento e riconoscimento automatico dei dispositivi hardware durante la fase di boot, dovuto in parte alla necessità di utilizzare protezioni anticopia. Fortunatamente, GNU/Linux è esente da questo fastidioso problema e possiede un livello di adattabilità che gli permette di adattarsi ad hardware anche molto differente rispetto alle condizioni iniziali nel quale il sistema è stato installato.

Il segreto è nel kernel Linux

Per capire il perché di questa preziosa caratteristica, è necessario analizzare il processo di bootstrap, che si attiva dopo la fase in cui il BIOS analizza le unità disponibili per l’avvio e passa “la palla” al bootloader, il quale provvede a sua volta al caricamento del kernel Linux da mandare in esecuzione. Durante la sua fase di attivazione, il kernel provvede al riconoscimento di tutti i componenti hardware per il quale è presente un driver. Solo dopo questa fase procede con il mount dell’unità di memorizzazione (in genere una partizione del disco o un’unità virtuale), nel quale verrà invocato il processo init, incaricato di attivare tutti i servizi della distribuzione. A questo punto, è chiaro che, più il kernel è compilato per essere generico, più è flessibile ai cambiamenti (ovviamente mantenendo la stessa famiglia di processore e l’architettura). Tuttavia, integrare il supporto per ogni dispositivo hardware nel kernel occuperebbe inutilmente memoria su disco. Per questo motivo i kernel generici utilizzano un file “initrd”, caricato in memoria durante la fase di boot, contenente un file system dentro il quale sono presenti i moduli e tutto il necessario per un corretto avvio del sistema.

Con Knoppix è nato Gnu/Linux “live”

Questa capacità di adattamento permette l’avvio di un sistema GNU/Linux anche da dispositivi removibili. La maggiore difficoltà nella realizzazione di una distribuzione live non è la compilazione di un kernel adatto, ma la creazione di un sistema “init” capace di determinare la partizione/supporto contenente il sistema operativo e le applicazioni. Ovviamente, le difficoltà non finiscono qui: in passato le distribuzioni live non potevano sfruttare software e pacchetti contenuti nelle distro classiche ed era indispensabile compilare tutti i suoi componenti uno per uno. Knoppix, nata nel 2000 (www.knoppix.com) fu la prima distribuzione live per desktop basata su Debian GNU/Linux. Uno dei punti di forza è sicuramente la possibilità di includere una numero considerevole di programmi nello spazio di un CD grazie al sistema “cloop”, che permette di utilizzare una partizione virtuale contenuta in un file compresso per risparmiare spazio. In questo modo fu possibile fornire agli utenti un sistema completo anche di ambiente desktop KDE. La live fu determinante per gli utilizzatori abituali di GNU/Linux che spesso si trovavano fuori casa o per coloro che nutrivano curiosità verso questo sistema operativo, ma non avevano la possibilità di installarlo sul proprio PC. Da buon progetto Open Source, gli ideatori di Knoppix decisero di rendere pubbliche tutte le informazioni tecniche per modificare la distribuzione o iniziare l’avventura di realizzare una nuova live. Purtroppo, per quanto il lavoro fosse semplificato, la difficoltà di realizzazione era pur sempre molto elevata.

Una live per ogni uso

Da sistema di recupero a desktop completo.
Una distribuzione live non ha limiti d’uso. Essa può sostituire il desktop o essere utilizzata come sistema di recupero e ripristino. Un uso meno frequente, ma in espansione, è la realizzazione di CD dimostrativi per applicazioni e siti web, da lasciare ai potenziali clienti come se fosse un biglietto da visita.

Il progetto debian live!

Lo scopo degli sviluppatori di Debian Live è stato quello di creare un sistema in grado di semplificare tutte le operazioni di creazione e personalizzazione di una distribuzione live basata su Debian GNU/ Linux, ovviamente utilizzando i pacchetti contenuti nei repository ufficiali della distro. La piattaforma è composta da numerosi programmi che, grazie ad una procedura passo passo, guidano l’utente in tutte le fasi necessarie alla realizzazione di una distribuzione live: da quella di preparazione fino alla creazione di un’immagine per il supporto di memorizzazione da voi scelto, CD o DVD. Anche se questo software è compilabile con tutte le distribuzioni, è consigliato usare come base di partenza una Debian GNU/Linux, sulla quale, ovviamente, abbiamo i privilegi di amministratore. Il sistema base è necessario da usare sia per l’installazione di Debian Live, sia per tutte le fasi necessarie alla realizzazione della nostra live personalizzata. In particolare, il sistema fa largo uso di “cdebootstrap”, il quale crea un ambiente contenente un sistema operativo Debian GNU/Linux base in una directory a nostra scelta. Per l’installazione dei programmi necessari basterà eseguire il comando:

apt-get install cdebootstrap live-helper

Dopo aver installato i due pacchetti precedenti, creiamo una directory temporanea ed eseguiamo il comando lh_config. A questo punto, nella directory temporanea sarà presente una cartella “config”, nella quale è contenuta la configurazione base. Eseguendo il comando lh_build, invece, il programma provvederà a creare l’ambiente “chroot”, opererà le aggiunte di pacchetti e opzioni contenuti nelle configurazioni di Debian Live, e “impacchetterà” un’immagine per Cd-Rom. Nella directory sono presenti due file, binary.packages e binary.list, i quali contengono una lista di tutti i pacchetti installati e l’elenco dei file personalizzati aggiunti al sistema base. L’immagine ISO appena creata occuperà meno di 150 Mbyte, ma conterrà giusto il minimo essenziale e non disporrà di alcuna interfaccia grafica. Complimenti, avete appena realizzato il vostro primo sistema live! Nell’esempio precedente abbiamo prodotto un’immagine ISO per un CD/DVD. Qualora volessimo modificare il supporto di destinazione per realizzare una pendrive USB con Debian Live, dovremmo spulciare le opzioni contenute nella directory “config”, selezionare una diversa tipologia di immagine da produrre e modificare le ottimizzazioni da operare sul sistema. Fortunatamente il tool di configurazione, tra le sue numerose opzioni, offre la possibilità di scegliere il supporto grazie al parametro “-b”: lh_con- fig -b usb-hdd. L’argomento passato al parametro, permette di creare un’immagine della Debian Live adatta alle penne USB. Le opzioni permesse per questo parametro sono:

  • iso: immagine per CD/DVD. Questa è la selezione predefinita: non bisogna fornire l’opzione “-b” se l’ intenzione è quella di creare un’immagine di questo tipo;
  • usb-hdd: come mostrato nell’esempio, questo valore permette la creazione di un’immagine da porre in un disco rimovibile collegato al computer via USB. Per un avvio diretto della distribuzione è necessario che il BIOS del computer supporti il bootstrap da questo tipo di unità;
  • net: anche in assenza di un dispositivo fisico è possibile attivare una live. In questo caso, è necessario un BIOS che supporti il boot via rete locale e un computer adibito a boot server che utilizzerà l’immagine creata con questa opzione;
  • tar: banalmente si tratta di un archivio compresso tar.gz contenente tutto il sistema prodotto dai programmi di utilità di Debian Live e le personalizzazioni scelte.

Chi conosce Debian GNU/Linux sa che questa storica distribuzione ha una linea di sviluppo con tempi medio/lunghi dovuti alla necessità di operare un forte controllo della qualità prima di accettare un nuovo pacchetto contenuto nei rami experimental e sid in quello di test, il quale a sua volta sarà la base per la nuova stable. Quando decidiamo di creare la distribuzione live, possiamo anche scegliere il ramo di sviluppo di partenza utilizzando il parametro “-d”: lh_confi g -d lenny. Il nome del ramo deve essere “conosciuto” dai programmi di utilità. Fortunatamente, le definizioni delle distribuzioni vengono aggiornate di volta in volta. Le personalizzazioni di base non fi niscono qui. Tra i file distribuiti con le utility, ci sono tutta una serie di template per l’installazione dei pacchetti Debian necessari per installare un desktop manager o un software particolare. Se, ad esempio volessimo includere KDE nella nostra live, è sufficiente aggiungere il seguente parametro: lh_confi g -p kde. Con queste opzioni, anche senza operare personalizzazioni, possiamo ottenere un sistema completo sia per un uso occasionale/dimostrativo, sia per verificare il funzionamento della distribuzione e del software presente nei rami di sviluppo meno stabili.

Il tool di Debian Live per la costruzione dell’immagine all’opera

Debian live per penna Usb

È necessario copiare il sistema manualmente
A differenza delle ISO, l’immagine di Debian Live realizzata per le unità USB deve essere caricata manualmente nel disco sovrascrivendo le partizioni ed eventuali dati in esse contenuti. Il comando da utilizzare è “dd if=file.img of=/ dev/deviceusb”.

Ancora più facile con Live Magic

Grazie a questo tool è possibile scegliere rapidamente il dispositivo e la tipologia di sistema.

Tipo di immagine

La prima schermata del tool ci permetterà di scegliere tra i cinque template più diffusi. L’ultimo è di particolare importanza, in quanto ci consentirà di creare un sistema di ripristino in un batter d’occhio. Questo risulterà utile in caso di avaria hardware/software per recuperare dati da un computer in panne.

 La distribuzione base

La scelta della distro base a volte determina la corretta creazione della distribuzione live. Purtroppo, non sempre gli script sono aggiornati, quindi, in caso di difficoltà nel creare un’immagine con testing o unstable, possiamo sempre scegliere stable, l’unica con la certezza assoluta di riuscita.

 Tipo di supporto

La schermata immediatamente successiva chiede il tipo di supporto per il quale dovrà essere creata l’immagine ISO della Debian Live. Bisogna comunque fare molta attenzione! Per i lettori CD collegati alla porta USB, è necessario comunque scegliere il lettore CD/DVD come destinazione.

L’archivio software

La creazione del chroot contenente le applicazioni e l’ambiente della distribuzione live necessita di numerosi pacchetti Debian, i quali devono essere reperiti dalla rete. In questa schermata dovrete selezionare il mirror più vicino a voi in modo da evitare perdite di tempo causate da velocità di download non eccezionali.

Scelta dell’installer

Tra le altre cose, Debian Live è nato per dare agli utenti la possibilità di personalizzare l’installer Debian qualora il CD ufficiale non riuscisse ad inizializzare l’hardware per l’installazione. Con questa opzione possiamo trasformare la nostra live in un CD per l’installazione di Debian.

Localizzazione

Le distribuzioni live usualmente offrono supporto per tutte le lingue. Anche la nostra live non è da meno. Tuttavia, in questa schermata è possibile selezionare la lingua e il layout predefiniti per non dover essere costretti ogni volta a specificarli manualmente.

Personalizzare i programmi

I template per i diversi rami di sviluppo e le liste dei pacchetti sono contenuti in file di testo messi a disposizione dal progetto Debian Live. La loro semplicità fa sì che tutte le distribuzioni derivate da Debian possano utilizzare questo sistema. A questo punto, è utile dare un’occhiata alle liste dei pacchetti, le quali sono contenute nella directory “/usr/share/live-helper/lists/”. Prendiamo, come esempio, la lista dei package utilizzata per aggiungere KDE alla nostra distribuzione:

## LH: KDE

#include

kde kdm

desktop-base

Nelle ultime due righe sono presenti una serie di nomi di pacchetti da installare. Le prime due righe indicano che deve essere caricata anche la lista “kde-core”. In questo modo è possibile definire le dipendenze grazie alle quali si evita di indicare tutti i pacchetti necessari alla configurazione scelta. Ad esempio, se volessimo realizzare una lista con dentro KDE e K3b ci basterebbe scrivere:

## LH: KDE

#include

k3b wodim dvd-tools

Se i pacchetti da aggiungere non sono tantissimi, possiamo anche evitare di creare una vera e propria lista. L’inclusione di quelli addizionali può essere effettuata tramite il comando “lh_config” o modificando direttamente il file di configurazione “config/chroot”: LH_PACKAGES=”k3b wodim”. Se non siete sicuri di quello che fate, evitate tassativamente di rimuovere eventuali pacchetti già presenti nella chiave di configurazione. Le soluzioni appena proposte sono perfettamente valide qualora i pacchetti Debian che vogliamo includere siano presenti nel repository. Queste strade però non possono essere perseguite se vogliamo installare pacchetti di terze parti o di nostra produzione. Copiando i pacchetti da includere nella directory “config/chroot_local-packages”, il sistema provvederà all’installazione automatica senza dover modificare alcun file di configurazione. L’unico neo di questo sistema è la necessità di nominare il file contenente il pacchetto Debian in forma canonica. Se non sapete cosa vuol dire o non volete perdere tempo a determinare il nome corretto ed effettuare il cambio a mano, potete usare il programma dedicato “dpkg-name”: dpkg-name file.deb. L’invocazione del comando rinominerà il file “file.deb” in “nomepacchetto_ versione_architettura.deb”.

Il filesystem? Compresso!

Indispensabile per ridurre gli ingombri
Come con Knoppix, il file system utilizzato è compresso. In questo modo è possibile installare molti software in spazi ristretti. Inoltre, grazie al file system unionfs, questa tecnica permette all’utente di modificare qualsiasi file del sistema live, anche se esso è contenuto in un dispositivo di sola lettura. Ovviamente, le modifiche verranno eseguite solo in memoria e scompariranno al riavvio.

Non solo pacchetti personalizzati

Ammettiamo di voler realizzare un CD live con la demo di alcuni siti web per dei clienti. Oltre ai pacchetti necessari per installare Apache, MySQL e PHP, sono necessari i file di configurazione dei servizi appena citati, il database e i file delle pagine web. Realizzare un pacchetto Debian personalizzato sarebbe fatica sprecata, in quanto la complessità per la sua realizzazione non è esente da eventuali conflitti causati dai file originali dei pacchetti di installazione del software necessario per il nostro sito. Fortunatamente tutti i file nella directory “config/ chroot_local-includes” vengono inseriti nel chroot della distribuzione subito dopo l’installazione di tutti i pacchetti Debian. In questo modo possiamo non solo aggiungere nuovi file, ma anche sovrascrivere le configurazioni predefinite dei software installati. La posizione dei file deve corrispondere alla gerarchia di quelli presenti nel sistema secondo questo semplice schema di esempio:

chroot_local_includes/etc/apache2 --> /etc/apache2

chroot_local_includes/var/www --> /var/www

Per completare il nostro esempio supponiamo di avere i file pronti in archivi tar.gz e di volerli inserire nella distribuzione live. Per ottenere ciò, basterà entrare nella directory che ci interessa e procedere alla scompattazione dell’archivio:

cd chroot_local_includes/var/www

tar -zxf /path/wwwroot.tar.gz

cd ../lib/mysql

tar -zxf /path/mysqldata.tar.gz

Questo sistema però non procede all’eliminazione di file e non è in grado di eseguire comandi complessi, dato che il suo unico scopo è effettuare la copia di file. Quando è necessario eseguire una procedura in fase di costruzione del chroot, bisogna necessariamente aggiungere uno o più script nella directory “chroot_local_ hooks”.

Il prompt del bootloader di una distribuzione creata con Debian Live

Via Linux Magazine

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...