Avanti Indietro Indice


5. Configurazione dei client

 

 

5.1 Creazione dell'immagine del kernel

 

Per preparare a dovere la configurazione per i client è necessario compilare il kernel (make menuconfig o make xconfig a vostro piacere) nel seguente modo:


 

 

Ricompilare il kernel con il seguente comando: make dep && make bzImage

A questo punto e' possibile creare l'immagine del kernel:

 

mknbi-linux --output=vmlinuz.prova --rootdir=/172.16.0.51 --ip=172.16.0.51:172.16.1.1:172.16.0.10:255.255.0.0:486 arch/i386/boot/bzImage

 

mknbi-linux possiamo scaricarlo da http://etherboot.sourceforge.net/

Analizziamo il comando:
 

--output=vmlinuz.prova e' il nome dell'immagine del kernel che stiamo per creare
 

--rootdir=/172.16.0.51 e' la directory (nel SERVER) del filesystem del client
 

--ip=172.16.0.51:172.16.1.1:172.16.0.10:255.255.0.0:486

questo parametro e' strutturato secondo la seguente maschera:

--ip=client:server:gateway:netmask:nome client arch/i386/boot/bzImage indica la directory dove si trova la bzImage creata con la compilazione del kernel
 

- Adesso ci ritroveremo nella directory da dove abbiamo lanciato il comando un file di nome vmlinuz.prova che sarà la nostra immagine del kernel da passare ai client nella directory /tftpboot/
 


 

5.2 Creazione del floppy di avvio

 

Dobbiamo scaricare Etherboot da www.etherboot.org e, dopo averlo installato, seguire le istruzioni:

Per creare un floppy di boot nella distribuzione viene fornito uno speciale blocco di boot. Questo piccolo programma di 512 byte carica in memoria i blocchi del disco che lo seguono nel floppy e inizia l'esecuzione. Quindi, per fare un floppy di boot, uno deve solo concatenare il blocco di boot con il binario Etherboot contenente il driver per una scheda di rete, in questo modo:

 

# cat floppyload.bin 3c509.lzrom > /dev/fd0

 

3c509.lzrom indica il driver per la scheda di rete presente nel pc (client) che e' disponibile in etherboot;

floppyload.bin indica il pacchetto per il boot che si trova all'interno di etherboot.


Quindi, ricapitolando, arrivati a questo punto, dovremmo avere (nel SERVER):

 

/tftpboot/172.16.0.51/

/tftpboot/???.??.?.??/

............. e cosi' via per ogni client


Se tutto cio' e' presente possiamo provare ad avviare il client attraverso il boot da floppy (quello creato con etherboot) e vedere se carica l'immagine del kernel che sta sul server DHCP.

Qua riceveremo un errore del tipo “VFS: cannot mount root filesystem” perche giustamente ancora non abbiamo creato la root filesystem del client all'interno della propria directory (/tftpboot/172.16.0.51/rootfilesystem).


Quindi basta creare la rootfilesystem ed il gioco e' fatto.

 

 

5.3 Creazione della root file system

 

Io ho scelto di creare la rootfilesystem con i pacchetti di Slackware 9.0 .

Se volete seguirmi ho creato uno script che automatizza la creazione del filesystem (ricordo che le distribuzioni utilizzate sono: RedHat 7.3 per il server e Slackware 9.0 per i client), purche' siano scaricati e copiati su cd almeno i seguenti pacchetti:


 

aaa_base-9.0.0-noarch-1.tgz

apmd-3.0.2-i386-1.tgz

bash-2.05b-i386-2.tgz

bin-8.5.0-i386-1.tgz

binutils-2.13.90.0.18-i386-1.tgz

bootp-2.4.3-i386-1.tgz

bzip2-1.0.2-i386-4.tgz

cpio-2.5-i386-1.tgz

cxxlibs-5.0.2-i386-1.tgz

db1-1.85-i386-1.tgz

db2-2.4.14-i386-1.tgz

db3-3.3.11-i386-3.tgz

dcron-2.3.3-i386-4.tgz

devfsd-1.3.25-i386-2.tgz

devs-2.3.1-i386-13.tgz

dhcp-3.0pl2-i386-1.tgz

e2fsprogs-1.32-i386-2.tgz

elflibs-9.0.3-i386-1.tgz

etc-5.0-noarch-11.tgz

fileutils-4.1-i386-2.tgz

findutils-4.1.7-i386-1.tgz

floppy-5.4-i386-3.tgz

gawk-3.1.1-i386-2.tgz

gdbm-1.8.0-i386-3.tgz

glibc-2.3.1-i386-3.tgz

glibc-i18n-2.3.1-noarch-1.tgz

glibc-solibs-2.3.1-i386-3.tgz

glibc-zoneinfo-2.3.1-noarch-2.tgz

grep-2.5-i386-2.tgz

gzip-1.3.3-i386-2.tgz

iptables-1.2.7a-i386-2.tgz

kbd-1.08-i386-2.tgz

less-381-i386-1.tgz

lftp-2.6.5-i386-1.tgz

libtermcap-1.2.3-i386-5.tgz

links-0.98-i386-2.tgz

modutils-2.4.22-i386-1.tgz

nc-1.10-i386-1.tgz

ncftp-3.1.5-i386-1.tgz

ncurses-5.3-i386-1.tgz

nfs-utils-1.0.1-i386-1.tgz

nmap-3.00-i386-1.tgz

openssh-3.5p1-i386-2.tgz

openssl-0.9.7a-i386-2.tgz

openssl-solibs-0.9.7a-i386-2.tgz

perl-5.8.0-i386-3.tgz

pkgtools-9.0.0-i386-1.tgz

popt-1.7-i386-1.tgz

portmap-4.0-i386-2.tgz

procps-3.1.6-i386-1.tgz

python-2.2.2-i386-3.tgz

readline-4.3-i386-2.tgz

sed-4.0.5-i386-2.tgz

shadow-4.0.3-i386-6.tgz

sh-utils-2.0-i386-1.tgz

slang-1.4.5-i386-2.tgz

svgalib-1.4.3-i386-2.tgz

sysklogd-1.4.1-i386-7.tgz

sysvinit-2.84-i386-25.tgz

tar-1.13.25-i386-1.tgz

textutils-2.0-i386-1.tgz

util-linux-2.11z-i386-1.tgz

vim-6.1-i386-7.tgz

wget-1.8.2-i386-2.tgz

yptools-2.8-i386-2.tgz

zlib-1.1.4-i386-3.tgz

 

Se avete messo su cd i pacchetti e avete montato il cd nel SERVER potete lanciare il mio script che vi creerà il file system del client all'interno della sua directory (/tftpboot/172.16.0.51);
 

E' ESTREMAMENTE IMPORTANTE CHE LO SCRIPT VENGA LANCIATO DALLA DIRECTORY

/tftpboot/172.16.0.51/

LADDOVE 172.16.0.51 INDICA L'INDIRIZZO IP DEL CLIENT CHE IL SERVER DHCP ASSEGNA A LUI IN AUTOMATICO AL BOOTSTRAP.

INOLTRE LO SCRIPT VA INVOCATO SPECIFICANDO IL MOUNT POINT DEL CD-ROM:

Esempio: ./nomescript /mnt/cdrom

 

Questo e' lo SCRIPT:

###################################################################################################

#              Questo script e' stato realizzato da Alessandro Illiano per la Yacme s.r.l. ed e' distribuito con  licenza GPL.                  #                      

###################################################################################################

#!/bin/bash

#

mntpoint=$1

#

# Controllo dei parametri

if [ -z $mntpoint ]; then

echo "Non hai specificato il mount point del CD-ROM!"

echo -n "Mount point del CD-ROM: "

read x

if [ -z $x ] || [ ! -d $x ]; then

echo "Directory errata!"

exit 1

else

mntpoint=$x

fi

fi

#

# Chiede se si vuole cancellare tutto

echo -n "Vuoi cancellare il contenuto di `pwd`? [S/N] "

read x

if [ "$x" = "S" ] || [ "$x" = "s" ]; then

rm -rf *

find . -not -name '.' -not -name '..' -type f -exec 'rm -rf {}' \;

fi

#

# Scompatta i file nel CD-ROM

for i in ${mntpoint}/*.tgz; do

tar -xvzf $i

done

#

# Toglie .new dal nome del file

for i in `find . -name '*.new'`;do

nome=`echo $i | sed -e "s,.new,,"`

mv -f $i $nome

done

#

# Sposta le librerie

mv -f lib/incoming/* lib/

#

# Crea i riferimenti mancanti in ld.so.conf

cat >> etc/ld.so.conf << EOF

/lib

/usr/lib

EOF

#

# Crea la cache di ldconfig

ldconfig -r `pwd`

#

# Collegamento della shell

cd bin/

ln -sf bash2 sh

cd ..

#

# Cambia la shell di root

cp etc/passwd pippo

cat pippo | sed -e "s,bash,bash2," > etc/passwd

rm -f pippo

#

# Collegamento del comando mount

cd sbin

ln -s ../bin/mount mount

cd ..

#

# Creazione della directory proc

mkdir -p proc

chmod 555 proc

#

# Un pò di pulizia

mv -f etc-incoming/* etc/

rm -rf install

rm -rf etc-incoming

#

# Creazione etc/fstab

cat > etc/fstab << EOF

/dev/nfs / nfs defaults 0 0

none /proc proc defaults 0 0

EOF


####################################################################################################

© Alessandro Illiano

 


Avanti Indietro Indice