Pxe

De BlaxWiki
Aller à la navigationAller à la recherche


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

le repertoire kernel se trouve dans /tftpboot


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*)
  • 4 Modifications générales
Caractéristique de 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
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 portmap en run-level 3 si l'on veut que le serveur puisse faire le montage nfs


le repertoire /dev de l image doit comporter au minimum :
crw------- 1 root root 5, 1 Dec 30 15:53 console
prw------- 1 root root    0 Dec 30 15:32 initctl
crw-rw-rw- 1 root root 1, 3 Dec 30 16:11 null
crw-rw---- 1 root root 4, 0 Dec 30 16:09 tty0
crw-rw-rw- 1 root root 1, 5 May 30 13:38 zero
crw-rw-rw- 1 root root 1, 8 Dec  8 16:42 random
cr--r--r-- 1 root root 1, 9 May 30 13:38 urandom
crw-rw-rw- 1 root tty 5, 0 Sep 26 12:28 tty

A creer avec mknod :

mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
mknod -m 660 /dev/tty c 5 0
mknod -m 666 /dev/tty c 5 0
mknod /dev/zero    c 1 5
mkfifo -m600 /dev/initctl
mknod -m 644 /dev/urandom c 1 9
mknod -m 644 /dev/random c 1 8