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.confdeve 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.