Aggreghiamo le notizie italiane sull'Open Source
Oggi stavo gironzolando tra siti che nemmeno ricordo e sono capitato qua e ho trovato questa ottima guida di Francesco Brisa che vi riporto nel seguente 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 fatta bene, di facile lettura e interpretazione ma dai contenuti ricchissimi.
Good reading
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
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:
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
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.
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"
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"
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"
Montiamo il file system compresso del cd live di ubuntu originale in una sottocartella, questo è il file system che contiene la directory radice del live cd.
mkdir "$WORK/old" sudo mount -t squashfs -o loop,ro "$WORK/ubuntu-livecd/casper/filesystem.squashfs" "$WORK/old"
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"
Una volta che abbiamo creato il nostro file system, lo montiamo e ne riversiamo dentro il contenuto del filesystem originale del live cd. 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 live cd
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
Procederemo ora alla fase della personalizzazione del cd di ubuntu. La personalizzazione si divide in due parti:
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 live cd 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.
Procediamo ora alla vera e propria personalizzazione del live cd, entreremo con un chroot nel nuovo file system da personalizzare e lo personalizzeremo proprio come se fossimo in una shell all’interno dell’esecuzione del live cd.
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
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
Ora siamo all’interno del nuovo file system, possiamo fare tutte le personalizzazioni che vogliamo tenendo però bene a mente che:
Ricordiamoci prima di dare il comando exit per uscire dal chroot:
rm -fr /tmp/*
apt-get clean
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
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:
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 codec:
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
Per uscire dal chroot diamo il comando:
exit
Smontiamo tutti il file system $WORK/new/proc che non ci serve più
sudo umount "$WORK/new/proc"
Rimuoviamo il nostro resolv.conf dal nuovo file system
sudo rm "$WORK/new/etc/resolv.conf"
L’opera di personalizzazione è terminata, ora non ci resta che creare una nuova iso da condividere con i nostri amici.
Questo file è necessario al live cd. Lanciare quindi il comando:
sudo chroot "$WORK/new" dpkg-query -W --showformat='${Package} ${Version}\n' > "$WORK/ubuntu-livecd/casper/filesystem.manifest"
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"
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"
Il file system personalizzato può ora essere smontato.
cd "$WORK" sudo umount "$WORK/new"
Creiamo il file md5sum.txt che serve al live cd
cd "$WORK/ubuntu-livecd" sudo find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
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.
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
n.b. il secondo argomento punta sempre alla iso iniziale.
fedmor
ringrazia l'esistenza della funzione di ripristino su OpenOffice.org 3
@Replica
andreaolivato
ci ha messo qualche ora a capire che i gspca non si compilavano perchè sono già compresi nel kernel...
@Replica
su610
Provo easypeasy-1.0 La "nuova" distro per l'Eee pc. La trova graficamente orrenda....
@Replica
andreaolivato
fluxbox power
@Replica
andreaolivato
nota che il dns della gallery si è finalmente aggiornato ... amen!
@Replica