======= 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