Tuto complet et mis à jour (août 2010) sur le WIki : isalo.org/wiki.debian-fr/index.php/PXE
Discussion ICI viewtopic.php?f=1&t=29529&start=0
Pour m’amuser… et pour pouvoir installer une Debian sur une machine sans CD à partir de mon réseau… mode d’emploi !
Sur la machine qui va faire office de serveur :
… Nous allons avoir besoin des paquets suivants
█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux[/code]
Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !
Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :
[code]#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"[/code]
Après l'installation, une petite vérification... tftp tourne-t-il bien ?
[code]█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ 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…
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
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 :
█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig
Pour un serveur déja configuré, ajout de 2 lignes (en gras)
filename “pxelinux.0”;
next-server 192.168.0.1;
Le premier fichier “pxelinux.0” est l’amorce réseau.
“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.
[code]█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ nano /etc/dhcp3/dhcpd.conf
Private Network
subnet 192.168.0.0 netmask 255.255.255.0 {
filename “pxelinux.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 “beronono.com”;
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[/code]
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;
}
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/debian
mkdir /var/lib/tftpboot/debian/oldstable
mkdir /var/lib/tftpboot/debian/oldstable/i386
mkdir /var/lib/tftpboot/debian/oldstable/amd64
etc…
Décompressez les netboot.tar.gz dans les répertoires adhoc
Récupérez l’indispensable fichier pxelinux.0
Créez et configurez le fichier “/pxelinux.cfg/default”
[code]mkdir /var/lib/tftpboot/pxelinux.cfg/
nano /var/lib/tftpboot/pxelinux.cfg/default
include menu.lst
prompt 0
timeout 0
[/code]
Création du fichier menu.lst (c’est lui qui contient les information sur vos différentes netboot)
[code]nano /var/lib/tftpboot/pxelinux.cfg/menu.lst
timeout 300
prompt 1
display f1.msg
F1 f1.msg
F2 f2.msg
label 1
kernel debian/oldstable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/oldstable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 2
kernel debian/oldstable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/oldstable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 3
kernel debian/stable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/stable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 4
kernel debian/stable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/stable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 5
kernel debian/testing/i386/debian-installer/i386/linux
append vga=normal initrd=debian/testing/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 6
kernel debian/testing/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/testing/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 7
kernel debian/unstable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/unstable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 8
kernel debian/unstable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/unstable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
[/code]
Création d’un menu pour choisir l’image à démarrer :
Et comme je suis un peu mégalo…
Attention ! Mégalo mais raisonnable… Pensez que vous n’installerez pas toujours sur un wild-screen…
[code]nano /var/lib/tftpboot/f1.msg
^^ lol’s installer ^^
----| Boot Options |-----
| | /++++ .++++.
| 1. Etch-i386 | .NMMMh sMMMm-
| 2. Etch-amd64 | oMMMM/ .dMMMy| | .dMMMd.
-:::-. /MMMN/
| 3. Lenny-i386 | :NMMMs .+ymNNMMMMNmy/hMMMm
| 4. Lenny-amd64 | sMMMN: -yNMMMNmddmMMMMMd- .NMMMs
| | NMMMd
oNMMMd/.-yMMMMd. oMMMM-
| 5. Squeeze-i386 | /MMMM+ yMMMN/yMMMM+
dMMMh
| 6. Squeeze-amd64 | hMMMN. /MMMMo sMMMN/ :NMMMo
| | -mMMMyyMMMM: -mMMMd.
sMMMm-
| 7. Sid-i386 | oMMMN/ sMMMMd+NMMMm. .mMMMh
| 8. Sid-amd64 | .dMMMMmmddmmmydMMMMms/::+yNMMMNo
/MMMM/ | | :MMMMMMMMMMMMs
omMMMMMMMMMMNdo. hMMMN------------------------- :ooooooooooo+-
:oydddhys/.+o+o/
Main | Help
Default image will boot in 30 seconds…[/code]
Test…
Activez le démarrage à partir du réseau dans le bios, et “roule ma poule” ! (heu… pensez à désactiver une fois l’installation terminée…)
Voilà, et comme ça marche, photo à l’appui :[attachment=0]lol.jpeg[/attachment]
Tout ceci (les menus, les images amorçables…) sont paramétrables à l’infini, à vous de jouer !
Vous avez aimé ?
Merci de vos commentaires.
Je “travaille” déjà sur une version plus sophistiquée avec splash, images Debian personnalisées, rescues-disk accessibles par pxe…
Edit : Premier complément Ajouter SystemRescueCD à son PXE
Edit2 : Ajout de Knoppix 511 et 601 !
Edit3 : Une belle amélioration visuelle à votre menu + clavier en français : viewtopic.php?p=232939#p232939
Edit 4 : Merci à Epy qui m’a permis de corriger quelques erreurs et imprécisions : viewtopic.php?f=3&t=24069&start=0
Discussion ICI viewtopic.php?f=1&t=29529&start=0