GRUB en netboot par PXE
Quand on gère un parc de plusieurs centaines de postes dispersés sur un campus, on ne veut plus devoir se promener de bureau en salle de cours avec trois clefs USB et une pile de CD ie. on veut disposer de nos outils favoris de déploiement quel que soit le poste (x86…) et ce, sans trop se fatiguer. Et surtout, pas question d'installer quoi que ce soit sur 300 machines. Pour ne rien avoir à installer sur les clients, il n'y a qu'une seule solution : l'amorçage sur le réseau ou netboot.
Plusieurs solutions s'offrent à nous mais pour disposer facilement d'un menu pour choisir sur quoi amorcer, GRUB s'impose. Renseignement pris, la version legacy est capable d'amorcer via le réseau, plus précisément par PXE. Nos clients sont des PC décents, capables de PXE justement.
Compilation de GRUB
Récupérer une archive des sources récentes (0.97) et l'extraire. Avant de lancer le ./configure
, aller sur http://os.inf.tu-dresden.de/~adam/grub/ pour récupérer la dernière version du patch d'Adam Lackorzyski et l'appliquer.
Quand c'est fait, lancer :
$ ./configure --enable-diskless --enable-pxe
Pas besoin d'indiquer des pilotes de cartes réseau au script configure
. Compiler (make(1)
) ; le plus dur est fait
Dans le répertoire stage2
on trouve un binaire pxegrub
. C'est le seul fichier qui nous intéresse. Pour l'installer, on le copiera à la racine du serveur TFTP à la prochaine étape.
Configuration DHCP et TFTP
Serveur DHCP
On utilise ISC-DHCPd 3. Dans la configuration, pour les sous-réseaux qui nous intéressent ajoutons les lignes suivantes pour activer le lancement via PXE :
allow bootp; allow booting; option option-150 code 150 = text; subnet 192.168.0.0 netmask 255.255.248.0 { next-server 192.168.7.253; option option-150 "(nd)/menu.lst"; filename "pxegrub"; }
La ligne next-server
renseigne l'adresse du serveur TFTP. L'option 150
sera utilisée par GRUB pour savoir où le client doit aller quérir le fichier de configuration (par défaut menu.lst
) ; (nd)
lui indique Net Disk.
Si le serveur DHCP propose des adresses aux invités, attention à ne proposer de boot PXE qu'aux hôtes connus.
Serveur TFTP
Configurer le daemon TFTP pour qu'il sache où est sa racine et y déposer pxegrub
. À côté, déposer menu.lst
contenant :
# Boot apres 5 secondes timeout 5 # 1ere entree par defaut default 0 # par defaut revient a la 1ere entree si le reste est HS fallback 0 # mot de passe password --md5 $1$G8GXZEpM$GMO5cioMUY5U3sb89rcuk. # 1ere entree : on passe au disque local title Demarrage normal root (hd0,0) chainloader +1 # 2eme entree : G4U title [sysadmin@] Amorcage reseau : G4U dhcp lock kernel --type=netbsd (nd)/g4u
Dans cette configuration, on a deux entrées (on pourra en ajouter autant qu'on veut) :
- la première renvoie à l'amorce sur le disque local,
- la seconde amorce le système sur Ghost for Unix (G4U).
À noter :
- Si on veut amorcer sur la seconde entrée, il faudra connaître le mot de passe (option
lock
) qui a été déclaré et stocké en MD5. - Le fichier
g4u
est déposé à côté depxegrub
etmenu.lst
sur le serveur TFTP. - L'option
dhcp
indique à la machine de demander via BOOTP/DHCP où est le serveur TFTP (la machine n'en aura plus conscience dès que GRUB aura passé la main).
Pour générer la chaîne MD5, sur un NetBSD 2.0 ou plus récent, utiliser :
$ echo passwd |pwhash -m
Plus qu'à ajouter Memtest, les outils de tests des constructeurs de disques, un mini-Unix, etc, la seule limite est votre imagination