CustomUbuntu - Guida

Image Hosted by ImageShack.us

Una ottima guida iniziata da Francesco Brisa, che spiega come costruirsi una versione personalizzata di Ubuntu. Su richiesta dello stesso autore, la pubblico per consentirne una maggiore visualizzazione. Tutto il materiale e' stato preso dal wiki del Gruppo Linux Como (GL-como) e riadattato per la versione "blog".

 

Introduzione

Questa vuole essere una guida su come ottenere un Ubuntu personalizzata spiegando passo dopo passo le operazioni da compiere. Esistono alcuni applicativi grafici come ad esempio UCK che svolgono lo stesso compito, ma questa guida vuole essere anche uno spunto per spiegare il procedimento e gli aspetti chiave di una rimasterizzazione ad-hoc di un livecd di Ubuntu.

 

Prerequisiti di sistema

Per ottenere una Ubuntu personalizzata sono necessari alcuni programmi ed il modulo squashfs presente nel kernel. Per la procedura creeremo una versione personalizzata di una Ubuntu 8.04, partendo dall'immagine originale in inglese. Utilizzeremo come sistema operativo sempre una Ubuntu 8.04 (Versioni precedenti non hanno una versione adeguata del kernel per scompattare lo squashfs della hardy). Prima di iniziare assicuriamoci di avere installato il pacchetto squashfs-tools tramite il comando:

apt-get install squashfs-tools

 

Configurazioni iniziali

Per semplicità, imposteremo delle variabili da ambiente, in modo che i passi della guida possano essere provati tramite semplici copia/incolla. imposteremo 3 variabili di ambiente:

  • WORK (Questa variabile conterrà la cartella su cui andremo a lavorare, preparate quindi una cartella vuota in cui verrà decompressa l'immagine originale del CD di ubuntu.)
  • IMGFILE (Questa variabile conterrà la posizione del file della iso originale del cd di Ubuntu)
  • SIZE_MCF (Questa variabile conterrà la dimensione in MB per creare il file u cui monteremo il file system in cui verranno fatte le personalizzazioni per la nostra nuova distribuzione 'Ubuntu based')

Una impostazione che dovrebbe andar bene a tutti potrebbe essere questa (Cambiate il valore di IMGFILE alla posizione assoluta della iso di ubuntu che avete, potete anche farla puntare diretti al device del vostro cdrom i.e. /dev/cdrom):

export WORK=$HOME/customUbuntu-ita-8.04

export IMGFILE=$HOME/ubuntu-8.04-desktop-i386.iso

export SIZE_MCF=2147

Fase 1: Estrazione del cd originale Questa è la fase in cui il cd originale verrà estratto nella nostra cartella di lavoro. Questa fase deve essere eseguita solo la prima volta, successivamente si potrà saltare questa fase e iniziare direttamente dalla fase 2. Copia del live cd

Prima di tutto dobbiamo montare l'immagine originale del cd di ubuntu che disponiamo, creando preventivamente la sottocartella di destinazione del mount:

export ORI_MOUNTED=$WORK/originalMounted

mkdir -p "$ORI_MOUNTED"

sudo mount -t iso9660 -o loop "$IMGFILE" "$ORI_MOUNTED"

 

Copia del contenuto dal cd originale

Creiamo una sottocartella in cui copieremo tutto il contenuto dal cd originale (I file di avvio, l'immagine compressa e tutti gli altri file presenti sul cd):

cd $WORK

mkdir ubuntu-livecd

cp -a "$ORI_MOUNTED"/. ubuntu-livecd

Rendiamo la cartella e tutte le sottocartelle scrivibili dal nostro utente:

chmod -R u+w ubuntu-livecd

Smontiamo ora l'immagine originale .. non ne abbiamo più bisogno.

sudo umount "$IMGFILE"

 

Liberiamo dello spazio

Opzionalmente (consigliato) potete rimuovere i programmi che vengono messi nel cd originale di ubuntu per poter recuperare spazio prezioso:

sudo rm -rf "$WORK/ubuntu-livecd/programs"

 

Mount del file system compresso

Montiamo il file system compresso del cd live di ubuntu originale in una sottocartella, questo è il file system che contiene la directory radice del livecd:

mkdir "$WORK/old"

sudo mount -t squashfs -o loop,ro "$WORK/ubuntu-livecd/casper/filesystem.squashfs" "$WORK/old"

 

Creazione file system di appoggio

Creiamo ora un nuovo file che ospiterà il file system che personalizzeremo e successivamente comprimeremo. Creeremo un file (ubuntu-fs.ext2) abbastanza grande riempendolo di zeri:

sudo dd if=/dev/zero of="$WORK/ubuntu-fs.ext2" bs=1M count=$SIZE_MCF

Ora creiamo un file system ext2 su di questo file appena creato:

sudo mke2fs -F "$WORK/ubuntu-fs.ext2"

 

Montaggio del nuovo file system

Una volta che abbiamo creato il nostro file system, lo montiamo e ne riversiamo dentro il contenuto del filesystem originale del livecd. Creiamo prima una directory di appoggio per il mount:

mkdir "$WORK/new"

Montiamo quindi:

sudo mount -o loop "$WORK/ubuntu-fs.ext2" "$WORK/new"

Copiamo i dati dal file system originale del livecd:

sudo cp -a "$WORK/old/." "$WORK/new"

Smontiamo il file system originale .. non ci serve più:

sudo umount "$WORK/old"	

Smontiamo anche il nuovo file system:

sudo umount "$WORK/new"	

Abbiamo terminato la fase di preparazione, seguendo i precedenti passi abbiamo estratto tutto il contenuto dal live cd originale e lo abbiamo riversato nella cartella

$WORK/new

. Fase 2: Personalizzazione Procederemo ora alla fase della personalizzazione del cd di Ubuntu. La personalizzazione si divide in due parti:

 

    1. Personalizzazione della lingua di default (A partire dalla schermata di boot del cd live)
    1. Personalizzazione del contenuto del live cd

 

Personalizzazione della lingua di default

Per personalizzare la lingua di default abbiamo bisogno dei pacchetti: gfxboot dpkg-dev gfxboot-theme-ubuntu gfxboot. Installiamoli tramite il comando:

apt-get install gfxboot

apt-get install dpkg-dev

apt-get source gfxboot-theme-ubuntu gfxboot

l'ultimo apt-get non fa altro che scaricare e creare una cartella nella posizione in cui siete con il contenuto del boot del livecd di Ubuntu. Entriamo nella cartella creata:

cd gfxboot-theme-ubuntu*/

compiliamo impostando la variabile del linguaggio di default (ad esempio per l'italiano -> it)

make DEFAULT_LANG=it

se tutto è andato a buon fine possiamo copiare il contenuto della cartella boot nella cartella

$WORK/ubuntu-livecd/isolinux/ 

con il comando:

sudo cp -af boot/* $WORK/ubuntu-livecd/isolinux/

Questa operazione di impostazione della lingua di default non necessita di essere ripetuta per successive personalizzazioni.

 

Personalizzazione del contenuto del livecd

Procediamo ora alla vera e propria personalizzazione del live cd, entreremo con un chroot nel nuovo file system come se fossimo in una shell all'interno dell'esecuzione del live cd.

Mount del nuovo file system

Controlliamo prima di tutto che il nuovo file system sia montato sotto

$WORK/new

, se non lo è lo montiamo:

if [ "X$(mount | grep ubuntu-fs.ext2)" = "X" ] ; then sudo mount -o loop "$WORK/ubuntu-fs.ext2" "$WORK/new"; fi

 

Chroot del nuovo file system

Entriamo all'interno del nuovo file system come root, montando prima /proc per poter navigare nella rete anche una volta nel chroot e copiando il nostro

/etc/resolv.conf

per poter avere i DNS funzionanti:

sudo cp /etc/resolv.conf "$WORK/new/etc/"

sudo mount -t proc -o bind /proc "$WORK/new/proc"

sudo chroot "$WORK/new" /bin/bash

 

Modifiche

Ora siamo all'interno del nuovo file system, possiamo fare tutte le modifiche che vogliamo tenendo però bene a mente che:

NB: Se vogliamo creare un CD, dobbiamo fare in modo di non aggiungere troppi dati al nuovo file system, altrimenti, dopo la sua successiva compressione, la iso del cd risultante sarà troppo voluminosa per essere masterizzata su un supporto cd da 80 minuti. Ricordiamoci prima di dare il comando exit per uscire dal chroot:

NB: ripulire la cartella /tmp (Ricordateci che dobbiamo essere sempre all'interno del chroot) con:

rm -fr /tmp/*

NB: ripulire la cache di apt con:

 apt-get clean

 

Rimozione lingue non necessarie

Possiamo rimuovere tutte le lingue che non ci interessano, tramite il comando:

apt-get remove language-pack-{ar,bn,de,es,fr,hi,pt,ru,xh} language-pack-gnome-{ar,bn,de,es,fr,hi,pt,ru,xh}

Aggiungiamo quindi tutte le traduzioni alla lingua italiana:

apt-get update

apt-get install language-pack-gnome-it language-pack-gnome-it-base language-pack-it language-pack-it-base \

aspell-it gimp-help-it gimp-help-common witalian myspell-it \

language-support-it thunderbird-locale-it \

openoffice.org-thesaurus-it openoffice.org-help-it

 

Installazione codec video e audio mp3

E' possibile inoltre installare tutti i codec video necessari alla visione di un file divx o all'ascolto di un file mp3 per esempio, ricordiamoci che questi codec non fanno parte del software libero e la loro inclusione nel cd nonché la loro distribuzione è di dubbia legalità. Per poter installare i codec è necessario prima aggiungere al lista delle fonti di Ubuntu i seguente file repository:

deb http://archive.ubuntu.com/ubuntu hardy universe
deb-src http://archive.ubuntu.com/ubuntu hardy universe 

con il comando:

echo "deb http://archive.ubuntu.com/ubuntu hardy universe" >> /etc/apt/sources.list

echo "deb-src http://archive.ubuntu.com/ubuntu hardy universe" >> /etc/apt/sources.list

Installiamo quindi i codecs:

apt-get install gstreamer0.10-ffmpeg gstreamer0.10-plugins-ugly \

liba52-0.7.4 libavcodec1d libavformat1d libavutil1d libdc1394-13 libdvdread3 \

libgsm1 libid3tag0 libmad0 libmpeg2-4 libpostproc1d libsidplay1

 

Ritorno dal chroot

Per uscire dal chroot diamo il comando:

exit

 

Post pulizia

Smontiamo tutti il file system

$WORK/new/proc

.. non ci servono più:

sudo umount "$WORK/new/proc"

Rimuoviamo il nostro

resolv.conf 

dal nuovo file system

sudo rm "$WORK/new/etc/resolv.conf"

Fase 3: Masterizzazione L'opera di personalizzazione è terminata, ora non ci resta che creare una nuova iso da condividere con i nostri amici.

 

Creazione del file filesystem.manifest

Questo file è necessario al live cd. Lanciare quindi il comando (tutto sulla stessa riga):

sudo chroot "$WORK/new" dpkg-query -W --showformat='${Package}
${Version}\n' > "$WORK/ubuntu-livecd/casper/filesystem.manifest"

Ottimizziamo lo spazio vuoto

Riempiamo di zeri il nostro file system all'interno del suo spazio vuoto ,in questo modo l'immagine compressa sarà più piccola.

sudo dd if=/dev/zero of="$WORK/new/dummyfile" > /dev/null

sudo rm "$WORK/new/dummyfile"

 

Comprimiamo il nuovo file system

Ora ricreiamo un nuovo file compresso con i dati del nostro file system personalizzato:

sudo rm "$WORK/ubuntu-livecd/casper/filesystem.squashfs"

cd "$WORK/new"

sudo mksquashfs . "$WORK/ubuntu-livecd/casper/filesystem.squashfs"

 

Smontiamo il nuovo file system

Il file system personalizzato può ora essere smontato:

cd "$WORK"

sudo umount "$WORK/new"

 

Creazione dell'md5sum

Creiamo il file

md5sum.txt

che serve al livecd:

cd "$WORK/ubuntu-livecd"

sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt

 

Creazione della iso

Creiamo a questo punto la nuova ISO:

cd $WORK

sudo mkisofs \

-o ubuntu-new.iso \

-b isolinux/isolinux.bin \

-c isolinux/boot.cat \

-no-emul-boot \

-boot-load-size 4 \

-boot-info-table \

-r \

-V "Custom Ubuntu Live CD" \

-cache-inodes  \

-J \

-l \

ubuntu-livecd

Dovremmo ora ritrovarci con il file ubuntu-new.iso nella cartella

$WORK

da noi decisa all'inizio.

 

Semi automatizzazione

Esiste uno script bash per poter eseguire il lavoro in 3 semplici passi (Le 3 fasi precedenti). Lo script deve essere lanciato così: Per la prima fase:

sh customUbuntu1.sh /opt/customUbuntu-ita /opt/ubuntu-8.04-desktop-i386.iso 1

..dove il primo argomento indica la cartella in cui verranno eseguiti tutti i processi e verrà creata l'immagine (Se la cartella non esiste qusta verrà creta), il secondo argomento indica il file iso da usare come base per la personalizzazione, il terzo argomento (1) indica la fase da svolgere. In poche parole, eseguite prima lo script per preparare il tutto con:

sh customUbuntu1.sh /opt/customUbuntu-ita /opt/ubuntu-8.04-desktop-i386.iso 1

Poi ogni volta che volete ri-personalizzare la vostra immagine:

sh customUbuntu1.sh /opt/customUbuntu-ita /opt/ubuntu-8.04-desktop-i386.iso 2

sh customUbuntu1.sh /opt/customUbuntu-ita /opt/ubuntu-8.04-desktop-i386.iso 3

NB: il secondo argomento punta sempre alla iso iniziale.

 

 

Ma che

Ma che S-P-E-T-T-A-C-O-L-O!!!!

GRAZIE di cuore a chi ha pensato a tutto questo e a Divi che lo ha reso un po' più visibile!!!

Un saluto a tutti...
masand

un grazie anche a

un grazie anche a Francesco..anche io sono ansioso di provare questa guida
;)

Proprio quello di cui avevo

Proprio quello di cui avevo bisogno! Grazie Divi :D

@ Divilinux Veramente una

@ Divilinux
Veramente una bella idea. Volevo scriverne un articolo anche io, ma ci metto solo il link qui o la volontà dell'autore (Francesco Brisa) è proprio quella di divulgarla il più possibile? Dimmi tu. Comunque non vedo l'ora di provarla!

@kaiserxol Fai come più ti

@kaiserxol
Fai come più ti aggrada..basta citare l'autore originale
;)

[...] di Ubuntu.

[...] di Ubuntu. La’rticolo originale lo trovate sul Blog di Divilinux a questo indirizzo http://divilinux.netsons.org/index.php/archives/762#comments e qui sotto vi ripropongo la guida per intero vista la volontà dell’autore di [...]

[...] post del mio blog. (in

[...] post del mio blog. (in seguito ho scoperto che la guida era stata citata anche dall’amico Divilinux, a cui ho fregato l’immagine del post. Scusa Divi, mi attizzava troppo :)) E’ davvero [...]

Ciao Divi, complimenti per

Ciao Divi, complimenti per il blog, volevo chiederti visto che oggi è ufficialmente uscito firefox 3.0 come dovrei integrarlo al posto della beta 5 che trovo di default??

Sai mi fa proprio antipatia una versione beta di un programma su una distro LTS.

Ciao jon

@jon e' firefox stesso che

@jon
e' firefox stesso che si autoaggiorna..quindi "random" quando aprirai il browser partira' il processo di aggiornamento.

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Indirizzi web o e-mail vengono trasformati in link automaticamente
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Linee e paragrafi vanno a capo automaticamente.

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Questa domanda serve per verificare che tu sia un visitatore umano (non un computer) e per prevenire lo spam
2 + 3 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.