Pourquoi ce post sur PXE ? Il existe effectivement des tas de tutoriels sur PXE, je le sais il m'en a fallu au moins quinze pour réussir à faire tourner une config serveur PXE qui au final est extremement simple... cela n'aurait pas dû me demander autant de lectures/temps/gros mots...
Donc au moins ici je poste ma config qui marche et ca sera ptet cinq tutoriels de gagnés pour toi lecteur qui cherche à installer PXE ;)
La théorie vite fait (bien fait ?) :
Un serveur PXE consiste en fait en deux services serveur distincts :
Un serveur DHCP et un serveur TFTP
Le serveur DHCP (paquet dhcp3-server) distribuera les adresses IP aux clients PXE (et aux autres d'ailleurs), il fournira aux clients PXE le nom du système d'exploitation à charger par le réseau.
Le serveur TFTP (paquet atftpd) hébergera et tiendra à disposition des clients PXE, les systèmes d'exploitation à charger via le réseau. On souhaite que la racine du serveur TFTP soit dans /home/tftpboot.
Syslinux (paquet syslinux) est un « bootloader » linux, également capable de charger d'autres OS. Il est souvent utilisé sur les cdrom, disques usb, disquettes et via PXE donc ...
La pratique :
Pour changer on va bosser sous Debian/Ubuntu ;) . Pour installer tout ce qu'il faut :
# apt-get install syslinux dhcp3-server atftpd pxe
Mon serveur PXE a pour IP 172.16.0.1 (c'est aussi ma passerelle), on installera la racine du serveur tftp dans /home/tftpboot, atftpd nous demande si il faut s'installer via inet.d, j'ai répondu NON. DHCP ne démarrera pas à sa première tentative et c'est normal, il faut le configurer convenablement avant via son fichier de conf ...
Voici les fichiers de conf :
/etc/pxe.conf
# which interface to use
interface=eth0
default_address=172.16.0.1# the multicast ip address to listen on
multicast_address=224.0.1.2# mtftp info
mtftp_address=224.1.5.1
mtftp_client_port=1758
mtftp_server_port=1759# the port to listen on
listen_port=4011# enable multicast?
use_multicast=1
# enable broadcast?
use_broadcast=0# user prompt
prompt=Press F8 to view menu ...
prompt_timeout=30# service=
, , , , # tftpd base dir
tftpdbase=/home/tftpboot# domain name
domain=localnet
/etc/dhcp3/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;# option definitions common to all supported networks...
option domain-name "localnet";
option domain-name-servers 172.16.0.1;server-identifier 172.16.0.1;
next-server 172.16.0.1;
option root-path "/home/tftpboot/";
filename "/home/tftpboot/pxelinux.0";default-lease-time 36000;
max-lease-time 72000;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.# This is a very basic subnet declaration.
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.8.100 172.16.8.250;
option routers 172.16.0.1;
}
/etc/default/atftpd
USE_INETD=false
OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.200-250 --mcast-ttl 1 --maxthread 100 --verbose=5 /home/tftpboot"
Que mettre à la racine du serveur tftp ?
Memdisk et pxelinux.0 que l'on trouvera sur notre machine suite à l'installation de syslinux.
Des images de systèmes d'exploitation (pas trop gros), par exemple une image d'une disquette de boot DOS générée avec la commande :
# dd if=/dev/floppy of=monimage.img
Quelques commandes pour vous faire voir ce qu'il y a à la racine du serveur tftp :
root@nono /home/tftpboot # ls -lh
total 53M
drwxr-sr-x 3 root staff 1,0K 2006-01-24 08:07 debian-installer
-rw-r--r-- 1 root staff 50M 2006-01-25 09:29 dsl21.img
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f1
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f2
-rw-r--r-- 1 root staff 3 2006-01-25 08:15 f3
-rw-r--r-- 1 root staff 23K 2006-01-23 11:49 memdisk
-rw-r--r-- 1 root staff 445 2006-01-25 08:19 messages
-rw-r--r-- 1 root staff 1,5M 2006-01-24 09:05 netboot56.img
-rw-r--r-- 1 root staff 1,5M 2006-01-24 08:28 netboot.img
-rw-r--r-- 1 root staff 12K 2006-01-23 11:12 pxelinux.0
drwxr-sr-x 2 root staff 1,0K 2006-01-23 11:32 pxelinux.cfg
drwxr-sr-x 3 root staff 1,0K 2006-01-24 09:11 ubuntu-installer
root@nono /home/tftpboot # cd pxelinux.cfg
root@nono /home/tftpboot/pxelinux.cfg # cat default
PROMPT 1
DEFAULT 1
DISPLAY messages
F1 f1
F2 f2
F3 f3
TIMEOUT 300
label 0
LOCALBOOT 0
label 1
KERNEL memdisk keeppxe
APPEND initrd=netboot56.img
label 2
KERNEL memdisk
APPEND initrd=netboot.img
label 3
kernel debian-installer/i386/linux
append vga=normal initrd=debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw --
label 4
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw --
root@nono /home/tftpboot/pxelinux.cfg # cat ../messages
=========================== Menu ===========================
0 - local
1 - netboot ( netbootdisk 5.6 )
2 - netboot ( netboot fred )
3 - debian installer
(mirror : deb http://192.168.1.21/debian/ sarge main contrib non-free)
4 - ubuntu installer
(mirror : deb http://192.168.1.21/ubuntu/ breezy main)
===========================================================
Les fichiers texte messages, f1, f2, f3 ... s'afficheront sur les clients respectivement au démarrage du boot PXE ou en pressant la touche correspondante.
Le fichier de démarrage « pxelinux.cfg/default » peut gérer un menu, l'utilisateur choisira l'image à booter, les entrées de menu sont définies par les « labels »
Certains systèmes d'exploitation comme debian ou ubuntu fournissent des fichiers initrd.gz permettant de lancer une installation via PXE.
Les scripts de démarrage pour tout ca :
# /etc/init.d/atftpd start|stop|restart
# /etc/init.d/dhcp3-server start|stop|restart
# /etc/init.d/pxe start|stop|restart
Certifié fonctionnel par Fred.
[ Ajouter un commentaire ] ( ( 7 vues ) ) | [ 0 Trackbacks ] | Lien permanent

Calendrier



