======= PXE ======= 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. ===== Le client ===== 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. ===== Le VLAN ===== 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} ===== Mise en place du PXE ===== 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 [[:wiki:services:pxe:images | ici ]]'' ==== Mise en place de la passerelle ==== 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 : * Créez un fichier script.sh 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 * exécutez les commandes suivantes : # 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. ==== Mise en place du serveur ==== 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 === Installer le serveur DHCP === Il faut maintenant installer le DHCP sur une autre vm (openvz). # apt-get install dhcp3-server * Dans le fichier /etc/default/isc-dhcp-server, ajouter dans la ligne INTERFACE : INTERFACES="[interface dans le vlan 999]" * Dans le fichier /etc/dhcp/dhcpd.conf : 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 === Installer le serveur tftp === Une fois ceci fait, il reste à configurer le tftp, toujours sur la même machine : # apt-get install tftpd-hpa openbsd-inetd * éditez le fichier /etc/inetd.conf : #: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 *:* === Un serveur nfs pour Ubuntu live === 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 : * sur le node : modprobe nfsd vzctl set VMID --features nfsd:on --save * dans la vm : apt-get install rcpbind (pour remplacer portmap) apt-get install nfs-kernel-server * toujours dans la vm modifiez le fichier /etc/exports /var/lib/tftpboot/path_vers_image 192.168.150.0/255.255.255.0(async,no_root_squash,no_subtree_check,ro) * redémarrez le serveur nfs /etc/init.d/nfs-kernel-server restart === Pour monter des iso === * Sur le node: vzctl set VMID --devnodes fuse:rw --save * Dans la vm : 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 === Mettre en place les fichiers nécessaires === * copiez un fichier pxelinux.0 dans /var/lib/tftpboot (celui présent dans distrib/arch/XXX-installer/arch/ pour une image basée sur debian) * créez un dossier pxelinux.cfg et insérez ceci dans le fichier default (pour avoir un menu simple): # 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 ==== Un menu plus élaboré ==== Vous pouvez aussi faire un menu un peu plus élaboré en créant les fichiers comme suit dans le dossier pxelinux.cfg: * fichier "default": # 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 * fichier "menu/design.conf" 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 * fichier "live.conf" 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 * le fichier "menu/installation.conf" 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 * les fichiers du genre "menu/distrib.conf" pour toutes les distributions. 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é. ===== De la doc ===== * ​http://doc.ubuntu-fr.org/netboot * ​http://doc.ubuntu-fr.org/netboot_live * ​https://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install