« PXE Obsolete » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
m (Lol a déplacé la page PXE vers PXE Obsolete sans laisser de redirection : Page obsolète)
 
(38 versions intermédiaires par 4 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Modèle:Ébauche|PXE}}
{{Modèle:stable|PXE}}


'''! Ceci est un brouillon, merci de ne pas apporter de modification tant que cet avertissement n'est pas enlevé...'''
== Installation par le réseau - Boot PXE ==


Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.


== Installation par le réseau - Boot PXE ==
Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)


=== Installation ===
=== Installation ===
Ligne 37 : Ligne 38 :
Copie des fichiers dont nous aurons besoin pour le PXE :
Copie des fichiers dont nous aurons besoin pour le PXE :


Du répertoire /var/lib/syslinux
Du répertoire /usr/lib/syslinux
chain.c32 mboot.c32 menu.c32 pxelinux.0 reboot.c32 gpxelinux.0 memdisk pxeboot vesamenu.c32
:chain.c32
:mboot.c32
:menu.c32
:pxelinux.0
:reboot.c32
:gpxelinux.0
:memdisk
:vesamenu.c32


Vers /var/lib/tftpboot
Vers /var/lib/tftpboot


  cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
  cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
  etc...
  etc...


Un seul fichier de configuration pour pxe :
Un seul fichier de configuration pour pxe :
/etc/pxe.conf
/etc/pxe.conf
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste
Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :


  # which interface to use
  # which interface to use
Ligne 66 : Ligne 74 :
Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :
Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :


  filename "pxelinux.0";
  filename "gpxelinux.0";
  next-server 192.168.0.1;
  next-server 192.168.0.1;


Le premier fichier "pxelinux.0" est l'amorce réseau.
Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0
"next-server" est l'adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.
J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.
 
Le premier fichier "gpxelinux.0" est l'amorce réseau.
"next-server" est l'adresse la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.


  # nano /etc/dhcp3/dhcpd.conf
  # nano /etc/dhcp3/dhcpd.conf
Ligne 76 : Ligne 87 :
  # Private Network
  # Private Network
  subnet 192.168.0.0 netmask 255.255.255.0 {
  subnet 192.168.0.0 netmask 255.255.255.0 {
         filename "pxelinux.0";
         filename "gpxelinux.0";
         next-server 192.168.0.1;
         next-server 192.168.0.1;
         deny unknown-clients;
         deny unknown-clients;
Ligne 82 : Ligne 93 :
         option time-servers 192.168.0.1;
         option time-servers 192.168.0.1;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name-servers 195.99.65.220 , 195.99.66.220;
         option domain-name "beronono.com";
         option domain-name "isalo.org";
         option broadcast-address 192.168.0.255;
         option broadcast-address 192.168.0.255;
         option subnet-mask 255.255.255.0;
         option subnet-mask 255.255.255.0;
Ligne 120 : Ligne 131 :
etc...
etc...


Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/
Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...


Créez et configurez le fichier "/pxelinux.cfg/default"
Créez et configurez le fichier "/pxelinux.cfg/default"
Ligne 126 : Ligne 137 :
  # mkdir /var/lib/tftpboot/pxelinux.cfg/
  # mkdir /var/lib/tftpboot/pxelinux.cfg/


Création du fichier default (c'est lui qui contient les information sur vos différentes netboot)
Création du fichier default (c'est lui qui contient les informations sur vos différentes netboot)


  # nano /var/lib/tftpboot/pxelinux.cfg/default
  # nano /var/lib/tftpboot/pxelinux.cfg/default


  prompt 1
default menu.c32
  prompt 0
noescape 1
  timeout 300
  timeout 300
NOESCAPE 1
display f1.msg
F1 f1.msg
F2 f2.msg
   
   
#Sous-menu Debian netboot
label 1
LABEL DebianNetboot
  MENU LABEL Etch i386
MENU LABEL Debian Netboot --->
  kernel images/debian/old-stable/i386/linux
kernel menu.c32
  append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
append images/debian/debian.conf
 
# nano /var/lib/tftpboot/images/debian/debian.conf
 
MENU TITLE --== Debian Netboot ==--
   
   
# Retour au menu principal
LABEL rootmenu
        MENU LABEL <---- Menu principal
        kernel vesamenu.c32
        append /pxelinux.cfg/default
label 1
        MENU LABEL Etch i386
        kernel images/debian/old-stable/i386/linux
        append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall r$
  label 2
  label 2
        MENU LABEL Etch amd64
  MENU LABEL Etch amd64
        kernel images/debian/old-stable/amd64/linux
  kernel images/debian/old-stable/amd64/linux
        append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall $
  append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
   
   
  label 3
  label 3
        MENU LABEL Lenny i386
  MENU LABEL Lenny i386
        kernel images/debian/stable/i386/linux
  kernel images/debian/stable/i386/linux
        append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
  append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
   
   
  label 4
  label 4
        MENU LABEL Lenny amd64
  MENU LABEL Lenny amd64
        kernel images/debian/stable/amd64/linux
  kernel images/debian/stable/amd64/linux
        append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
  append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
   
   
  label 5
  label 5
        MENU LABEL Squeeze i386
  MENU LABEL Squeeze i386
        kernel images/debian/testing/i386/linux
  kernel images/debian/testing/i386/linux
        append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  $
  append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --
   
   
  label 7
  label 7
        MENU LABEL Unstable i386
  MENU LABEL Unstable i386
        kernel images/debian/unstable/i386/linux
  kernel images/debian/unstable/i386/linux
        append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw $
  append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
   
   
  label 8
  label 8
        MENU LABEL Unstable amd64
  MENU LABEL Unstable amd64
        kernel images/debian/unstable/amd64/linux
  kernel images/debian/unstable/amd64/linux
        append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw$
  append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
 
Le menu ci-dessus nous donnera le résultat suivant :
 
[[Fichier:Capture d'écran - 03082010 - 07-29-44.png]]
 
C'est déjà pas mal, mais nous pouvons l'améliorer...
 
=== Amélioration du menu ===
 
Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...
 
Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf
 
Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)
 
default vesamenu.c32
prompt 0
kbdmap french.kbd
noescape 1
timeout 300
label bootlocal
  menu default
  menu label Local boot
  localboot 0
# Vers le sous-menu Debian netboot
label DebianNetboot
  menu label Debian Netboot --->
  kernel menu.c32
  append debian.conf
label reboot
  menu label Reboot
  kernel reboot.c32
 
Ce menu nous donne les avantages suivants :
Clavier en Français en cas d'édition du menu;
Meilleur rendu;
Possibilité de booter sur le premier disque dur (par défaut);
Ouvrir un sous-menu (ici vers debian.conf);
Rebooter la machine.
 
Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :
 
# Retour au menu principal
label rootmenu
  MENU LABEL <---- Menu principal
  kernel vesamenu.c32
  append /pxelinux.cfg/default
 
Vous avez la base, tout ceci est paramétrable à l'infini...
 
[[Fichier:Capture d'écran - 03082010 - 08-33-09.png]]
 
[[Fichier:Capture d'écran - 03082010 - 08-35-29.png]]
 
=== Le menu avec un clavier Français ===
 
http://thefredsite.free.fr/linux.php?id=56
 
Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix
 
Ajouter cette entrée dans le fichier /var/lib/tftpboot/pxelinux.cfg/default


KBDMAP french.kbd


=== RescueSystemCd ===
=== RescueSystemCd ===
Ligne 199 : Ligne 257 :
4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)
4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)


/var/lib/tftpboot/images/systemrescue vdir
/var/lib/tftpboot/images/systemrescue vdir
total 214072
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root  3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root  3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5


5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...
5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...


label systemrescue
label systemrescue
   menu label System Rescue
   menu label System Rescue
   kernel images/systemrescue/isolinux/rescuecd
   kernel images/systemrescue/isolinux/rescuecd
   append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
   append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
   initrd images/systemrescue/isolinux/initram.igz
   initrd images/systemrescue/isolinux/initram.igz
[[Fichier:Capture d'écran - 03082010 - 09-00-40.png]]


=== pxeknife ===
=== pxeknife ===


Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/
Petit utilitaire '''très complet''', à télécharger ici : http://pxeknife.erebor.org/


La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz
La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz


Décompréssez l'archive dans /var/lib/tftpboot/images/pxeknife
Afin de na pas avoir à refaire les 19 fichiers de "conf" pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...
 
Editez /var/lib/tftpboot/images/pxeknife/pxeknife.conf pour qu'il reflète votre configuration (changement des chemins si nécessaire)


Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default
Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default
Ligne 230 : Ligne 288 :
   MENU LABEL PXE Knife --->
   MENU LABEL PXE Knife --->
   kernel menu.c32
   kernel menu.c32
   append images/pxeknife/pxeknife.conf
   append pxeknife/pxeknife.conf
 
[[Fichier:Capture d'écran - 03082010 - 09-16-04.png]]
 
Super Grub Disk !!!
 
[[Fichier:Capture d'écran - 03082010 - 09-17-38.png]]
 
Je vous laisse découvrir l'intégralité des menus pas vous-même ^^


=== hdt ===
=== hdt ===
Ligne 245 : Ligne 311 :
Et d'ajouter les lignes suivantes à notre menu (default)
Et d'ajouter les lignes suivantes à notre menu (default)


label hdt
label hdt
   menu label Hardware Detection Tool Floppy
   menu label Hardware Detection Tool Floppy
   kernel memdisk
   kernel memdisk
   initrd images/hdt-0.3.6.img
   initrd images/hdt-0.3.6.img


=== Un menu avec un clavier Français ===
[[Fichier:Capture d'écran - 03082010 - 15-35-34.png]]
 
=== Une option "reboot" et démarrage sur le disque dur ===
 
Pour démarrer sur le premier disque dur, ajoutez en début de menu :
 
label bootlocal
  MENU DEFAULT
  MENU LABEL Local Boot
  localboot 0
 
Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :
 
label reboot
  menu label Reboot
  kernel reboot.c32
 
 
=== Knoppix 511 et 620 ===
 
Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :
 
# apt-get install nfs-kernel-server
 
Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow
 
mountd: 192.168.0.
 
Créez les répertoires qui vont accueillir les CD
 
# mkdir /mnt/sdb1/knoppix511
# mkdir /mnt/sdb1/knoppix620
 
Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer
 
Récuperer les fichiers "amorce"
 
# Démarrez sur votre CD/ISO knoppix.
# Ouvrez une console, et tapez
 
netcardconfig
 
Une boite de dialogue s'ouvre, répondez :
- obtain address automatically
 
Puis
Code:
knoppix-terminalserver
 
Une nouvelle boite de dialogue s'ouvre, répondez :
- ok
- setup configure and restart
- Laissez le "range" d'adresse proposées
- Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...)
- décochez "secure: Disable root access on client" - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché...
- Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients...
- The Knoppix-terminal server will now be started = YES
 
Cela va démarrer un certain nombre de services réseaux, dont tftp...
Et créer les fichier dont nous avons besoin pour notre PXE...
Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix :
miniroot.gz et vmlinuz
 
Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620
 
Donc vous devriez avoir ceci dans chaque répertoire
 
miniroot.gz, vmlinuz
 
Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)
 
/mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
/mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)


http://thefredsite.free.fr/linux.php?id=56
Redémarrez le serveur NFS


Le fichier [http://www.isalo.org/wiki.debian-fr/download/french.kbd french.kbd] provient de Knoppix
# /etc/init.d/nfs-kernel-server restart


Ajouter cette entrés dans défault
Ajoutez les entrées dans votre menu "default" :


  KBDMAP french.kbd
  label Knoppix511
  MENU LABEL Knoppix 5.1.1
  kernel images/knoppix/511/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix
label Knoppix620
  MENU LABEL Knoppix 6.2.0
  kernel images/knoppix/620/vmlinuz
  append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix
 
[[Fichier:Capture d'écran - 03082010 - 15-48-39.png]]


=== D'autres entrées... ===
=== D'autres entrées... ===
Ligne 267 : Ligne 415 :


Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !
Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !
== Problèmes connus ==
=== tftpd-hpa et l'IPv6 ===
Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas.
Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:
# dpkg-reconfigure tftpd-hpa
[[Fichier:tftpd-hpa et IPv4.png]]
=== PXE ne s'arrête pas convenablement ===
Dans la version pxe/1.4.2-7 un bug "normal" subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657101 Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse]
Contournement: Modifier le fichier /etc/init.d/pxe tel que:
Remplacer ceci:
<pre>
wait_no_pid()
{
      while [ -e "$PID" ]
      do
              sleep 1
      done
}
</pre>
Par cela:
<pre>
wait_no_pid()
  {
          local pid=$(cat "${PID}" 2>/dev/null) || return 0
          local exe=$(readlink "/proc/${pid}/exe" 2>/dev/null) || :
          while [ "${exe}" = "${DAEMON}" ]
          do
                  sleep 1
                  pid=$(cat "${PID}" 2>/dev/null) || return 0
                  exe=$(readlink "/proc/${pid}/exe" 2>/dev/null) || :
          done
          rm -f "${PID}"
  }
</pre>
[[Utilisateur:Lol|Lol]] 3 août 2010 à 03:46 (UTC)
Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix
[[Category:Serveurs]]

Dernière version du 26 juin 2017 à 14:13

Release Le contenu de ce document a été validé. Vous pouvez suivre ses indications sans inquiétude.
Attention: Cependant, si au cours de vos manipulations un problème survenait, vous ne pouvez en aucun cas incriminer ce site. Posez vos questions sur le forum.


Installation par le réseau - Boot PXE

Cet article propose de vous expliquer l’installation et la configuration d'un serveur PXE sur votre Debian.

Le démarrage PXE (Pre-boot eXecution Environment) permet à une station de travail de démarrer depuis le réseau en récupérant une image de système d'exploitation qui se trouve sur votre serveur (Pour commencer: Debian Netinstall, PXEKnife, SysterescuCD, HDT, Knoppix et d'autres à venir)

Installation

# aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Le serveur dhcp est obligatoire, même si vous prévoyez d'utiliser un autre dhcp déjà présent sur votre réseau. Auquel cas il faudra l'enlever immédiatement - ce serait bête d'avoir deux dhcp sur votre réseau ;-)

# aptitude remove --purge dhcp3-server

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :

#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

# netstat -uap | grep tftp 
udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d'aller plus loin, le "tftp" ne tourne pas...

Configuration

PXE

Copie des fichiers dont nous aurons besoin pour le PXE :

Du répertoire /usr/lib/syslinux

chain.c32
mboot.c32
menu.c32
pxelinux.0
reboot.c32
gpxelinux.0
memdisk
vesamenu.c32

Vers /var/lib/tftpboot

cp /usr/lib/syslinux/chain.c32 /var/lib/tftpboot/
etc...

Un seul fichier de configuration pour pxe : /etc/pxe.conf Modifiez l'interface et l'adresse IP pour que ça colle à votre configuration. Je n'ai pas touché au reste :

# which interface to use
interface=eth0
default_address=192.168.0.1

DHCP

DHCP est un protocole qui permet d'attribuer dynamiquement une adresse IP à un système informatique qui se connecte au réseau.

Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n'est pas le but... Quelques paramètres importants : L'adresse réseau avec le netmask approprié; Un intervalle d'adresses disponibles; La durée des "baux".

Sauvegarde préalable à toute modification :

# cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig[/code]

Pour un serveur déja configuré, il suffit d'ajouter les 2 lignes suivantes :

filename "gpxelinux.0";
next-server 192.168.0.1;

Vous avez le choix entre deux amorces : pxelinux.0 ou gpxelinux.0 J'ai choisi gpxelinux.0 qui est plus complète et offre la possibilité d'entrer quelques commandes avant le menu du PXE. A vous de choisir.

Le premier fichier "gpxelinux.0" est l'amorce réseau. "next-server" est l'adresse où la machine qui demande à booter va chercher le pxelinux.O; Rien ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

# nano /etc/dhcp3/dhcpd.conf
# Private Network
subnet 192.168.0.0 netmask 255.255.255.0 {
        filename "gpxelinux.0";
        next-server 192.168.0.1;
        deny unknown-clients;
        option ntp-servers 192.168.0.1;
        option time-servers 192.168.0.1;
        option domain-name-servers 195.99.65.220 , 195.99.66.220;
        option domain-name "isalo.org";
        option broadcast-address 192.168.0.255;
        option subnet-mask 255.255.255.0;
        option routers 192.168.0.1;
pool {
                deny unknown-clients;
                range 192.168.0.2 192.168.0.104;
                }
[...]
bla-bla

Vous remarquerez l'option "deny unknown-clients;". Supprimez pour commencer si vous n'avez pas déclaré vos clients "connus" comme ceci :

# debianne
host debianne.beronono.com {
hardware ethernet 00:0d:61:94:43:f0;
fixed-address 192.168.0.5;
}

Netboot Debian

Vous trouverez toutes les images nécessaires ICI

Récupérez les "netboot" des distributions qui vous intéressent :

wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz
wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
etc...

Le répertoire par défaut de tftp (créé à l'installation) est /var/lib/tftpboot c'est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot

# mkdir /var/lib/tftpboot/images
# mkdir /var/lib/tftpboot/images/debian
# mkdir /var/lib/tftpboot/images/debian/old-stable
# mkdir /var/lib/tftpboot/images/debian/old-stable/i386
# mkdir /var/lib/tftpboot/images/debian/old-stable/amd64[/code]

etc...

Décompressez les répertoires amd64 ou i386 qui se trouvent dans les archives netboot.tar.gz vers /var/lib/tftpboot/images/debian/old-stable ou stable, testing, unstable...

Créez et configurez le fichier "/pxelinux.cfg/default"

# mkdir /var/lib/tftpboot/pxelinux.cfg/

Création du fichier default (c'est lui qui contient les informations sur vos différentes netboot)

# nano /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
noescape 1
timeout 300

label 1
 MENU LABEL Etch i386
 kernel images/debian/old-stable/i386/linux
 append vga=normal initrd=images/debian/old-stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

label 2
 MENU LABEL Etch amd64
 kernel images/debian/old-stable/amd64/linux
 append vga=normal initrd=images/debian/old-stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

label 3
 MENU LABEL Lenny i386
 kernel images/debian/stable/i386/linux
 append vga=normal initrd=images/debian/stable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --

label 4
 MENU LABEL Lenny amd64
 kernel images/debian/stable/amd64/linux
 append vga=normal initrd=images/debian/stable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

label 5
 MENU LABEL Squeeze i386
 kernel images/debian/testing/i386/linux
 append vga=normal initrd=images/debian/testing/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw  --

label 7
 MENU LABEL Unstable i386
 kernel images/debian/unstable/i386/linux
 append vga=normal initrd=images/debian/unstable/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

label 8
 MENU LABEL Unstable amd64
 kernel images/debian/unstable/amd64/linux
 append vga=normal initrd=images/debian/unstable/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --

Le menu ci-dessus nous donnera le résultat suivant :

C'est déjà pas mal, mais nous pouvons l'améliorer...

Amélioration du menu

Avant de poursuivre, et pour ne pas être noyés sous les entrées, nous allons améliorer un peu le menu...

Commençons pas renommer le menu /var/lib/tftpboot/pxelinux.cfg/default en /var/lib/tftpboot/debian.conf

Editons le fichier /var/lib/tftpboot/pxelinux.cfg/default pour y mettre ceci (Explication dessous)

default vesamenu.c32
prompt 0
kbdmap french.kbd
noescape 1
timeout 300

label bootlocal
 menu default
 menu label Local boot
 localboot 0

# Vers le sous-menu Debian netboot
label DebianNetboot
 menu label Debian Netboot --->
 kernel menu.c32
 append debian.conf

label reboot
  menu label Reboot
  kernel reboot.c32

Ce menu nous donne les avantages suivants : Clavier en Français en cas d'édition du menu; Meilleur rendu; Possibilité de booter sur le premier disque dur (par défaut); Ouvrir un sous-menu (ici vers debian.conf); Rebooter la machine.

Nous ajouterons l'entrée suivante au sous-menu /var/lib/tftpboot/debian.conf qui nous permettra de revenir au menu principal :

# Retour au menu principal
label rootmenu
 MENU LABEL <---- Menu principal
 kernel vesamenu.c32
 append /pxelinux.cfg/default

Vous avez la base, tout ceci est paramétrable à l'infini...

Le menu avec un clavier Français

http://thefredsite.free.fr/linux.php?id=56

Le fichier french.kbd provient de Knoppix

Ajouter cette entrée dans le fichier /var/lib/tftpboot/pxelinux.cfg/default

KBDMAP french.kbd

RescueSystemCd

  1. Obtenir la dernière image iso ici : http://sourceforge.net/projects/systemr ... x86/1.3.1/
  2. Monter l'image iso
  3. Créer le répertoire qui va recevoir les fichiers nécessaires

mkdir /var/lib/tftpboot/images/systemrescue

4) Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)

/var/lib/tftpboot/images/systemrescue vdir
total 214072
-r-xr-xr-x 1 laurent root  13392987 oct  4 15:58 initram.igz
-r-xr-xr-x 1 laurent root   3842224 oct  4 15:47 rescuecd
-r-xr-xr-x 1 laurent root 201736192 oct  4 15:57 sysrcd.dat
-r-xr-xr-x 1 laurent root        45 oct  4 15:58 sysrcd.md5

5) Ajouter au menu de démarrage les lignes suivantes (nano /var/lib/tftpboot/pxelinux.cfg) - En changeant l'IP en fonction de votre configuration évidemment...

label systemrescue
 menu label System Rescue
 kernel images/systemrescue/isolinux/rescuecd
 append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
 initrd images/systemrescue/isolinux/initram.igz

pxeknife

Petit utilitaire très complet, à télécharger ici : http://pxeknife.erebor.org/

La dernière version (ce 2 août 2010) http://pxeknife.erebor.org/releases/pxeknife-0.0.2.tar.gz

Afin de na pas avoir à refaire les 19 fichiers de "conf" pour refléter votre installation, décompressez l'archive dans /var/lib/tftpboot/pxeknife...

Ajoutez cette entrée à /var/lib/tftpboot/pxelinux.cfg/default

#load pxe knife
LABEL pxeknife
 MENU LABEL PXE Knife --->
 kernel menu.c32
 append pxeknife/pxeknife.conf

Super Grub Disk !!!

Je vous laisse découvrir l'intégralité des menus pas vous-même ^^

hdt

Un autre utilitaire très intéressant : http://www.hdt-project.org/wiki.

HDT (Hardware Detection Tool) est un utilitaire de détection du matériel

Téléchargement de la dernière image

$ wget http://www.hdt-project.org/raw-attachment/wiki/hdt-0.3.6/hdt-0.3.6.img

Il suffit de copier l'image dans le répertoire /var/lib/tftpboot/images Et d'ajouter les lignes suivantes à notre menu (default)

label hdt
 menu label Hardware Detection Tool Floppy
 kernel memdisk
 initrd images/hdt-0.3.6.img

Une option "reboot" et démarrage sur le disque dur

Pour démarrer sur le premier disque dur, ajoutez en début de menu :

label bootlocal
 MENU DEFAULT
 MENU LABEL Local Boot
 localboot 0

Pour avoir la possibilité de redémarrer, ajoutez en fin de menu :

label reboot
 menu label Reboot
 kernel reboot.c32


Knoppix 511 et 620

Pour utiliser les images ISO de Knoppix, nous allons avoir besoin d'un serveur NFS :

# apt-get install nfs-kernel-server

Pour autoriser notre réseau à utiliser le serveur NFS, ajoutons la ligne suivante au fichier /etc/hosts.allow

mountd: 192.168.0.

Créez les répertoires qui vont accueillir les CD

# mkdir /mnt/sdb1/knoppix511
# mkdir /mnt/sdb1/knoppix620

Montez les CD et copiez leur contenu dans les répertoires que vous venez de créer

Récuperer les fichiers "amorce"

  1. Démarrez sur votre CD/ISO knoppix.
  2. Ouvrez une console, et tapez
netcardconfig

Une boite de dialogue s'ouvre, répondez : - obtain address automatically

Puis Code: knoppix-terminalserver

Une nouvelle boite de dialogue s'ouvre, répondez : - ok - setup configure and restart - Laissez le "range" d'adresse proposées - Il vous propose ensuite une liste de drivers de cartes réseau. Choisissez celles qui conviennent à votre réseau (ou toutes, ce que j'ai fait par prudence...) - décochez "secure: Disable root access on client" - ça peut vous servir, et il semblerait que ça pose des problèmes si c'est laissé coché... - Laissez vide à la question suivante à moins que vous ne connaissiez exactement les paramètres vidéo de vos clients... - The Knoppix-terminal server will now be started = YES

Cela va démarrer un certain nombre de services réseaux, dont tftp... Et créer les fichier dont nous avons besoin pour notre PXE... Récupérez les fichiers suivants qui se trouvent dans le répertoire /tftpboot/ de votre Knoppix : miniroot.gz et vmlinuz

Vous copierez ces fichiers dans les répertoires que vous allez créer /var/lib/tftpboot/images/knoppix/511 et 620

Donc vous devriez avoir ceci dans chaque répertoire

miniroot.gz, vmlinuz

Ajoutez les partages NFS au fichier /etc/exports (en lecture seule...)

/mnt/sdb1/knoppix511 *(ro,no_subtree_check,no_root_squash)
/mnt/sdb1/knoppix620 *(ro,no_subtree_check,no_root_squash)

Redémarrez le serveur NFS

# /etc/init.d/nfs-kernel-server restart

Ajoutez les entrées dans votre menu "default" :

label Knoppix511
 MENU LABEL Knoppix 5.1.1
 kernel images/knoppix/511/vmlinuz
 append nfsdir=192.168.0.17:/mnt/sdb1/knoppix511 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/511/miniroot.gz quiet BOOT_IMAGE=knoppix

label Knoppix620
 MENU LABEL Knoppix 6.2.0
 kernel images/knoppix/620/vmlinuz
 append nfsdir=192.168.0.17:/mnt/sdb1/knoppix620 nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce vga=normal initrd=images/knoppix/620/miniroot.gz quiet BOOT_IMAGE=knoppix

D'autres entrées...

Test...

Activez le démarrage à partir du réseau dans le bios (pensez à le désactiver une fois l'installation terminée...)

Tout ceci (les menus, les images amorçables...) sont paramétrables à l'infini, à vous de jouer !

Problèmes connus

tftpd-hpa et l'IPv6

Si vous avez desactivé l'IPv6 dans votre kernel, tftpd-hpa qui est compilé pour démarrer sur IPv4 et IPv6 ne démarrera pas. Solution: re-configurer tftpd-hpa pour qu'il ne démarre que sur IPv4:

# dpkg-reconfigure tftpd-hpa

PXE ne s'arrête pas convenablement

Dans la version pxe/1.4.2-7 un bug "normal" subsiste (moi je le considère plutôt comme important, mais ce n'est pas moi qui décide...) : Quand on l'arrête, PXE tourne en boucle à l'infini en attendant que le fichier pid disparaisse

Contournement: Modifier le fichier /etc/init.d/pxe tel que:

Remplacer ceci:

wait_no_pid()
{
       while [ -e "$PID" ]
       do
               sleep 1
       done
}

Par cela:

wait_no_pid()
  {
          local pid=$(cat "${PID}" 2>/dev/null) || return 0
          local exe=$(readlink "/proc/${pid}/exe" 2>/dev/null) || :
          while [ "${exe}" = "${DAEMON}" ]
          do
                  sleep 1
                  pid=$(cat "${PID}" 2>/dev/null) || return 0
                  exe=$(readlink "/proc/${pid}/exe" 2>/dev/null) || :
          done
          rm -f "${PID}"
  }


Lol 3 août 2010 à 03:46 (UTC)

Mots cléf : Debian PXE Netboot SystemRescueCd pxeknife HDT Knoppix