Sinistra <- Packet CAPture library - Indice Generale - Copertina - Software libero per il trattamento di problemi scientifici -> Destra

Sistemi Liberi


User-Mode Linux (parte II)

di Stefano Sasso

L'articolo...

Questo articolo è la continuazione di quello pubblicato sul PLUTO Journal numero 43 e descrive i passaggi per creare un'istanza UML Debian 3.0 utilizzando la normale procedura di installazione. Gli unici requisiti sono spazio su disco, un kernel UML, le uml_utilities ed i CD di Debian 3.0.



Preparazione del sistema e dell'istanza UML

Prima di tutto, è necessario procurarsi l'immagine del "Debian Installer" e modificarla. Potete trovarne una già modificata su http://www.dscnet.org/downloads.php?cat=uml, mentre l'immagine originale la trovate su ftp://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images-1.44/root.bin.

È necessario ora decomprimere l'immagine: se utilizzate quella già modificata digitate

bunzip2 initrd-deb3.0.bz2

Se utilizzate quella originale, invece, digitate:

gunzip < root.bin > initrd-deb3.0

Prima della modifica del Debian Installer dobbiamo creare il file che fungerà da root filesystem nella nostra istanza UML:

dd if=/dev/zero of=root_fs bs=1024k count=1 seek=1024

(il parametro passato con "seek=" è la dimensione del file da creare in Mb, in questo caso 1024Mb=1Gb.)

mke2fs root_fs

Se si ha abbastanza spazio su disco, possiamo creare un file di swap:

dd if=/dev/zero of=swap_fs bs=1024k count=1 seek=256
/sbin/mkswap swap_fs

Installazione del sistema

Ora passiamo al primo boot della nostra istanza:

./linux ubd0=initrd-deb3.0 ubd1=root_fs ubd2=/dev/cdrom devfs=nomount eth0=tuntap,tap0

dove /dev/cdrom è l'unità con il disco/dischi Debian; per la configurazione della rete (eth0=) vi rimando all'articolo precedente.
Se precedentemente è stato creato il file di swap aggiungiamo il seguente parametro alla riga di comando: ubd3=swap_fs.

Ora Debian Installer dovrebbe partire correttamente: dal menù scegliamo di configurare la tastiera e successivamente scegliamo l'opzione "Execute a Shell".

Se stiamo eseguendo un Debian Installer NON modificato è necessario apportare qualche modifica alla cartella /dev:

cd /dev
rm ubd*
mknod ubd0 b 98 0
mknod ubd1 b 98 16
mknod ubd2 b 98 32
mknod ubd3 b 98 48
mknod ubd4 b 98 64
mknod ubd5 b 98 80
mknod ubd6 b 98 96
mknod ubd7 b 98 112

Ora, sia nel caso in cui stiamo eseguendo un Installer modificato sia in quello in cui non sia così, dobbiamo montare i nostri filesystem ed eventualmente lo swap file:

mount /dev/ubd1 /target
mkdir /target/cdrom
mount /dev/ubd2 /target/cdrom

Se abbiamo lo swap file digitiamo anche:

swapon /dev/ubd3

Ora torniamo al menù principale:

exit

Selezioniamo quindi "Configure the Hostname" per configurare il nome del computer, e "Configure the network" per la configurazione della rete (la nostra istanza UML ha una scheda di rete virtuale eth0 definita precedentemente nella riga di comando del kernel UML).

Per effettuare l'installazione vera e propria selezionare "Installazione del sistema di base" dal menù principale, poi "mounted" e successivamente, quando richiesto selezionare /target/cdrom come fonte di installazione. L'installazione di base Debian verrà ora completata, ci restano solo alcuni ritocchi finali da effettuare. Dobbiamo quindi scegliere nuovamente "Execute a Shell" dal menù principale.

Innanzitutto sistemeremo i file presenti in /dev nel sistema appena installato, copiando quelli dell'installer:

cp /dev/ubd* /target/dev

L'ultima cosa da fare è modificare il file fstab:

nano-tiny /target/etc/fstab

Il contenuto deve essere simile al seguente:

/dev/ubd0	/	ext2	errors=remount-ro	0	1
proc		/proc	proc	defaults	0	0
/dev/ubd1	/cdrom	iso9660	defaults,user,noauto,ro	0	0

Se abbiamo uno swap file aggiungeremo anche:

/dev/ubd2	none	swap	sw	0	0

Possiamo ora chiudere l'editor e l'istanza UML:

halt

Dopo la chiusura è necessario riavviare l'istanza per terminare l'installazione:

./linux ubd0=root_fs ubd1=/dev/cdrom devfs=nomount eth0=tuntap,tap0 [ubd2=swap_fs]

(il testo tra parentesi quadre [ ] va inserito solo se si ha uno swap file.)

Ora ci appariranno una serie di schermate per l'installazione dei pacchetti (quando verrà chiesto da che device effettuare l'installazione digitare /dev/ubd1) e per le varie configurazioni del sistema (come una qualsiasi installazione Debian), dopodiché avrete un'istanza UML Debian 3.0 nuova fiammante e perfettamente funzionante.
È da ricordare che durante la procedura di installazione non è necessario installare né un bootloader né un kernel (e i relativi moduli) in quanto UML gestisce tutto questo da solo. È chiaro che se il kernel UML è modulare i relativi moduli dovranno essere copiati nell'istanza.

Per i successivi avvii dell'istanza la linea di comando è questa:

./linux ubd0=root_fs ubd1=/dev/cdrom devfs=nomount eth0=tuntap,tap0 [ubd2=swap_fs]

Buon divertimento!



L'autore

Stefano Sasso utilizza Linux dal 2000 e si diverte a programmare in Perl, PHP e Python. È anche amministratore del server web del suo liceo, dove frequenta la classe quinta.


Sinistra <- Packet CAPture library - Indice Generale - Copertina - Software libero per il trattamento di problemi scientifici -> Destra