<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>de.straba.us &#187; livecd</title>
	<atom:link href="http://de.straba.us/tag/livecd/feed/" rel="self" type="application/rss+xml" />
	<link>http://de.straba.us</link>
	<description>destrabauz thoughts</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:55:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>HOWTO: creare un ubuntu live cd</title>
		<link>http://de.straba.us/2008/07/16/howto-creare-un-ubuntu-live-cd/</link>
		<comments>http://de.straba.us/2008/07/16/howto-creare-un-ubuntu-live-cd/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 10:46:05 +0000</pubDate>
		<dc:creator>napo</dc:creator>
				<category><![CDATA[software libero]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[livecd]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://de.straba.us/?p=3</guid>
		<description><![CDATA[La creazione di un live cd personalizzato derivato da una distribuzione debian-based (es ubuntu) richiede 4 passaggi: creazione ambiente di lavoro personalizzazione dei contenuti software del livecd creazione dell&#8217;ambiente per il cd di boot creazione del file immagine, test e masterizzazione del livecd Il presente HOWTO include anche l&#8217;uso di ubiquity &#8211; l&#8217;installer grafico di [...]]]></description>
			<content:encoded><![CDATA[<p>La creazione di un live cd personalizzato derivato da una distribuzione debian-based (es ubuntu) richiede 4 passaggi:</p>
<ol>
<li><a href="#1">creazione ambiente di lavoro</a></li>
<li><a href="#2">personalizzazione dei contenuti software del livecd</a></li>
<li><a href="#3">creazione dell&#8217;ambiente per il cd di boot</a></li>
<li><a href="#4">creazione del file immagine, test e masterizzazione del livecd</a></li>
</ol>
<p>Il presente HOWTO include anche l&#8217;uso di <em>ubiquity</em> &#8211; l&#8217;installer grafico di ubuntu.<br />
Il risultato e&#8217; che, il livecd creato, puo&#8217; essere installato su disco rigido con tutte le personalizzazioni fatte.</p>
<p><a name="0"></p>
<h2>Prima di cominciare</h2>
<p></a><br />
Assicurarsi che</p>
<ul>
<li> si stia utilizzando un utente in grado di eseguire il comando <em>sudo</em> o comunque con i permessi di amministrazione</li>
<li> il computer su cui si opera abbia un collegamento internet</li>
</ul>
<p>Nota a margine: negli esempi riportati si fa la directory <em>work</em> nella home utente</p>
<p><code>mkdir -p $HOME/work</code><br />
<a name="1"></p>
<h2>Passo 1</h2>
<p></a></p>
<h3>creazione ambiente di lavoro</h3>
<p>debian mette a disposizione il tool <em>debootstrap </em>con il quale e&#8217; possibile creare, in una directory, una configurazione di una distribuzione debian di base.<br />
Nel nostro esempio la directory ha nome <em>chroot</em> (i motivi saranno chiari al passo successivo).</p>
<p>Le operazioni da eseguire saranno pertanto:</p>
<ul>
<li> installazione di debootstrap</li>
<li> creazione dell&#8217;area di lavoro</li>
<li> esecuzione di debootstrap selezionado:
<ul>
<li>il tipo di architettura da utilizzare (<em>i386</em> nel nostro caso)</li>
<li>la release ubuntu di riferimento (<em>hardy</em>)</li>
<li>la directory di destinazione (<em>chroot</em>)</li>
</ul>
</li>
</ul>
<p>tradotto in comandi:</p>
<p><code> apt-get install debootstrap<br />
mkdir -p $HOME/work/chroot<br />
cd $HOME/work/chroot<br />
debootstrap --arch i386 hardy chroot </code></p>
<p><a name="2"></p>
<h2>Passo 2</h2>
<p></a></p>
<h3>personalizzazione dei contenuti software del livecd</h3>
<p>la directory  $HOME/work/chroot conterra&#8217; tutto cio&#8217; che vogliamo sia presente sul nostro livecd.<br />
Quanto prodotto in precedenza da debootstrap e&#8217; un ambiente minimale, occorre pertanto procedere ad una personalizzazione.<br />
Il metodo suggerito e&#8217; quello di fare uso del comando <em>chroot</em>.</p>
<p>Con questo comando si trasforma una qualsiasi directory nella root del disco (<em>chroot</em> = <em>change root</em>), creando una sorta di &#8220;prigione&#8221; entro la quale tutti i processi all&#8217;esterno sono ignorati.Prima di effettuare il comando occorre pero&#8217; copiare alcuni file di configurazione necessari. Nello specifico la configurazione del dns (<em>/etc/resolv.conf</em>) e delle risorse apt (<em>/etc/apt/sources.list</em>).</p>
<p><code><br />
sudo cp /etc/resolv.conf chroot/etc/resolv.conf<br />
sudo cp /etc/apt/sources.list chroot/etc/apt/sources.list</code></p>
<p>a questo punto e&#8217; possibile entrare in chroot nell&#8217;ambiente creato<br />
<code>sudo chroot chroot</code><br />
dopo questa operazione il prompt comandi cambia mostrando il simbolo # e il sistema dara&#8217; il messaggio di errore che non riesce ad individuare la home dell&#8217;utente (non e&#8217; un problema ai fini del resto delle operazioni).<br />
L&#8217;ambiente in chroot pero&#8217; non e&#8217; ancora adeguato per essere utilizzato.<br />
Si deve far conoscere al nuovo ambiente le informazioni che il kernel linux da al suo avvio nelle directory <em>proc</em> e <em>sys</em> e i device a quali collegarsi.<br />
Il tutto lo si ottiene con i seguenti comandi<br />
<code>mount /proc<br />
mount /sys<br />
mount -t devpts none /dev/pts</code></p>
<p>A questo punto possiamo procedere all&#8217;installazione di tutto il software che vogliamo essere presente sul nostro livecd.<br />
Aggiorniamo le risorse apt, scegliamo la lingua e procediamo con l&#8217;installazione.<br />
I pacchetti strettamente necessari per l&#8217;esecuzione del live-cd sono:</p>
<ul>
<li> ubuntu-standard</li>
<li> casper</li>
<li> discover1</li>
<li> laptop-detect</li>
<li> os-prober</li>
<li> ubiquity</li>
<li> linux-generic</li>
</ul>
<p><code>apt-get update<br />
locale-gen it_IT.UTF-8<br />
apt-get install ubuntu-standard casper discover1 laptop-detect os-prober linux-generic  ubiquity</code></p>
<p>da qui in poi aggiungere qualsiasi pacchetto si voglia avere nel cd usando <em>apt-get</em><br />
es:<br />
<code>apt-get install vlc</code></p>
<p>Finita ogni installazione si deve ripulire l&#8217;ambiente creato e uscire (<em>exit</em>)<br />
<code>apt-get clean<br />
rm -rf /tmp/*<br />
rm /etc/resolv.conf<br />
umount -l -f /proc<br />
umount -l -f /sys<br />
umount /dev/pts<br />
exit</code></p>
<p>Tutto il contenuto della directory di chroot va archiviata in un file immagine compresso con squashfs (<code>apt-get install squashfs-tools</code>) nella directory $HOME/image/casper/<br />
<code><br />
mkdir -p $HOME/image/casper/<br />
cd $HOME/work/<br />
sudo mksquashfs chroot image/casper/filesystem.squashfs<br />
</code><br />
Il file creato verra&#8217; utilizzato dal tool <em>casper</em> per eseguire il livecd</p>
<p><a name="3"></p>
<h2>Passo 3</h2>
<p></a></p>
<h3>creazione dell&#8217;ambiente per il cd di boot</h3>
<p>in questo passaggio occorre preparare l&#8217;ambiente necessario  per il cd di avvio attraverso il tool <em>syslinux</em>.<br />
<code>mkdir image image/casper image/isolinux image/install</code><br />
(se non presente occorre installare syslinux e sbm <code>apt-get install syslinux sbm</code>)</p>
<p>nelle directory create copiare il kernel d&#8217;avvio<br />
<code><br />
cp chroot/boot/vmlinuz-2.6.**-**-generic image/casper/vmlinuz<br />
cp chroot/boot/initrd.img-2.6.**-**-generic image/casper/initrd.gz<br />
</code></p>
<p>e i tool di syslinux<br />
<code><br />
cp /usr/lib/syslinux/isolinux.bin image/isolinux/<br />
cp /boot/memtest86+.bin image/install/memtest<br />
cp /boot/sbm.img image/install/<br />
</code></p>
<p>E&#8217; possibile personalizzare messaggistica e immagine di boot modificato i file isolinux.txt e splash.rle<br />
Il primo va copiato in image/isolinux qui un esempio</p>
<p><code>cat > images/isolinux/isolinux.txt << EOF<br />
Live CD personalizzato</p>
<p>Digitare<br />
- "live" (o battere invio) per avviare il cd.<br />
- "check" per verificare che il cd non contenga errori<br />
- "memtest" per eseguire memtest86+ per testare la ram<br />
EOF</code></p>
<p>La procedura per personalizzare il file<em> splash.rle </em>richiede qualche passaggio in piu'.<br />
La partenza avviene da un file <em>bmp</em> con massimo 15 colori indicizzati di larghezza 480 pixel<br />
che va convertito in <em>ppm</em> (<em>apt-get install netpbm</em>) e successivamente in <em>rle</em><br />
<code><br />
cp splash.bmp image/isolinux<br />
bmptoppm splash.bmp > splash.ppm<br />
ppmtolss16 '#ffffff=7' < splash.ppm > splash.rle<br />
rm splash.bmp<br />
rm splash.ppm<br />
</code></p>
<p>Per fare in modo che il file ottenuto appaia al boot occorre modificare la prima riga del file isolinux.txt precedentemente creato aggiungendo l'istruzione <em>splash.rle</em></p>
<p>Le opzioni possibili al boot sono definite nel file <em>isolinux.cfg </em> (per maggiori dettagli leggere la documentazione in <em>/usr/share/doc/syslinux/syslinux.doc</em>)<br />
Il seguente e' un esempio che ricalca le opzioni descritte nel file isolinux.txt descritto sopra</p>
<p><code>cat > isolinux.cfg<< EOF<br />
DEFAULT live<br />
LABEL live<br />
  menu label ^Avvio live cd<br />
  kernel /casper/vmlinuz<br />
  append  boot=casper initrd=/casper/initrd.gz quiet splash --<br />
LABEL check<br />
  menu label ^Controllo difetti sul cd<br />
  kernel /casper/vmlinuz<br />
  append  boot=casper integrity-check initrd=/casper/initrd.gz quiet splash --<br />
LABEL memtest<br />
  menu label ^Test memoria<br />
  kernel /install/memtest<br />
  append -<br />
LABEL hd<br />
  menu label ^Boot dal primo disco rigido<br />
  localboot 0x80<br />
  append -<br />
DISPLAY isolinux.txt<br />
TIMEOUT 300<br />
PROMPT 1<br />
EOF</code></p>
<p>Analizzando rapidamente il file:<br />
ogni blocco definito dalla parola <em>LABEL</em> rappresenta una possibile stringa con cui avviare il sistema operativo, ad ogni relativa voce <em>append</em> si definisce quale comportamento avere.<br />
Il parametro <em>boot=casper</em> e' fondamentale per l'avvio del nostro livecd.<br />
Con <em>DEFAULT</em> si stabilisce quale e' l'avvio predefinito qualora l'utente batta invio o attenda la quantita' di millesecondi espressa dalla variabile <em>TIMEOUT</em>.<br />
DISPLAY informa quale file visualizzare come messaggistica verso l'utente.</p>
<p>Con i passaggi ottenuti fino a qui il cd ora e' in grado di avviarsi e di eseguire la parte live creata nei passaggi precedenti.<br />
Occorre pero' aggiungere le informazioni.<br />
Prima fra questa sono i file di manifest che specificano quali sono i pacchetti installati nel livecd e quali invece quelli che andranno installati sul sistema qualora l'utente decida di installare il contenuto del livecd sul proprio computer attraverso ubiquity.<br />
I due file in questione sono <em>filesystem.manifest</em> e <em>filesystem.manifest-desktop</em>.<br />
Attraverso la serie di comandi qui sotto e' possibile creare questa lista in maniera automatica.<br />
La lista dei pacchetti da escludere qualora si voglia fare una installazione su disco rigido e' definita nella variabile REMOVE.<br />
Qualsiasi nome di pacchetto incluso verra' escluso durante l'installazione.<br />
<code><br />
sudo chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee image/casper/filesystem.manifest<br />
sudo cp -v image/casper/filesystem.manifest{,-desktop}<br />
REMOVE='ubiquity casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'<br />
for i in $REMOVE<br />
do<br />
        sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop<br />
done</code><br />
Altra informazione da aggiungere e' quella della definizione del tipo di cd.<br />
Questo avviene creando il file <em>README.diskdefines</em> nella directory <em>image/</em><br />
Questo un esempio<br />
<code>cat > image/README.diskdefines << EOF<br />
#define DISKNAME  My LiveCD<br />
#define TYPE  binary<br />
#define TYPEbinary  1<br />
#define ARCH  i386<br />
#define ARCHi386  1<br />
#define DISKNUM  1<br />
#define DISKNUM1  1<br />
#define TOTALNUM  0<br />
#define TOTALNUM0  1<br />
EOF</code><br />
Infine, va aggiunto il file md5 necessario per le operazioni di checking dell'integrita' del dato.<br />
<code>sudo -s<br />
(cd image &#038;&#038; find . -type f -print0 | xargs -0 md5sum > md5sum.txt)<br />
exit</code></p>
<p><a name="4"></p>
<h2>Passo 4</h2>
<p></a></p>
<h3>creazione del file immagine, test e masterizzazione del livecd</h3>
<p>Finita le operazioni di configurazione descritti nei passi precedenti si passa alla creazione del file immagine attraverso il tool mkisofs.<br />
<code>IMAGE_NAME="LiveCD"<br />
OUTFILE="livecd.iso"<br />
cd image<br />
sudo mkisofs -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../$OUTFILE .</code></p>
<p>Il file iso creato puo' essere provato con qemu o virtualbox o vmware.<br />
Se il tutto funziona regolarmente allora si puo' procedere alla masterizzazione con <em>cdrecord</em></p>
<p><code>cdrecord -eject livecd.iso</code></p>
<p><strong>Questo documento si rifa' alla pagina:</strong><br />
<a href="https://help.ubuntu.com/community/LiveCDCustomizationFromScratch">https://help.ubuntu.com/community/LiveCDCustomizationFromScratch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://de.straba.us/2008/07/16/howto-creare-un-ubuntu-live-cd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

