Utiliser GRUB pour booter via le réseau
Utiliser GRUB sur disquette pour booter via le réseau
Récupérer/compiler GRUB
Il faut télécharger la dernière release de GRUB à l'adresse suivante : ftp://alpha.gnu.org/gnu/grub/
Ensuite le détarrer et le décompresser, puis aller dans le répertoire :
tar xvfz grub-0.95.tar.gz
Maintenant il s'agit de le compiler avec le support de votre carte réseau. GRUB supporte un bon nombre de cartes, mais il est déconseillé de le compiler avec toutes les cartes réseaux. Voici la liste des cartes réseaux disponibles :
./configure --enable-votre_carte_réseau --enable-diskless --prefix=/usr
Dans le répertoire où vous avez compilé GRUB :
- stage1/stage1 : image essentielle pour booter GRUB
- stage2/stage2 : est le stage2 de GRUB avec le support de votre carte réseau
- grub/grub : correspond au GRUB shell, que nous utiliserons pour créer la disquette de boot GRUB
Nous considérons maintenant que nous sommes dans le répertoire où nous avons compilé GRUB.
Création de la floppy de boot
Vérifier que la disquette n'est pas montée avant de la formater :
/bin/umount /mnt/floppy /sbin/mkfs.ext2 /dev/fd0
Ensuite monter la disquette :
/bin/mount /dev/fd0 /mnt/floppy
Il faut créer les répertoires pour GRUB :
mkdir -p /mnt/floppy/boot/grub
et copier les fichiers stage1 et stage2 de GRUB sur la disquette :
cp -v stage1/stage1 /mnt/floppy/boot/grub/ cp -v stage2/stage2 /mnt/floppy/boot/grub/
Maintenant il faut rendre la disquette bootable avec GRUB :
grub/grub GNU GRUB version 0.95 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ]
grub> root (fd0) Filesystem type is ext2fs, using whole disk
grub> setup (fd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... no Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded Done.
grub> quit
On va générer le fichier par défaut /mnt/floppy/boot/grub/menu.lst de la disquette, qui va indique de récupérer une adresse réseau, et de récupérer le fichier menu.lst sur notre serveur TFTP. Ce fichier doit contenir :
default=0 timeout=5 title linux bootp configfile (nd)/menu.lst
- timeout : délai d'attente avant de booter l'option par défaut
- bootp : configure la carte réseau de votre machine cliente via le serveur DHCP
- (nd) : est utiliée pour préciser Network Device
- menu.lst : c'est le fichier à récupérer via tftp par notre machine cliente.
Côté serveur
Il faut un serveur DHCP, et un serveur TFTP. Je ne vais pas m'attarder sur la configuration de ces services, mais juste vous fournir des fichiers de configuration TFTP et DHCP qui fonctionnent.
Serveur dhcpd
L'option next-server ip_adresse du fichier /etc/dhcpd.conf correspond à l'adresse de notre serveur TFTP. Voici un exemple très simple de configuration DHCP. Pour plus d'information, faites une recherche sur Internet.
ddns-update-style none; allow booting; allow bootp; authoritative;
subnet 10.0.1.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option routers 10.0.1.10; default-lease-time 288000; max-lease-time 864000; option domain-name "guibland.com"; option domain-name-servers 10.0.1.33; next-server 10.0.1.33; pool { range 10.0.1.81 10.0.1.91; } }
Descriptions des options utilisées :
- allow bootp : autorise le bootp
- authoritative : serveur DHCP autoritaire sur le réseau
- option routers : votre passerelle par défaut
- option domain-name : nom de domaine de votre réseau
- option domain-name-servers : addresse ip du serveur DNS
- next-server : addresse ip du serveur TFTP
- range 10.0.1.81 10.0.1.91 : plage d'ip que le serveur DHCP va attribuer
Serveur TFTP
Il est en général configuré pour fonctionner via le serveur xinetd. Voici le contenu du fichier /etc/xinetd.d/tftp
# default : off # description : The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot per_source = 11 cps = 100 2 flags = IPv4 }
Descriptions des options utilisées :
- disable = no : permet d'activer le serveur TFTP via xinetd
- server_args = -s /var/lib/tftpboot : le serveur TFTP tournera dans un chroot dans le répertoire /var/lib/tftpboot. Ce qui veut dire que lorsqu'un client se connecte sur le serveur tftp, et qu'il récupère le fichier /var/lib/tftpboot/menu.lst, le client ne voit que /menu.lst, et non pas tout le path pour accéder au fichier menu.lst
Url diverses
Voici quelques Url sur le sujet :
- http://www.gnu.org/software/GRUB/manual/html_node/ Manuel de GRUB
- ftp ://alpha.gnu.org/gnu/grub/ les source de GRUB
- http://www.schapiro.org/schlomo/huji/linux/dhcpdtftpd/doc/dhcpd-options.html Les options du serveur DHCP
- http://www.kernel.org/pub/software/network/tftp/ TFTP