Boot pxe

Rédigé par pep | Classé dans : Debian

22
05 | 11

Le cdrom de mon portable étant naze, pas de boot sur usb, il ne restait que la mystérieuse option "boot from network".

Le serveur dhcp

Le premier élément nécessaire est un serveur dhcp. Il fournira une ip, et précisera ou trouver les fichiers nécessaires au démarrage.

/etc/dhcp/dhcpd.conf
 authoritative;
 ddns-update-style interim;
 ignore client-updates;
 
 subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.200 192.168.1.250;
   option domain-name-servers 192.168.1.2;
   option domain-name "glu";
   option routers 192.168.1.1;
   option subnet-mask 255.255.255.0;
   default-lease-time 43200;
   max-lease-time 86400;
 
   server-name "PXE";
   next-server 192.168.1.1;
   filename "/srv/tftp/pxe/pxelinux.0";
 }

L'option "next-server" sert à préciser l'ip du serveur tftp si celui-ci n'est pas le même que le serveur dhcp.

Le serveur tftp

Trivial ftp : on fait dans le simple, pas d'authentification, on lui demande un fichier, il nous le donne. Le serveur atftp fait très bien l'affaire.

L'installateur créé un nouveau répertoire : /srv/tftp. Ce répertoire contiendra les fichiers.

/etc/default/atftp
USE_INETD=false
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --bind-address 192.168.1.10 --no-multicast --maxthread 100 --verbose=10 /srv/tftp"

Le serveur PXE

  • Installer pxe et syslinux.
  • Créer le répertoire /srv/tftp/pxe
  • Téléchargement des images netbook : http://ftp.fr.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/netboot.tar.gz
  • Décompression de l'archive.
  • Création de l'arborescence tftp
    mkdir -p /srv/tftp/pxe/boot-screens/
    mkdir -p /srv/tftp/pxe/pxelinux.cfg/
    
  • Copie des fichiers de boot dans l'arborescence du serveur tftp
    cp netboot-debian-squeeze-i386/debian-installer/i386/pxelinux.0 /srv/tftp/pxe/
    cp netboot-debian-squeeze-i386/debian-installer/i386/boot-screens/splash.png /srv/tftp/pxe/boot-screens/
    cp netboot-debian-squeeze-i386/debian-installer/i386/boot-screens/vesamenu.c32 /srv/tftp/pxe/boot-screens/
    cp netboot-debian-squeeze-i386/debian-installer/i386/initrd.gz /srv/tftp/pxe/debian-squeeze/i386/
    cp netboot-debian-squeeze-i386/debian-installer/i386/linux /srv/tftp/pxe/debian-lenny/i386/
    
  • Création du fichier /srv/tftp/pxe/prelinux.cfg/default
    include /boot-screens/menu.cfg
    default /boot-screens/vesamenu.c32
    prompt 0
    timeout 0
    
  • Création du fichier /srv/tftp/pxe/boot-screens/menu.cfg
    menu color border       * #00000000 #00000000 none
    menu color sel          * #ffffffff #76a1d0ff *
    menu color hotsel       1;7;37;40 #ffffffff #76a1d0ff *
    menu color tabmsg       * #ffffffff #00000000 *
    menu vshift 12
    menu rows 10
    menu tabmsgrow 16
    menu timeoutrow 17
    menu tabmsg Press ENTER to boot or TAB to edit a menu entry
    menu autoboot Starting Local System in # seconds
    
    prompt 0
     
    label bootlocal
      menu label ^Boot from local disk
        menu default
        localboot 0
        timeout 200           #timeout which is displayed, Wait 10 seconds unless the user types somethin
        totaltimeout 1200     #timeout which executes the default definitely, always boot after 2 minutes
     
    menu begin debian
      menu title Debian
      label mainmenu
        menu label ^Back..
        menu exit
      menu begin debian-squeeze
        menu title Debian Squeeze
        label mainmenu
          menu label ^Back..
          menu exit
        menu begin debian-squeeze-i386
          menu title Debian Squeeze i386
          label mainmenu
            menu label ^Back..
            menu exit
          DEFAULT install
          LABEL install
            kernel debian-squeeze/i386/linux
            append vga=normal initrd=debian-squeeze/i386/initrd.gz --
          LABEL expert
            kernel debian-squeeze/i386/linux
            append priority=low vga=normal initrd=debian-squeeze/i386/initrd.gz --
          LABEL rescue
            kernel debian-squeeze/i386/linux
            append vga=normal initrd=debian-squeeze/i386/initrd.gz rescue/enable=true --
          LABEL auto
            kernel debian-squeeze/i386/linux
            append auto=true priority=critical vga=normal initrd=debian-squeeze/i386/initrd.gz --
        menu end
      menu end
    menu end
    

Rien de trop compliqué, en somme. Ca permet de se sortir de problèmes matériels, de déployer à grande échelle et à peu de frais.

Mots clés : debian boot pxe