Crearsi un piccolo ambiente di test con Archlinux

da admin il novembre 23, 2009

Approfittando del post di blaster [1] su come eseguire il chroot in un sistema, ho deciso di creare questa micro guida.
Lo scopo è quello di preparare un piccolo sistema Arch 32 o 64, dipende da voi, su cui fare delle prove, sfruttando il concetto di chroot.

Per prima cosa dobbiamo crearci l’impalcatura, io personalmente ho scelto di crearla nella directory /tmp/TestSpace,

mkdir -p /tmp/TestSpace/var/lib/pacman
mkdir -p /tmp/TestSpace/var/cache/pacman
mkdir /tmp/TestSpace/etc/
mkdir /tmp/TestSpace/dev/
mkdir /tmp/TestSpace/proc/
mkdir /tmp/TestSpace/sys/

A questo punto copiamo i file di configurazione necessaria all’interno del nostro ambiente di test:

cp  -rf /etc/pacman.conf /etc/pacman.d/ /tmp/TestSpace/etc/

Se vogliamo usare un’architettura diversa dalla nostra possiamo modificare i file di configurazione di pacman nel seguente modo:

Da 64 a 32 bit

sed -i.bak s/x86_64/i686/ /tmp/TestSpace/etc/pacman.conf
sed -i.bak s/x86_64/i686/ /tmp/TestSpace/etc/pacman.d/*

o da 32 a 64 bit

sed -i.bak s/i686/x86_64/ /tmp/TestSpace/etc/pacman.conf
sed -i.bak s/i686/x86_64/ /tmp/TestSpace/etc/pacman.d/*

Se il sistema di test avrà la stessa architettura del nostro sistema reale potremmo evitare di riscaricare tutti i pacchetti semplicemente cambiando il parametro –cachedir dei comandi sotto, nel seguente modo

 --cachedir=/var/cache/pacman

montiamo in fine i “filesystem” necessari per la creazione del ramdisk:

mount -o bind /dev /tmp/TestSpace/dev/
mount -t proc none /tmp/TestSpace/proc/
mount -t sysfs none /tmp/TestSpace/sys/

La configurazione dell’ambiente è finita si può procedere nel scaricare i pacchetti necessari a creare l’ambiente..
Con il seguente comando aggiorniamo i database di pacman.
Fate attenzione a quello che fate, ho messo l’opzione v proprio per dare una possibilità in più per scovare errori.

pacman -Svy \
       --dbpath /tmp/TestSpace/var/lib/pacman/ \
       --cachedir /tmp/TestSpace/var/cache/pacman/ \
       --config /tmp/TestSpace/etc/pacman.conf \
       -r /tmp/TestSpace/

installiamo quindi il sistema base:

pacman -Svf base base-devel \
       --dbpath /tmp/TestSpace/var/lib/pacman/ \
       --cachedir /tmp/TestSpace/var/cache/pacman/ \
       --config /tmp/TestSpace/etc/pacman.conf \
       -r /tmp/TestSpace/

Smontiamo quindi i filesystem montati in precedenza:

umount /tmp/TestSpace/dev/
umount /tmp/TestSpace/proc/
umount /tmp/TestSpace/sys/

FINITO.. non vi resta che seguire la guida sul chroot di blaster e vi ritroverete catapultati in un sistema Arch minimale su cui fare tutte le prove che volete…

[1] http://dottorblaster.it/2009/11/chroot-una-breve-introduzione/

4 commenti

Occhio che alla fine smonti due volte /tmp/TestSpace/proc :D
Utilissima guida, complimenti per la realizzazione accuratissima ;)
L’unico appunto che potrei rivolgerti è il non utilizzo dell’opzione -r di Pacman, che permette proprio l’installazione in una root diversa dalla propria che disponga solamente di un Pacman funzionante :)

by Bl@ster on novembre 23, 2009 at 3:51 pm. Rispondi #

Ma lo scopo è proprio quello di installare in una root diversa… come vorresti farlo altrimenti??

by Nss on novembre 23, 2009 at 4:03 pm. Rispondi #

Esiste tra l’altro un metodo molto più semplice ed automatizzato di fare qualcosa del genere… mkarchroot. Per creare una chroot ti servono i pacchetti aufs2 e devtools, una volta che li hai installati puoi fare così:

# mkdir -p /chroot/root
# cp /etc/{makepkg,pacman}.conf /chroot

(Modifica le configurazioni che hai copiato secondo i tuoi gusti.)

# mkarchroot -C /chroot/pacman.conf -M /chroot/makepkg.conf
/chroot/root base base-devel sudo

Qui installi tutto il software che vuoi. Nota che sudo è importante se vuoi usare makechrootpkg per compilarti pacchetti nella chroot. Per fare questo devi lanciare abs, copiarti la directory del pacchetto da ricompilare da qualche parte al di fuori della chroot, entrare nella directory e lanciare:

# makechrootpkg -r /chroot/

E ti ritroverai con un pacchetto pulito da installare anche nel tuo sistema principale. In alternativa puoi usare /chroot/root come una chroot tradizionale. Nota che le altre directory che vengono create sono degli overlay che servono a makechrootpkg per non “sporcare” la chroot, rimuovendo tutti i file creati durante la compilazione.

Per mantenere la chroot aggiornata ti basta lanciare semplicemente ‘mkarchroot -u /chroot/root’.
Lancia ‘mkarchroot -h’ per altre informazioni :)

by bardo on novembre 25, 2009 at 12:43 pm. Rispondi #

Ecco questo poteva essere sicuramente un metodo migliore :D.
Mettiamola così, ho fatto vedere passo passo come fare ghghgh.

by Nss on novembre 25, 2009 at 5:56 pm. Rispondi #

Lascia un commento

Required.

Required. Not published.

If you have one.