PXEGrub su tigon3
GRUB non funziona correttamente sulle schede Tigon3: invece di scaricare il file menu.lst da tftp
e' necessario compilare dei bootloader con incorporato il menu.lst
Configurazione BIOS
Sui PC:
BIOS del PC (tasto DEL)
Advanced Bios- Boot device select - Boot device priority:
La prima voce deve essere BBS-0 (Network) etc.
Bios della scheda di rete: (Ctrl-S)
Boot Protocol: Preboot Eecution Environment (PXE)
Configurazione DHCPD
Sul server tftp
Il file di configurazione di dhcpd /etc/dhcpd.conf
deve comprendere, per ogni macchina che deve fare il boot da rete:
host tesi01 {
option host-name "tesi01";
hardware ethernet 00:0C:76:C2:B1:85;
filename "/tftpboot/pxegrub";
fixed-address 147.162.35.181;
}
Far ripartire dhcp: /etc/init.d dhcp restart
PXEGRUB
Compilare pxe
I sorgenti di grub vengono prelevati da CVS, per avere l'ultima release, nella speranza
che venga corretto il bug di tigon3.
Le opzioni di compilazione indicate disabilitano l'hardware non presente e abilitano solo tigon3 e
attivano un menu di boot predefinito, dato che a causa del succitato bug in grub per tigon3 non funziona il
device nd.
cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/grub co grub
cd grub
./configure --enable-tg3 --enable-diskless --disable-jfs --disable-ufs2 \
--disable-minix --disable-reiserfs --disable-iso9660 --disable-3c595 \
--disable-3c90x --disable-davicom --disable-e1000 --enable-eepro100 \
--disable-epic100 --disable-natsemi --disable-ns8390 --disable-pcnet32 \
--disable-rtl8139 --disable-sis900 --disable-tulip --disable-tlan \
--disable-sundance --disable-via-rhine --disable-w89c840 --disable-hercules \
--disable-serial --enable-preset-menu="menu.lst"
make
Il file menu.lst
deve contenere il menu di boot desiderato,
che rispecchi le partizioni e i S.O dei client:
(la password e' da calcolarsi prima)
#-----
default=3
timeout=10
password --md5 $1$*****************
color cyan/blue white/blue
title Windows NT
unhide (hd0,0)
rootnoverify (hd0,0)
makeactive
chainloader +1
title Windows 2000
unhide (hd0,1)
rootnoverify (hd0,1)
makeactive
chainloader +1
title Linux
root (hd0,8)
kernel /boot/vmlinuz-2.6.6
boot
Attenzione, siccome il file menu.lst e' affogato nel codice eseguibile di pxegrub, ogni modifica
richiedera' la ricompilazione (o la modifica del binario con un editor, piu' rischiosa e adatta
solo per piccoli interventi).
Nella configurazione sopra descritta il default di boot e' Linux, percio' conviene creare tre copie
del programma pxegrub con il default per i tre sistemi
operativi (default=2
,default=1
) e metterle nella
directory /tftpboot
del tftpserver
col nome pxeboot.linux
, pxeboot.nt
,
pxeboot.w2000
: copiando uno di questi file con il nome pxegrub
si otterra'
il boot di default per tutte le macchine con quel S.O.
In alternativa si puo' operare sulla configurazione del file dhcpd.conf
Copiare il file pxegrub sul server tftp:
cp stage2/pxegrub /tftpboot
A questo punto il setup e' ultimato
Per riconfigurare il tutto
con un diverso menu.lst (ad es. /tftpboot/inst1.lst
):
cd /usr/src/grub
head config.log | grep ./configure
Copiare la riga (escluso il $ iniziale) modificando il parametro
--enable-preset-menu=menu.lst
in
--enable-preset-menu=/tftpboot/inst1.lst
.
Proseguire con configurazione, compilazione ed installazione:
./configure --enable-tg3 --enable-diskless --disable-jfs \
--disable-ufs2 --disable-minix --disable-reiserfs \
--disable-iso9660 --disable-3c595 --disable-3c90x \
--disable-davicom --disable-e1000 --enable-eepro100 \
--disable-epic100 --disable-natsemi --disable-ns8390 \
--disable-pcnet32 --disable-rtl8139 --disable-sis900 \
--disable-tulip --disable-tlan --disable-sundance \
--disable-via-rhine --disable-w89c840 --disable-hercules \
--disable-serial --enable-preset-menu=/tftpboot/inst1.lst
make
cp stage2/pxegrub /tftpboot/inst1
In questo modo avremo il bootloader /tftpboot/inst1
con incluso il nuovo menu inst1.lst
Per attivarlo su specifiche macchine, editare la riga
filename "/tftpboot/pxegrub";
in corrispondenza della sezione relativa alla macchina in questione
nel file /etc/dhcpd.conf
e riavviare dhcpd.