Modifications entre les versions 4 et 5
Version 4 à la date du 2008-02-29 09:13:17
Taille: 2347
Éditeur: SergeGoma
Commentaire:
Version 5 à la date du 2009-05-28 15:16:44
Taille: 4707
Éditeur: ThomasNoël
Commentaire: remise à jour de cette page... reste perfectible...
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
== PXE - Pre-Execution Environment == = PXE : Pre-Execution Environment =
Ligne 3: Ligne 3:
PXE est un chargeur de boot qui permet de charger une image via TFTP.
La contrainte majeure de pouvoir booter la machine via PXE soit au niveau de la ROM de sa carte réseau, soit au niveau du BIOS, voire même grâce à un outil de boot depuis une session lancé DOS.
PXE est un système de boot réseau, disponible sur quasiment toutes les machines modernes possédant une carte réseau Ethernet. Son fonctionnement est simple :
 * requête DHCP pour obtenir une adresse IP et un nom de fichier à charger
 * téléchargement d'une image PXE par TFTP (en général ''pxelinux.0'')
 * lancement de cette image
Ligne 6: Ligne 8:
On peut, via TFTP, télécharger une image de boot PXE; une fois en mémoire, cette image PXE permet de booter de manière sélective plusieurs images (locales, ou distantes), notamment celle présente sur le serveur TFTP. L'image ''pxelinux.0'', fournie le paquet `syslinux` permet de booter de manière sélective plusieurs systèmes (locales, ou distantes), notamment celles présentes sur le serveur TFTP. La configuration se situe dans le répertoire ''pxelinux.cfg/'' du serveur TFTP.
Ligne 8: Ligne 10:
Nota bene: les procédures illustrées ici ont été testées pour une distribution Debian Etch = Mise en place sur Debian Lenny =
Ligne 10: Ligne 12:
 * installer un serveur TFTP (eg. atftp) et syslinux pour un code de démarrage PXE
{{{
# apt-get install atftpd syslinux
Installer un serveur TFTP (`atftp`) et `syslinux` qui contient un code de démarrage PXE :
  {{{
# aptitude install atftpd syslinux
Ligne 14: Ligne 16:
 * vérifier l'existence du répertoire `/tftpboot` (le créer au besoin); y copier le fichier '''pxelinux.0''' :
{{{

V
érifier l'existence du répertoire `/tftpboot` (le créer au besoin) ; y copier le fichier `pxelinux.0` :
  {{{
# mkdir /tftpboot
Ligne 18: Ligne 22:
 * éditer le fichier de configuration du serveur dhcp `/etc/dhcp/dhcpd.conf` :
{{{

E
diter le fichier de configuration du serveur dhcp `/etc/dhcp/dhcpd.conf` en y ajoutant les options '''next-server''' et '''filename''', comme ici :
  {{{
# extrait de /etc/dhcp/dhcpd.conf, pour exemple :

authoritative;
Ligne 22: Ligne 30:
option domain-name "mon-domaine.com";
option domain-name-servers ns.mon-domaine.com;
authoritative;
option domain-name "xx.auf.org";
option domain-name-servers ns.xx.auf.org;
Ligne 26: Ligne 34:
#ici, on déclare le nom du fichier à charger en mémoire par les clients via TFTP
   filename "pxelinux.0";
   next-server 192.168.1.1;
   option domain-name "domain.net";
Ligne 32: Ligne 37:
   option domain-name-servers ns.domain.net;
Ligne 35: Ligne 39:

   # serveur TFTP qui propose l'image PXE
   next-server 192.168.1.1;
   # nom du fichier à charger en mémoire par les clients via TFTP
   filename "pxelinux.0";
Ligne 38: Ligne 47:
 * redémarrer le serveur dhcp
{{{
#/etc/init.d/dhcp3-server restart
Créer la configuration par défaut de pxelinux.0 dans l'arborescence TFTP, `/tftpboot/pxelinux.cfg/default` (si besoin, créer le répertoire `/tftpboot/pxelinux.cfg/`) :
  {{{
# exemple de configuation de pxelinux.0 par défaut
# extrait du fichier /tftpboot/pxelinux.cfg/default
# Documentation complète dans /usr/share/doc/syslinux/pxelinux.txt.gz
DEFAULT disque
PROMPT 1
TIMEOUT 0

# boot disque local
label disque
  localboot 0
  append -

# boot UDPcast
label udpcast
  kernel linux-udpcast
  append load_ramdisk=1 initrd=initrd-udpcast root=/dev/ram0 auto=yes lang=FR kbmap=FR netmodule=AUTO dhcp=yes enableDiskmodule=no diskmodparm= disk=/dev/sda compr=none netmodparm= port=9000 udpcparam=

# boot installateur Jaunty
label jaunty
  kernel ubuntu-installer-jaunty/i386/linux
  append vga=normal initrd=ubuntu-installer-jaunty/i386/initrd.gz --
Ligne 42: Ligne 71:
 * créer le répertoire de configuration de TFTP `/tftpboot/pxelinux.cfg/`
 * éditer le fichier de configuration `/tftpboot/pxelinux.cfg/default` :
{{{
default linux
label linux
  kernel linux
  append load_ramdisk=1 initrd=initrd root=01:00
  ipappend 1

Il faut évidemment disposer des fichiers kernel et initrd correspondant dans `/tfptboot`.

C'est tout...

= Applications classiques =

== Installateur réseau Debian/Ubuntu (netboot) ==

Le principe général est de récupérer le '''noyau''' (fichier en général appelé "linux") et le logiciel d'installation compris dans un disque d'initialisation '''initrd''' (init ram disk). Ces deux fichiers sont présents dans des archives nommées `netboot.tar.gz` :

Par exemple :
 * Pour Debian Lenny i386 : http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz
 * Pour Ubuntu Jaunty i386 : http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/current/images/netboot/netboot.tar.gz

On prend ce qu'il faut dans le `netboot.tar.gz` et on le copie dans le `/tftpboot`. Par exemple pour Debian Lenny i386 :
 {{{
# cd /tmp
# wget http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz
# tar zxf netboot.tar.gz
# mkdir /tftpboot/debian-installer-lenny
# mv /tmp/debian-installer/i386 /tftpboot/debian-installer-lenny/
Ligne 51: Ligne 94:
 * L'intérêt est d'avoir plusieurs label suivant vos besoins; pour dupliquer un poste dans une salle, vous pouvez avoir un label pour '''envoyer''' et un label pour '''recevoir''', plus d'info sur [[UDPCast]]. Ou bien vous pouvez aussi, pour vos dépannages, avoir un label '''sysrcd''' qui vous permettra d'utiliser [[SysRescue]]
 * documentation : http://syslinux.zytor.com/pxe.php

Puis on indique les chemins au niveau de `pxelinux.cfg/default` :
 {{{
# extrait de /tftpboot/pxelinux.cfg/default pour installeur Debian
label lenny
  kernel debian-installer-lenny/i386/linux
  append vga=normal initrd=debian-installer-lenny/i386/initrd.gz --
}}}

== Lancement de UDPCast (duplication de machines) ==

Voir la page [[UDPCast]]

== Booter MSDOS en PXE (objectif : flasher un BIOS) ==

Copier l'image de la disquette dans `/tftpboot`. Vous trouverez de nombreuses images sur http://www.veder.com/nwdsk/ (l'image la plus classique est `msubcd.img`).

Pour démarrage une disquette, utiliser le système `memdisk` fourni avec `syslinux` :
  {{{
# cp /usr/lib/syslinux/memdisk /tftpboot
}}}

Ajouter une section dans le fichier `pxelinux.cfg/default` :
  {{{
# extrait de /tftpboot/pxelinux.cfg/default
LABEL dos
 kernel memdisk/memdisk
 append initrd=memdisk/msubcd.img
}}}

PXE : Pre-Execution Environment

PXE est un système de boot réseau, disponible sur quasiment toutes les machines modernes possédant une carte réseau Ethernet. Son fonctionnement est simple :

  • requête DHCP pour obtenir une adresse IP et un nom de fichier à charger
  • téléchargement d'une image PXE par TFTP (en général pxelinux.0)

  • lancement de cette image

L'image pxelinux.0, fournie le paquet syslinux permet de booter de manière sélective plusieurs systèmes (locales, ou distantes), notamment celles présentes sur le serveur TFTP. La configuration se situe dans le répertoire pxelinux.cfg/ du serveur TFTP.

Mise en place sur Debian Lenny

Installer un serveur TFTP (atftp) et syslinux qui contient un code de démarrage PXE :

  • # aptitude install atftpd syslinux

Vérifier l'existence du répertoire /tftpboot (le créer au besoin) ; y copier le fichier pxelinux.0 :

  • # mkdir /tftpboot
    # cp -a /usr/lib/syslinux/pxelinux.0 /tftpboot/

Editer le fichier de configuration du serveur dhcp /etc/dhcp/dhcpd.conf en y ajoutant les options next-server et filename, comme ici :

  • # extrait de /etc/dhcp/dhcpd.conf, pour exemple :
    
    authoritative;
    default-lease-time 600;
    max-lease-time 7200;
    option domain-name "xx.auf.org";
    option domain-name-servers ns.xx.auf.org;
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
    
       option subnet-mask 255.255.255.0;
       option broadcast-address 192.168.1.255;
       option routers gw.domain.net;
       range 192.168.1.100 192.168.1.200;
    
       # serveur TFTP qui propose l'image PXE   
       next-server 192.168.1.1;
       # nom du fichier à charger en mémoire par les clients via TFTP
       filename "pxelinux.0";
    }

Créer la configuration par défaut de pxelinux.0 dans l'arborescence TFTP, /tftpboot/pxelinux.cfg/default (si besoin, créer le répertoire /tftpboot/pxelinux.cfg/) :

  • # exemple de configuation de pxelinux.0 par défaut
    # extrait du fichier /tftpboot/pxelinux.cfg/default
    # Documentation complète dans /usr/share/doc/syslinux/pxelinux.txt.gz
    DEFAULT disque
    PROMPT 1
    TIMEOUT 0
    
    # boot disque local
    label disque
      localboot 0
      append -
    
    # boot UDPcast
    label udpcast
      kernel linux-udpcast
      append load_ramdisk=1 initrd=initrd-udpcast root=/dev/ram0 auto=yes lang=FR kbmap=FR netmodule=AUTO dhcp=yes enableDiskmodule=no diskmodparm= disk=/dev/sda compr=none netmodparm= port=9000 udpcparam=
    
    # boot installateur Jaunty
    label jaunty
      kernel ubuntu-installer-jaunty/i386/linux
      append vga=normal initrd=ubuntu-installer-jaunty/i386/initrd.gz --

Il faut évidemment disposer des fichiers kernel et initrd correspondant dans /tfptboot.

C'est tout...

Applications classiques

Installateur réseau Debian/Ubuntu (netboot)

Le principe général est de récupérer le noyau (fichier en général appelé "linux") et le logiciel d'installation compris dans un disque d'initialisation initrd (init ram disk). Ces deux fichiers sont présents dans des archives nommées netboot.tar.gz :

Par exemple :

On prend ce qu'il faut dans le netboot.tar.gz et on le copie dans le /tftpboot. Par exemple pour Debian Lenny i386 :

  • # cd /tmp
    # wget http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/netboot.tar.gz
    # tar zxf netboot.tar.gz
    # mkdir /tftpboot/debian-installer-lenny
    # mv /tmp/debian-installer/i386 /tftpboot/debian-installer-lenny/

Puis on indique les chemins au niveau de pxelinux.cfg/default :

  • # extrait de /tftpboot/pxelinux.cfg/default pour installeur Debian
    label lenny
      kernel debian-installer-lenny/i386/linux
      append vga=normal initrd=debian-installer-lenny/i386/initrd.gz --

Lancement de UDPCast (duplication de machines)

Voir la page UDPCast

Booter MSDOS en PXE (objectif : flasher un BIOS)

Copier l'image de la disquette dans /tftpboot. Vous trouverez de nombreuses images sur http://www.veder.com/nwdsk/ (l'image la plus classique est msubcd.img).

Pour démarrage une disquette, utiliser le système memdisk fourni avec syslinux :

  • # cp /usr/lib/syslinux/memdisk /tftpboot

Ajouter une section dans le fichier pxelinux.cfg/default :

  • # extrait de /tftpboot/pxelinux.cfg/default
    LABEL dos
            kernel memdisk/memdisk
            append initrd=memdisk/msubcd.img

Ubuntu/PXE (dernière édition le 2010-09-29 14:57:52 par WillyManga)