Utiliser GRUB pour booter via le réseau

De Lea Linux
Aller à la navigation Aller à la recherche


Utiliser GRUB sur disquette pour booter via le réseau

Utiliser GRUB sur disquette pour booter via le réseau
Par Antoine

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 :

3c509 3c529 3c595 3c90x cs89x0 davicom depca eepro epic100 3c507 exos205 ni5210 lance ne2100 ni6510 natsemi ni5010 3c503 ne ns8390 wd otulip rtl 8139 sis900 sk-g16 smc9000 tiara tulip via-rhine w89c840 3c503-shmem 3c503-aui compex-rl2000-fix eepro100
./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 :



@ Retour à la rubrique Administration système

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Antoine le 16/12/2004.

Copyright

Copyright © 16/12/2004, Antoine

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike iconCreative Commons Noncommercial
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique, Contexte non commercial 2.0 :
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/