Pxe
Configuration d'un serveur pxe
Ici le serveur nfs, dhcp, tftp est le meme, il a pour ip 10.253.6.1. Il faut donc installer sur ce serveur les services tftp, dhcpd, nfsd. Dans le cas présent, le root du serveur tftp se trouve dans /tftpboot. Installer les images des os sur lesquels les clients vont booter, les fichier nécessaires à pxe
Dhcpd.conf
allow booting;
allow bootp;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.26.15, 172.26.0.15;
option routers 10.253.6.254; # Passerelle par défaut envoyé en dhcp
default-lease-time 604800;
max-lease-time 604800;
subnet 10.253.6.0 netmask 255.255.255.0 {
group {
next-server 10.253.6.1;
host pxe-ins.agarik.com {
hardware ethernet 00:09:6b:8c:11:16;
fixed-address 10.253.6.12;
option host-name "pxe-ins.agarik.com";
filename "pxelinux.0";
next-server 10.253.6.1; # ip du serveur ou tourne pxe
}
}
}
---
Autres
Renseigner le /etc/exports : /tftpboot/nfsroot/centos5_26_x32 10.253.6.0/24(rw,no_root_squash,async,subtree_check) (puis exportfs -r ou -a)
cat /tftpboot/pxelinux.cfg/default :
DEFAULT kernel/vmlinuz-2.6.25.17.x32 ip=dhcp root=/dev/nfs nfsroot=10.253.6.1:/tftpboot/nfsroot/centos5_26_x32,rsize=8192,wsize=8192,retrans=16,v2,intr,tcp (ou suivant les kernel / os : DEFAULT kernel/vmlinuzcentos7 initrd=kernel/initrdcentos7.img ip=dhcp root=nfs:10.253.6.1:/tftpboot/nfsroot/centos70_x64)
Le repertoire kernel se trouve dans /tftpboot. Il est bien une fois de créer un initrd (ou initramfs) en faisant un dracut -N --force, comme ca tous les modules seront mis dans l'initrd, et l'on n aura pas de problème de driver suivant les différents composants matériels des serveurs bootant en pxe)
Problématique d'un serveur bootant en pxe
- 1 Spécificité du kernel
Le kernel (kernel qui est dans /tftpboot/kernel) utilisé pour faire booter un serveur en pxe doit comporter les modules suivant : - NFS filesystem support (CONFIG_NFS_FS). - Root file system on NFS (CONFIG_ROOT_NFS). - Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET). - The ethernet driver for the clent's network card. - IP: kernel level autoconfiguration (CONFIG_IP_PNP) - BOOTP support (CONFIG_IP_PNP_BOOTP)
- 2 Problème de mount Nfs
Si le client n'arrive pas à faire un mount nfs, essayer de faire un mount nfs en local sur le serveur nfs. Si le serveur n'y arrive pas non plus, rajouter dans le /etc/fstab du serveur nfs : rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0 nfsd /proc/fs/nfsd nfsd defaults 0 0
- 3 Problème de blocage sur udev
Lorsque le client boot en pxe / nfs, si il bloque sur udev, modifier le fichier /tftpboot/nfsroot/centos5_26_x32/etc/sysconfig/network-scripts/net.hotplug avant : ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*) apres : eth*|ppp*|ippp*|isdn*|plip*|lo*|irda*|dummy*|ipsec*|tun*|tap*)
Spécificité de l'image bootable
L'image de l os sur laquelle boot le client (/tftpboot/nfsroot/centos5_26_x32). c est l image d une centos installé normalement mais : /etc/fstab : 10.253.6.1:/tftpboot/nfsroot/centos5_26_x32 / nfs rw,rsize=8192,wsize=8192,retrans=16 (ip du serveur pxe & path de l image où booter) devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 le fichier de configuration de eth0 : BOOTPROTO=dhcp ONBOOT=no (si c est à yes il va restarter eth0, donc perdre le reseau , donc il ne boot plus :p) Il faut aussi activer rpcbind, nfs-server, nfs* en run-level 3 si l'on veut que le serveur puisse faire le montage nfs S'assurer que le selinux (ou équivalent est désactivé) le repertoire /dev de l image doit comporter au minimum : crw------- 1 root root 5, 1 Nov 27 13:55 console prw------- 1 root root 0 Nov 27 13:55 initctl crw-rw-rw- 1 root root 1, 3 Nov 27 13:55 null crw-rw-rw- 1 root root 1, 8 Nov 27 13:55 random crw-rw-rw- 1 root root 5, 0 Dec 3 12:44 tty crw------- 1 root root 4, 0 Nov 27 13:55 tty0 crw-rw-rw- 1 root root 1, 9 Nov 27 13:55 urandom crw-rw-rw- 1 root root 1, 5 Nov 27 13:55 zero A creer avec mknod : mknod -m 600 dev/console c 5 1 mkfifo -m 600 dev/initctl mknod -m 666 dev/null c 1 3 mknod -m 666 dev/random c 1 8 mknod -m 666 dev/tty c 5 0 mknod -m 666 dev/urandom c 1 9 mknod -m 666 dev/zero c 1 5