Il progetto ISI ha adottato da sempre per le sue installazioni, una ripacchettizzazione di Debian stabile in versione live denominata Argo.
Una Argo si differenzia da una Debian stabile sostanzialmente nelle seguenti cose:
sono già presenti sul cd e pronti a funzionare out the box tutti i pacchetti necessari all'infrastruttura di una rete ISI (isi-argo-livecd)
la preconfigurazione è fatta per una rete scolastica e può essere personalizzata molto rapidamente
l'installazione su hd è grandemente facilitata da uno script, da noi sviluppato, che consente anche la facilissima definizione di sistemi raid-software
è disponibile un meccanismo per salvare la configurazione in modo tale che ripartendo da cd quella configurazione possa essere letta e utilizzata. In questo modo è, ad esempio, possibile preparare una macchina firewall capace di girare interamente da cd con configurazione su supporto esterno
Fin'ora la tecnologia adottata per la produzione di una ArgoLive è stata basata sugli script Linux-live.
Nel seguito si mostrerà come utilizzare anche il progetto DebianLive per preparare un cd live tipo Argo-isi.
Il progetto DebianLive mette a disposizione una serie di scripts, i live-helper in grado di automatizzare quasi completamente la produzione della live sulla base di una struttura che rende facile la personalizzazione della live stessa.
L'ambiente di sviluppo
Per utilizzare i live-helper occorre disporre di un ambiente Debian basato almeno su etch.
Molto meglio però, evitando la necessità di ricorrere ai backports, utilizzare un ambiente su base Debian testing. Ad esempio andrà benissimo una macchina Ubuntu7.10 (Gutsy Gibbon).
Installare i live_helper
L'ambiente live-helper si basa sui seguenti pacchetti:
debootstrap, cdebootstrap: per scaricare dai repository debian della versione scelta tutto quello che serve a creare un ambiente debian di base
live-helper: la collezione di scripts che producono la live in formati adatti ad essere masterizzati su cd o installati su stick usb, nonchè a preparare una installazione di rete.
casper e live-initramfs: per la produzione/gestione dell'initrd della live ( questi paccheti non devono essere installati perchè verranno scaricati direttamente e installati nell'ambiente chroot in cui i live-helper assembleranno la distribuzione). Per inciso ricordo che per i kernel 2.6 la generazione dell'initrd è affidato agli script del pacchetto initramfs-tools
squashfs/unionfs/aufs per la preparazione del file sistem compresso del boot cd (queste dipendenze sono gestite automaticamente dai live-helper)
Una volta installato, la creazione delle live è indipendente dall'ambiente di sviluppo (nel nostro caso Ubuntu 7.10).
Benché il pacchetto live-helper sia presente nei repository Ubuntu, per la costruzione di distro debian standard non funziona e deve essere sostituito da quello che si trova qui. Data la rapida evoluzione del pacchetto live-helper si raccomanda di utilizzare sempre la sua versione più recente.
Scaricate quindi il pacchetto live-helperXXX.
Installate poi i seguenti pacchetti nel modo mostrato:
I live-helper così installati sono predisposti per produrre una debian testing (lenny) live. A questo scopo occorre creare una cartella destinata a contenere la distribuzione che verrà assemblata, potrà avere un nome qualsiasi ed essere collocata ovunque.
In ossequio alla documentazione del progetto DebianLive e ai path di default dei live-helper, nel seguito la cartella in cui verranno assemblate le build, sarà /srv/xxx (xxx sarà sostituito dal nome della distro in preparazione). Il tutto si riduce ai seguenti pochissimi comandi:
su
mkdir -p /srv/DebianLive
cd /srv/DebianLive (tutti i comandi lh* DEVONO essere dati stando nella cartella contenente la distro)
lh_config (crea la fondamentale cartella config)
lh_build
Se tutto va a buon fine si sarà ottenuta la iso in ./binary.iso, se nessuna modifica al contenuto di ./config è stato fatto, si otterrà una iso lenny-live standard.
Costruire una live debian-etch
Per la costruzione di una etch-live procedere così:
mkdir -p /srv/etch-live
cd /srv/etch-live
lh_config -d etch
modificare nel file config/chroot la seguente variabile:
# $LH_LINUX_FLAVOURS: set kernel flavour to use
# (Default: autodetected)
LH_LINUX_FLAVOURS="686"
modificare nel file ./config/binary la seguente variabile:
# $LH_NET_ROOT_PATH: set netboot server directory
# (Default: /srv/etch-live)
LH_NET_ROOT_PATH="/srv/etch-live"
questa modifica può essere fatta anche dando il comando
# lh_config --net-root-path /srv/etch-live per i moltissimi altri comandi di configurazione vedi man lh_config
Dettagli sul funzionamento dei live-helper
La directory config
Tutta la configurazione necessaria a produrre la iso voluta è gestita dal contenuto della cartella config henerata dallo script lh_config, cioè dal primo comando live-helper.
ATTENZIONE: i file in neretto sono modifiche alla configurazione e non vengono creati da lh_config ma sono stati aggiunti
apri tutto | chiudi tutto
Mappa degli scripts lh_*
A questo proposito il documento di riferimento è LiveHelperTree
Qui sotto gli script sono elencati in ordine di apparizione (non sono mostrati i parametri con cui vengono richiamati, nè se sono richiamati più volte). Per il dettaglio delle operazioni compiute si rimanda la codice dello script. L'elenco mostrato è comunque utile per capire quali operazioni vengono effettuate e quando.
gli script in neretto sono META-HELPER cioè script che possono essere chiamati individualmente ma che ne richiamano altri.
Ogni script di basso livello può essere usato individualmente ma deve essere richiamaro ESCLUSIVAMENTE nella cartella in cui si sta costruendo la live.
apri tutto | chiudi tutto
Costruire una Argo su etch
La costruzione di una Argo-etch comporta l'inserimento dei pacchetti che su una live minima non ci sono.
Aggiungere fonti apt
Creare i file config/chroot_sources/argo.bootstrap e config/chroot_sources/argo.binary con il seguente contenuto
in generale si possono mettere tutte le fonti desiderate (necessarie per la sezione bootstrap e/o binary), il nome dei file (NON l'estensione) è arbitrario.
Aggiungere pacchetti
Si possono aggiungere sia pacchetti recuperabili da una delle fonti dichiarate oppure pacchetti di cui si possiede il deb (nel caso abbiano dipendenze non soddisfatte dai repos occorrono anche i relativi deb)
pacchetti di cui si ha il deb : copiare il deb in config/chroot_local-packages
pacchetti presenti nelle fonti apt : creare un file di testo con i pacchetti necessari, uno per riga e copiarlo in config/chroot_local-packageslist
al momento i pacchetti in config/chroot_local-packages sono:
file-rc_0.8.10_all.deb
nel caso di una argo-etch (attuale) il file è il seguente:
* argodiff: pacchetti presenti in argo-etch e NON presenti nella debian-live standard
ATTENZIONE: la lista argodiff NON DEVE contenere il pacchetto file-rc, se c'è eliminate la riga o commentatela, altrimenti la creazione della iso non andrà a buon fine. Per installare file-rc procedere come sotto descritto
scaricate il pacchetto file-rc dal repository Debian della versione che interessa
copiate il file file-rc-xxxx.deb nella cartella .config/chroot_local-packages
copiate in ./config/chroot_local-hooks lo script filerc seguente
#! /bin/bash
aptitude install file-rc
Costruire una Argo-Isi (su etch)
Argo-isi si differenzia da Argo in quanto contiene anche i pacchetti specifici del progetto isi, vale a dire tutta la gestione degli utenti via ldap e la configurazione di samba+ldap come PDC windows. Il tutto funziona anche sulla live compresa l'aggiunta di utemti e/o il join di macchine windows.
Per ottenere questo effetto occorre:
cambiare la lista dei pacchetti in ./config/chroot_local-packageslist copiando il file allegato argoisidiff ( attenzione NON aggiungete slapd per questa via)
assemblare la distribuzione con lh_buid
entrare in chroot nella dir chroot (chroot chroot)
aggiungere alle fonti apt (se non lo si è già fatto in fase di configurazione) deb http://lan.saraceno.org/isirep/debian etch main isi e commentare la fonte apt.reteisi.org (almeno fin quando non saranno disponibili i pacchetti correttamente aggiornati; in via di definizione)
apt-get update
dpkg-reconfigure locales (sembrerebbe importante perchè interferisce con ldap, il condizionale dipende dal fatto che la cosa non mi è chiara)
apt-get install isi-ldap3-def (confermare i default: isi.lan, ISI-ORG, ISI-DOMAIN, ISI-PDC, password: reteisi, NON migrare gli utenti, riconfigurare samba)
Al boot della live editare la riga del menù di grub (kernel) o la riga isolinux (boot), aggiungendo all_generic_ide . Questo forzerà l'uso dei driver ide generici sui dischi IDE.
Personalizzazione 2: aggiunta della lettura al boot della configurazione salvata su stick usb
Il prerequisito è che si abbia una configurazione salvata via save2-disk oppure via targz della cartella /etc e di qualunque altra cosa in un file di nome argoconf_. Questo file di configurazione è stato scritto su uno stick usb.
copiarlo nella cartella ./initrd/scripts/init-bottom
L'installazione su hd - clone
L'installazione su hd di un sistema live-helper dovrebbe essere affidata a debian-installer, previsto come opzione di configurazione normalmente disabilitata.
Per quanto ci riguarda utilizzeremo invece la procedura propria del progetto argo: clone. clone è lo script contenuto nel pacchetto clone che, sulla base di un semplice file di configurazione trasferisce su hard disk (configurando anche un sistema raid) il sistema live mantenendone la configurazione. Il tutto in meno di 5 minuti. File di configurazione di clone si trovano nella cartella /etc/clone/examples, dopo, naryralmente, l'installazione del pacchetto
In pratica:
inserite nella lista dei pacchetti che personalizzano la live anche il pacchetto clone, recuperabile dalla fonte apt deb http://apt.argolinux.org etch main
generate e lanciate la live, entrate come utente root
#cd /etc/clone
#cp examples/fire . (qui si utilizza il file di conf. fire)
modificare il file di configurazione fire secondo le proprie necessità