PREMESSA
Questo è il mio primo how-to. Sicuramente non sarà completo e qualche passaggio lo darò "troppo" per scontato. Inoltre sarà ricco di errori, di temi trattati superficialmente e di mancate considerazioni. Correzioni, aggiunte e modifiche saranno ben accette
COSA VUOL FARE QUESTO HOW-TO?
Ho scritto questo How-To per coloro che vogliono:
- Utilizzare il loro "ultra veloce processore" per compilare (anche dal bootstrap) Gentoo dallo stage 1 anche su un computer ben più datato;
- Installare Gentoo su vecchie macchine (ovvero coloro i quali vogliono ottenere il massimo anche da un pentium 200!);
- Installare/aggiornare Gentoo sul loro portatile senza stressare l'hard disk/cpu di quest'ultimo;
Riguardo questo argomento ho trovato molte guide, ma nessuna che veramente mi soddisfaceva: il problema principale consisteva nell'eccessivo traffico di rete risolvibile solo con l'impiego di due schede ethernet 1 Gigabit (cosa molto poco probabile sui vecchi portatili). Inoltre, su PC datati, la velocità dell'hard disk pecca, e di sicuro non sarà veloce come una compilazione in RAM. Così ho cercato un metodo per ridurre il traffico di rete e avere meno accessi possibili sui dischi del vecchio pc.
SITUAZIONE
Avremo due PC:
PC1 = Computer veloce
PC2 = Computer vecchiotto.
BOOTSTRAP
Il PC 1 sarà avviato con Gentoo (installata normalmente
Il PC 2 dovrà essere avviato con un live cd che supporti NFS (nel mio caso Gentoo DVD Live RR4 2.6).
Nel caso preso in considerazione, il PC 1 ha due schede di rete (eth0 collegata a internet, e eth1 collegata direttamente con PC 2), ma, con qualche modifica, si può fare anche con una sola scheda di rete "per computer" (i più esperti non troveranno difficoltà).
Nel mio caso...
Console PC1:
Code: Select all
ifconfig eth1 10.0.0.1 up
echo "1" > /proc/sys/net/ipv4/ip_forward #abilita il fowarding dei pacchetti
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADECode: Select all
ifconfig eth0 10.0.0.2 up
route add default gw 10.0.0.1
echo nameserver x.x.x.x > /etc/resolv.conf #dove x.x.x.x sta per il dns del vostro provider.
echo /mnt/gentoo/ 10.0.0.1(no_root_squash,rw,no_all_squash) >> /etc/exports
/etc/init.d/nfs restartCode: Select all
AUTOCLEAN="yes"per evitare di occupare troppa RAM.
A questo punto fermatevi e tornate sul PC 1.
Console PC 1:
Code: Select all
/etc/init.d/nfsmount start
mkdir /mnt/nfs
mkdir /mnt/tmp/
mount -t nfs 10.0.0.2:/mnt/gentoo/ /mnt/nfs/
mount -t tmpfs tmpfs -o size=1000M,mode=770 /mnt/tmp/ #Guarda nota (1)(2)
mount --bind /mnt/tmp/ /mnt/nfs/var/tmp/portage/
mount --bind /usr/portage/ /mnt/nfs/usr/portage/ #Guarda nota (5)
mount -t proc none /mnt/nfs/proc
chroot /mnt/nfs/ /bin/bash -c 'env-update && source /etc/profile && exec /bin/bash'Continuate con il normale bootstrap sempre dalla console del PC1 (che sarà ovviamente il chroot remoto del nostro vecchio portatile). Questo sistema utilizzerà la CPU e la memoria della vostra workstation senza stressare il vostro vecchio pc e/o portatile.
Finito il bootstrap potete continuare con emerge -e system e, perché, no anche con l'emerge di xorg e kde.
Prima di riavviare il PC 2, è vivamente consigliato di smontare tutte i device nel PC1:
Console PC1:
Code: Select all
exit
umount /mnt/nfs/proc
umount /mnt/nfs/usr/portage/
umount /mnt/nfs/var/tmp/portage/
umount /mnt/tmp/
umount /mnt/nfs/Infine, potete utilizzare lo stesso metodo per aggiornare il vostro oramai "Gentoo PC 2"
Sul PC2
Code: Select all
echo / 10.0.0.1(no_root_squash,rw,no_all_squash) >> /etc/exportsal posto di
Code: Select all
echo /mnt/gentoo/ 10.0.0.1(no_root_squash,rw,no_all_squash) >> /etc/exportse sul PC 1
Code: Select all
mount -t nfs 10.0.0.2:/ /mnt/nfs/Code: Select all
mount -t nfs 10.0.0.2:/mnt/gentoo/ /mnt/nfs/ Potete anche riassumere, per comodità, il tutto in due semplici script:
File montaportatile.sh
Code: Select all
#!/bin/sh
mount -t nfs 10.0.0.2:/ /mnt/nfs/
mount -t tmpfs tmpfs -o size=1400M,mode=770 /mnt/tmp/
mount --bind /mnt/tmp/ /mnt/nfs/var/tmp/portage/
mount --bind /usr/portage/ /mnt/nfs/usr/portage/
mount -t proc none /mnt/nfs/proc
chroot /mnt/nfs/ /bin/bash -c 'env-update && source /etc/profile && exec /bin/bash'Code: Select all
#!/bin/sh
umount /mnt/nfs/proc
umount /mnt/nfs/usr/portage/
umount /mnt/nfs/var/tmp/portage/
umount /mnt/tmp/
umount /mnt/nfs/Le vostre esperienze e le segnalazioni d'errori sono moooooolto ben accette
NOTE
Nota 1: 1000 Mb sono tanti, ma se avete in precedenza attivato l'opzione AUTOCLEAN nel make.conf difficilmente si arriverà a occuparli tutti.
Nota 2: Allocando 1400 MB per il tmpfs, ho avuto problemi ad installare OpenOffice e Wine, avidi di spazio per i file temporanei. In questo caso bastarebbe saltare la linea di codice che permette la compilazione in RAM.
Nota 3: Il metodo funzionerà solamente se il PC 1 avrà un processore più recente del PC 2. Inoltre, se il pc1 è a 64 bit e il pc2 a 32, bisogna fare il chroot premettendo il comando linux32:
Code: Select all
linux32 chroot /mnt/nfs/ /bin/bash
env-update && source /etc/profile
export PS1="(chroot) $PS1"Nota 4: Quanto detto sopra vuol dire che, per esempio, non potrete usare questo metodo se il vostro PC1 è (per esempio) un athlon-xp e il PC2 è un Pentium4 (che ha in più le istruzione SSE2). In questo caso distcc fa al caso vostro (niente portatile felice).
Nota 5:
- Se compilate da PC1 con architettura a 64 bit e il PC2 a 32;
- e/o se facendo emerge -uDav world senza il metodo e poi applicando il medesimo il risultato differisce,
- e/o per altri problemi simili;
provate a modificare lo script in questo modo:
Code: Select all
mount -t nfs 10.0.0.2:/ /mnt/nfs/
mount -t tmpfs tmpfs -o size=1400M,mode=770 /mnt/tmp/
mount --bind /mnt/tmp/ /mnt/nfs/var/tmp/portage/
#mount --bind /usr/portage/ /mnt/nfs/usr/portage/ #<<-- riga da commentare
mount --bind /usr/portage/distfiles /mnt/nfs/usr/portage/distfiles #<<-- riga da aggiungere
mount -t proc none /mnt/nfs/proc
chroot /mnt/nfs/ /bin/bash -c 'env-update && source /etc/profile && exec /bin/bash'Code: Select all
#umount /mnt/nfs/usr/portage/ #<<-- riga da commentare
umount /mnt/nfs/usr/portage/distfiles #<<-- riga da aggiungere


