Progetto

Generale

Profilo

GeoMorphixRemaster » Cronologia » Versione 2

Versione 1 (Amministratore Truelite, 26-01-2006 17:05) → Versione 2/3 (Amministratore Truelite, 08-03-2006 15:46)

[[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 
 }}}