L'amorçage PXE 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 un serveur.
L'image ainsi récupérée peut être le système d'exploitation brut ou bien le système d'exploitation personnalisé avec des composantes logicielles (suite bureautique, utilitaires, packs de sécurité, scripts, etc…).
Une fois cette image « pré-chargée », elle peut être installée sur la machine qui a été amorcée en PXE.
Il faut vérifier dans le bios de la machine à installer que le boot par la carte réseau soit autorisé. Il faut ensuite brancher la machine sur un port désauthentifié dans le VLAN 999 et booter.
Un nouveau VLAN a été créé : le 999. Voici un plan d'adressage :
routeur | npasserelle999 | serveur pxe |
---|---|---|
192.168.150.1 | 192.168.150.2 | 192.168.150.3 |
192.168.103.172 | 192.168.102.196 |
Le serveur DHCP de la vm pxe donne les adresses IP dans {192.168.150.10, 192.168.150.250}
Pour pouvoir faire fonctionner le PXE, nous avons besoin de deux serveurs, le serveur de PXE à proprement parler, comprenant un serveur dhcp, tftp et nfs, et un serveur faisant office de passerelle pour télécharger les paquets. Le premier est idéalement monté sur une openvz, le second sur une kvm.
Pour la mise en place des images, rendez-vous ici
La passerelle actuelle npasserelle999 a pour IP 192.168.103.172.
Dans une kvm ayant une interface dans le Vlan 40 et une dans le Vlan 999, il faut d'abord faire du NAT pour que les machines en cours d'installation puissent avoir accès aux dépôts. Pour cela, faites ce qui suit :
# iptables -F # iptables -X
Cela permet d'effacer les anciennes règles iptables. Ensuite :
echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE /sbin/iptables -A FORWARD -i eth1 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT /sbin/iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT
# chmod +x script.sh # ./script.sh
N'oubliez pas de sauvegarder vos règles pour qu'elles soient appliquées à chaque redémarrage :
# iptables-save > /etc/iptables-save # iptables-restore < /etc/iptables-save # cette ligne est à mettre dans le rc.local
Et votre machine agira comme passerelle.
Avec le serveur tftp utilisé ici, tous les fichiers nécessaires pour le PXE se trouvent dans le répertoire /var/lib/tftpboot du serveur 192.168.103.173
Il faut maintenant installer le DHCP sur une autre vm (openvz).
# apt-get install dhcp3-server
INTERFACES="[interface dans le vlan 999]"
option domain-name-servers 157.159.40.55, 157.159.40.54; option domain-name "minet.net"; option architecture-type code 93 = unsigned integer 16; subnet 192.168.150.0 netmask 255.255.255.0 { range 192.168.150.10 192.168.150.250; option routers 192.168.150.2 filename "pxelinux.0"; }
puis :
# /etc/init.d/isc-dhcp-server start
Une fois ceci fait, il reste à configurer le tftp, toujours sur la même machine :
# apt-get install tftpd-hpa openbsd-inetd
#:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
# update-inetd --enable BOOT
#netstat -lu}}} devrait vous donner une ligne comme celle-ci : {{{udp 0 0 *:tftp *:*
Nous avons besoin d'un serveur nfs pour ubuntu Live afin qu'il puisse télécharger ses fichiers comme à partir d'un CD. Il faut donc activer le module nfs sur le node et sur la vm openvz.
donc :
modprobe nfsd vzctl set VMID --features nfsd:on --save
apt-get install rcpbind (pour remplacer portmap) apt-get install nfs-kernel-server
/var/lib/tftpboot/path_vers_image 192.168.150.0/255.255.255.0(async,no_root_squash,no_subtree_check,ro)
/etc/init.d/nfs-kernel-server restart
vzctl set VMID --devnodes fuse:rw --save
apt-get install fuseiso
Pour monter une image:
fuseiso path/to/file.iso path/to/mount/point
Pour démonter :
fusermount -u path/to/mount/point
# D-I config version 2.0 default pxelinux.cfg/menu/vesamenu.c32 menu hshift 13 menu width 49 menu margin 8 menu title Installer boot menu #menu background ubuntu/i386/ubuntu-installer/i386/boot-screens/splash.png menu background pxelinux.cfg/menu/minetpex.png menu color title * #FFFFFFFF * 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 color help 37;40 #ffdddd00 #00000000 none menu vshift 12 menu rows 10 menu helpmsgrow 15 # The command line must be at least one line from the bottom. menu cmdlinerow 16 menu timeoutrow 16 menu tabmsgrow 18 menu tabmsg Press ENTER to boot LABEL Ubuntu 12.10 32 bits kernel install/ubuntu/i386/ubuntu-installer/i386/linux append vga=normal initrd=install/ubuntu/i386/ubuntu-installer/i386/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL Ubuntu 12.10 64 bits kernel install/ubuntu/amd64/ubuntu-installer/amd64/linux append vga=normal initrd=install/ubuntu/amd64/ubuntu-installer/amd64/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL Ubuntu_graphic 12.10 32 bits Kernel live/ubuntu/casper/vmlinuz append boot=casper netboot=nfs nfsroot=192.168.150.3:/var/lib/tftpboot/live/ubuntu debian-installer/language=fr console-setup/layoutcode=fr console-setup/variantcode=oss quiet splash initrd=live/ubuntu/casper/initrd.lz -- LABEL Debian 6.0 32 bits kernel install/debian/i386/debian-installer/i386/linux append vga=normal initrd=install/debian/i386/debian-installer/i386/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL Debian 6.0 64 bits kernel install/debian/amd64/debian-installer/amd64/linux append vga=normal initrd=install/debian/amd64/debian-installer/amd64/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL Fedora 17 32 bits kernel install/fedora/i386/vmlinuz-i386 # append initrd=install/fedora/i386/initrd-i386.img method=http://fedora.mirrors.ovh.net/linux/releases/17/Fedora/i386/os/ append initrd=install/fedora/i386/initrd-i386.img method=http://download.fedoraproject.org/pub/fedora/linux/releases/17/Fedora/i386/os/ LABEL Fedora 17 64 bits kernel install/fedora/amd64/vmlinuz-amd64 append initrd=install/fedora/amd64/initrd-amd64.img method=http://download.fedoraproject.org/pub/fedora/linux/releases/17/Fedora/x86_64/os/ LABEL LinuxMint 14 mate 32 bits kernel live/mint/casper/vmlinuz append boot=casper netboot=nfs nfsroot=192.168.150.3:/var/lib/tftpboot/live/mint quiet splash initrd=live/mint/casper/initrd.lz --
L'image peut être supprimée. C'est 640*480 en 24bits obligatoirement. Ce fichier se compose des distributions proposées avec les chemins vers le noyau et celui du init.rd Sauf pour le dernier Ubuntu, se référer à l'étape précédente
Vous pouvez aussi faire un menu un peu plus élaboré en créant les fichiers comme suit dans le dossier pxelinux.cfg:
# D-I config version 2.0 default pxelinux.cfg/menu/vesamenu.c32 include pxelinux.cfg/menu/design.conf MENU TITLE PXE boot menu MENU TABMSG Press [Enter] to select MENU BEGIN Installation INCLUDE pxelinux.cfg/menu/installation.conf MENU END MENU BEGIN Live INCLUDE pxelinux.cfg/menu/live.conf MENU END
menu background pxelinux.cfg/menu/minetpex.png menu color title * #FFFFFFFF * 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 color help 37;40 #ffdddd00 #00000000 none menu vshift 12 menu rows 10 menu helpmsgrow 15 # The command line must be at least one line from the bottom. menu cmdlinerow 16 menu timeoutrow 16 menu tabmsgrow 18
MENU TITLE Live boot LABEL Ubuntu_graphic 12.10 32 bits MENU LABEL Ubuntu Live 12.10 32 bits KERNEL live/ubuntu/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.150.3:/var/lib/tftpboot/live/ubuntu debian-installer/language=fr console-setup/layoutcode=fr console-setup/variantcode=oss quiet splash initrd=live/ubuntu/casper/initrd.lz -- LABEL LinuxMint 14 mate 32 bits MENU LABEL LinuxMint 14 mate 32bits KERNEL live/mint/casper/vmlinuz APPEND boot=casper netboot=nfs nfsroot=192.168.150.3:/var/lib/tftpboot/live/mint quiet splash initrd=live/mint/casper/initrd.lz -- LABEL Back MENU EXIT MENU LABEL <-Back MENU TABMSG Press [Enter] to boot live image
MENU TITLE Installation menu INCLUDE pxelinux.cfg/menu/ubuntu.conf INCLUDE pxelinux.cfg/menu/debian.conf INCLUDE pxelinux.cfg/menu/fedora.conf LABEL Back MENU EXIT MENU LABEL <-Back MENU TABMSG Press [Enter] to select
MENU BEGIN Ubuntu MENU TITLE Ubuntu LABEL 32 bits kernel install/ubuntu/i386/ubuntu-installer/i386/linux append vga=normal initrd=install/ubuntu/i386/ubuntu-installer/i386/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL 64 bits kernel install/ubuntu/amd64/ubuntu-installer/amd64/linux append vga=normal initrd=install/ubuntu/amd64/ubuntu-installer/amd64/initrd.gz ramdisk_size=16464 root=/dev/rd/0 rw -- LABEL Back MENU EXIT MENU LABEL <-Back MENU TABMSG Press [Enter] to install MENU END
Il faut retrouver dans l'ensemble de ces fichiers les lignes du premier fichier default cité.