Project

General

Profile

TracNav(TOC)

Come rimasterizzare GeoMorphix?

Tratteremo la rimasterizzazione di GeoMorphix, a partire sia da una versione base di Morphix, attraverso la creazione di un nuovo mainmod, che per quanto riguarda le personalizzazioni relative all'installazione e avvio del sistema.

Estrazione dei dati

In generale il primo passo per la rimasterizzazione è quello di procurarsi una copia del CD originale, da cui partire per le modifiche, per questo inizieremo scegliendo una directory di lavoro (nel nostro caso /home/morphing) e copieremo lì tutti i dati con:

mount /cdrom
cp -a /cdrom newmorph

alternativamente, se si dispone dell'immagine ISO del CD si può montare in loopback quest'ultima e recuperare i dati da lì, con le istruzioni alternative:

mount -o loop [[MorphixCombined]]-LightGUI-0.5-pre4.iso /cdrom
cp -a /cdrom newmorph

e a questo punto avremo in newmorph tutti i file che ci servono per iniziare con la nostra rimasterizzazione.

In seguito illustreremo i vari passi necessari alle varie personalizzazioni possibili; ciascuno di questi sarà descritto facendo riferimento alla nostra directory di lavoro, che resta /home/morphing.

Creare un nuovo modulo principale

Il primo passo di una rimasterizzazione è quello che prevede la personalizzazione del contenuto del sistema, questo nel caso di Morphix è completamente costituito dal modulo principale (quello che viene chiamato mainmod), che si trova nella sottodirectory omonima.

Se abbiamo estratto i dati da un CD potremo usere come base quello già presente; il modulo altro non è che una immagine di un filesystem opportunamente compressa; il procedimento per estrarne il contenuto è il seguente:

cd newmorph/mainmod
extract_compressed_fs light.mod > /home/morphing/orginal.iso

dato che nel nostro caso il modulo di Morphix Light GUI è light.mod.

Questo estrae l'immagine ISO compressa e la salva nella nostra directory di lavoro; a questo punto sarà possibile accedere ai contenuti e copiarli su una opportuna directory con i seguenti passi:

cd /home/morphing
mkdir temp
mount -o loop orginal.iso temp
cp -a temp newmodule

con le utilità di Morphix è comunque possibile anche estrarre direttamente il contenuto del modulo in una directory usando il comando:

module-extractor newmorph/mainmod/light.mod newmodule

(in questo caso occorrerà prevedere che in /tmp ci sia lo spazio sufficiente per contentere tutti i dati, altrimenti il comando fallirà).

Fatto questo si disporrà dell'immagine completa del sistema e si potrà eseguire un chroot per effettuare le modifiche che ci servono, e nel caso installare quanto dovuto, prima vale però la pena di montare, sia il filesystem /proc che /sys; si procederà pertanto con:

mount -t proc proc newmodule/proc
mount -t sysfs sysfs newmodule/sys
chroot newmodule

e a questo punto ci si troverà all'interno del chroot.

A questo punto si dovrà passare all'installazione di quanto voluto, per questo si può sfruttare direttamente il package system di Debian; nel nostro caso sarà anzitutto necessario impostare un opportuno valore per il server DNS, modificando /etc/resolv.conf.

Nel nostro caso i pacchetti che si possono installare dalle fonti usuali già presenti nella distribuzione standard sono i seguenti:

apt-get update
apt-get install grass qgis thuban mapserver-bin gdal-bin python-gdal
apt-get install mapserver-bin perl-mapscript python-mapscript cgi-mapserver 
apt-get install php-mapscript 
apt-get install octave gpx2shp gpsdrive shapelib odbc-postgresql
apt-get install r-recommended r-cran-dbi r-cran-mapproj 
apt-get install r-cran-mapdata r-gnome r-mathlib 
apt-get install gmt xmaxima gpsbabel gpstrans gpsd gpsd-clients
apt-get install apache2

Poi si possono modificare opportunamente le fonti di APT, in particolare per avere alcuni pacchetti molto utili non ancora presenti in Debian, ma realizzati dal progetto Debian-GIS, occorrerà aggiungere la seguente riga ad /etc/apt/sources.list:

deb http://pkg-grass.alioth.debian.org/debian-gis unstable main contrib

e poi potremo installare i seguenti pacchetti con:

apt-get install libpostgis1-pg74 libgdal1-grass avce00 qgis-plugin-grass

Si tenga presente che l'installazione di postgres necessita di creare il database e che postgis va ad eseguire a sua volta delle operazioni su di esso; pertanto può essere opportuno cancellare tutti gli eventuali dati precedenti (e cioè la directory /var/lib/postgres) per evitare problemi. Si verifichi che il DB è partito con i comandi:

su postgres
psql template1
\l

che permettono il collegamento al database di default messo dall'installer di Debian.

Si ricordi infine di fermare il database (con /etc/init.d/postgresql stop}) prima di uscire dal chroot, onde avere i file in uno stato coerente per la successiva creazione dell'immagine del modulo.

Una volta completate le installazioni si potrà provvedere a ripulire quanto non serve più; i passi sono i seguenti:

rm -f /var/tmp/*
rm -f /var/cache/apt/*
touch /var/cache/apt/archives/lock
apt-get clean

Infine vanno fermati eventuali servizi avviati nell'installazione (nel caso specifico apache e postgresql) con:

/etc/init.d/postgresql stop
/etc/init.d/apache2 stop

Una volta usciti dal chroot occorre poi smontare i filesystem virtuali, onde evitare di inserirne il contenuto nell'immagine del CD:

umount newmodule/proc
umount newmodule/sys

Altro materiale che si può installare all'interno del nostro nuovo modulo, anche senza operare nel chroot, sono alcuni file usati dal sistema di avvio di Morphix, e che stanno dentro la directory newmodule/morphix.

Anzitutto ci sono le seguenti immagini, che vengono usate rispettivamente come background del desktop e come icona di sistema, che si possono sostituire con le seguenti istruzioni:

cp myimage/background.png newmodule/morphix/background.png
cp /usr/share/pixmaps/debian-logo.png newmodule/morphix/debguin.png

Poi si possono modificare i file che controllano quanto viene installato/avviato al lancio del sistema, questi stanno in newmodule/morphix/init.d, in particolare X11-setup può essere modificato per far lanciare altri programmi all'avvio.

A questo punto, per le release di morphix fino alla 0.4, si può riceare il nuovo modulo usando il comando:

mkisofs -iso-level 4 -R -U -V "GeoMorphix" -P "GeoMorphix" -hide-rr-moved \
-cache-inodes -no-bak -pad newmodule \
 | nice -5 create_compressed_fs - 65536 \
> newmorph/mainmod/light.mod

In realtà questo non funziona se si usa la 0.5, dato che è stato modificato il formato del modulo; per ricrearlo si devono allora installare i programmi di utilità che si scaricano dal sito di Morphix; questo comporta l'aggiunta di una riga a /etc/apt/sources.list ed i seguenti comandi:

echo "deb http://www.morphix.org/debian ./" >> /etc/apt/sources.list
apt-get install morphix-modulebuilder morphix-moduleextractor

e con questi si può usare il comando module-builder per creare il nuovo modulo nel nuovo formato con:

monk:/home/morphing# export TMPDIR=/var/tmp
monk:/home/morphing# module-builder -t ext3 newmodule newmorph/mainmod/light.mod
Building module, epoch 1112452955, please wait...
...
...

alla fine del procedimento (che è piuttosto lungo) si otterrà un nuovo modulo direttamente nella directory newmorph/mainmod dell'immagine di installazione.

Personalizzare moduli del kernel e script di lancio della live

Prima di utilizzare il contenuto del mainmod Morphix usa un sistema iniziale (quello che costituisce il grosso di una base, che viene mantenuto nel file base/moprhix. E' qui che vengono lanciati gli script di autoconfigurazione e di creazione dell'utente di default della live.

Il file base/moprhix è nello stesso formato dei moduli, per cui i passi per poterlo modificare sono analoghi a quelli della creazione di un modulo, anzitutto lo si deve estrarre in una iso con:

extract_compressed_fs /mnt/target/base/morphix > /tmp/morphix-uncompressed.iso

poi si deve montare l'immagine in loopback e copiare il contenuto su una nuova directory:

mount -o loop /tmp/morphix-uncompressed.iso /mnt
cp -a /mnt newbase
umount /mnt

quindi si possono effettuare le modifiche al contenuto (aggiungere moduli del kernel sotto newbase/lib/modules o modificare gli script in newbase/etc/init.d), una volta finito si potrà rigenerare il nuovo file della base con:

mkisofs -R -U -V "Morphix" -P "Morphix" -cache-inodes -no-bak -pad newbase > /tmp/tempiso.iso
nice -5 create_compressed_fs /tmp/tempiso.iso 65536 > fuss-cd/base/morphix

Modifica della immagine di installazione

In questo caso opereremo direttamente all'interno dei dati del CD, cioè dentro quanto si trova sotto la directory newmorph; andando a modificare i file usati da Morphix durante l'avvio.

I primi file che ci può interessare di cambiare sono quelli relativi alle informazioni di base sul CD, ad esempio l'icona del CD (cdrom.ico), la pagina HTML di spiegazione (index.html) e le varie immagini da essa utilizzate (dentro images).

Un po' più complesso è invece modificare le immagini usate all'avvio di GRUB; queste sono memorizzate all'interno del sistema di splash screen grafico di GRUB; che è contenuto nel file boot/grub/message; se le si vogliono modificare il primo passo è estrarle in una opportuna directory, perciò faremo:

mkdir newsplash
cd newsplash
cat ../newmorph/boot/grub/message | cpio -idvm

Questo scompatterà nella directory newsplash i file che ci servono, di cui quello che interessa è background.pcx, che potrà essere modificato a piacimento. Si potranno anche modificare i testi delle varie opzioni contenuti nei file tests.*. Una volta completate le modifiche si potrà ricreare il messaggio iniziale con:

find * | cpio -o > ../message
cd ..
mv message newmorph/boot/grub/

Se si vogliono modificare le immagini visualizzate durante il processo di avvio del kernel occorrerà operare sul filesystem iniziale; con la versione 0.5 di Morphix però non viene più utilizzata l'immagine di un floppy (precedentemente in base/boot.img) ma direttamente GRUB, che lancia il kernel ed usa un RAM disk compresso, che è mantenuto direttamente in boot/miniroot.gz.

Pertanto se si vuole modificarne il contenuto il sistema più semplice è quello di montare in loopback quest'ultimo; si dovranno cioè eseguire i seguenti passi:

gunzip newmorph/boot/miniroot.gz
mount -o loop newmorph/boot/miniroot temp/
cd temp

Le immagini usate nell'avvio sono mantenute nella directory bootsplash/images, basterà allora modificare queste ultime inserendo al loro posto le opportune versioni modificate, con diverse immagini. Allo stesso modo si possono modificare le barre di progresso che invece si trovano sotto bootsplash/config nei vari file .cfg

Una volta completate tutte le modifiche basterà ricreae l'immagine compressa nell'immagine del CD, eseguendo i seguenti comandi:

cd /home/morphing
umount temp
gzip newmorph/boot/miniroot

Creazione del minimod con le impostazioni

In questo caso l'estrazione è analoga a quella del modulo principale; si procede ad estrarre l'immagine iso, a montarla ed estrarne il contenuto su una nuova directory newmini con i comandi:

extract_compressed_fs newmorph/minimod/new-light4.mod > mini.iso
mount -o loop mini.iso temp/
cp -a temp/ newmini

A questo punto i file da modificare sono nella sottodirectory files di newmini, in particolare la home dell'utente sta in un file .tar.gz che va estratto, dopo di che si potranno modificare le impostazioni nei vari dotfiles e ricrearlo, una volta sostituito il precedente .tar.gz con il nuovo si potrà ricreare l'immagine del nuovo minimodulo con:

mkisofs -iso-level 4 -R -U -V "Morphix fs" -P "Morphix" -cache-inodes \
-no-bak -pad ./newmini | nice -5 create_compressed_fs - 65536 >newmini.mod

poi basterà copiare questa al posto della precedente:

cp newmini.mod newmorph/minimod/new-light4.mod

Creazione della nuova versione

Una volta compiute tutte le modifiche volute, secondo i vari casi illustrati in precedenza, si potrà creare la nuova immagine ISO, questo si potrà realizzare con il seguente comando:

cd newmorph
mkisofs -graft-points -pad -l -r -J -v -V "GeoMorphix [[LiveCD]]" -b \
boot/grub/iso9660_stage1_5 -c base/boot.cat -no-emul-boot \
-boot-load-size 4 -boot-info-table -hide -rr -moved -o ../geomorphix.iso .

e a questo punto avremo in /home/morphing la nostra nuova immagine fresca che potremo masterizzare con in nostro programma preferito, nel caso si voglia usare cdrecord il comando è banalmente il seguente:

cdrecord -v speed=8 dev=0,0,0 geomorphix.iso

Alternativamente si può controllare il funzionamento dell'immagine appena creata eseguendola direttamente con l'emulatore qemu (in questo caso saranno richieste parecchie risorse, è bene avere a disposizione una macchina potente) con il comando:

qemu -cdrom geomorphix.iso