Configuration d’un serveur linux netboot pour clients diskless

Dans cet article, je vais vous expliquer comment j’ai mis en place un serveur Debian 7 Wheezy permettant de démarrer des stations diskless (130 dans mon cas) en Linux Ubuntu 14.04 et Linux Mint 17

Sur mon serveur (ip 192.168.8.3/24) j’ai installé les paquets suivants :

apt-get install isc-dhcp-server tftpd-hpa nfs-kernel-server syslinux

Configuration du serveur dhcp ( /etc/dhcp/dhcpd.conf ), ajouter ceci à la fin (dans mon cas, réseau 192.168.8.0/24, router 192.168.8.1, dns 192.168.8.3, netboot 192.168.8.3) :

# cnet.local
subnet 192.168.8.0 netmask 255.255.255.0 {
authoritative;
option domain-name-servers 192.168.8.3;
option domain-name "cnet.local";
option broadcast-address 192.168.8.255;
option subnet-mask 255.255.255.0;
option routers 192.168.8.1;
max-lease-time 172800;
default-lease-time 86400;
range 192.168.8.100 192.168.8.199;
next-server 192.168.8.3;
filename = "pxelinux.0";
}

Configuration du serveur de netbook tftpd ( /etc/default/tftpd-hpa ) :

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/boot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Créer le répertoire de stockage et lui donner les bons droits :

mkdir -p /srv/boot
chown nobody:nogroup /srv/boot
chmod 777 /srv/boot

Mise en place de syslinux :

cp /usr/lib/syslinux/pxelinux.0 /srv/boot/.
cp /usr/lib/syslinux/menu.c32 /srv/boot/.
mkdir /srv/boot/pxelinux.cfg

Création du menu de démarrage ( /srv/boot/pxelinux.cfg/default ) :

DEFAULT menu.c32
TIMEOUT 100
ONTIMEOUT Ubuntu14
PROMPT 0
MENU TITLE PXE Boot
ALLOWOPTIONS 1
menu width 80
menu rows 15
MENU TABMSGROW 24
MENU MARGIN 10
NOESCAPE 1

LABEL BootLocal
localboot 0
TEXT HELP
Boot to local hdd
ENDTEXT

LABEL Ubuntu14
MENU LABEL Ubuntu 14.04 (32-bit) DISKLESS
KERNEL ubuntu14/vmlinuz-3.13.0-37-generic
APPEND boot=nfs root=/dev/nfs nfsroot=192.168.8.3:/srv/ubuntu_14.04,ro initrd=ubuntu14/initrd.img-3.13.0-37-generic ip=dhcp aufs=tmpfs quiet splash
TEXT HELP
Boot Ubuntu 14.04 DISKLESS
ENDTEXT

LABEL Mint17
MENU LABEL Linux Mint 17 DISKLESS
KERNEL mint/vmlinuz-3.13.0-24-generic
APPEND boot=nfs root=/dev/nfs nfsroot=192.168.8.3:/srv/linuxmint,ro initrd=mint/initrd.img-3.13.0-24-generic ip=dhcp aufs=tmpfs
TEXT HELP
Boot Mint 17 DISKLESS
ENDTEXT

Préparation du stockage des installations clientes :

mkdir /srv/ubuntu_14.04
mkdir /srv/boot/ubuntu14
mkdir /srv/linuxmint
mkdir /srv/boot/mint

Configuration du serveur nfs ( /etc/exports ) :

/srv/ubuntu_14.04 *(ro,async,no_root_squash,no_subtree_check,no_all_squash)
/srv/linuxmint *(ro,async,no_root_squash,no_subtree_check,no_all_squash)

A ce stade, je vous conseil un reboot du serveur car le serveur tftpd ne se relance pas convenablement suite au changement de la configuration.

Il ne reste plus qu’au suivre l’article sur la mise en place d’un poste client…