Booter un système linux depuis le réseau avec dnsmasq

Salut à tous, on s’intéresse aujourd’hui à la possibilité de booter un système depuis le réseau (ordinateur sans disque dur, première installation, …).Si vous avez déjà touché à un système PXE, vous savez déjà de quoi va parler cet article :).

J’en avais déjà parlé dans mon article sur un cluster kerrighed en 2009, ou je montrais comment en faire un avec dhcpd … aujourd’hui, on retente l’expérience avec dnsmasq 🙂 et archlinux.

Tout d’abord, il vous faudra la dernière iso d’archlinux à télécharger sur : http://mirror.rackspace.com/archlinux/iso/.

Une fois téléchargé, vous devrez la monter sur :

/run/archiso/bootmnt avec la commande suivante (l’iso ayant hardcodé le dossier, nous n’avons pas vraiment le choix) :

mount -o loop,ro archlinux-votreiso.iso /run/archiso/bootmnt

La configuration de /etc/dnsmasq.conf sera la suivante :

port=0
interface=eth0
bind-interfaces
expand-hosts
domain=local.lan
dhcp-range=192.168.0.51,192.168.0.150,12h
dhcp-option=option:dns-server,192.168.0.1
enable-tftp
tftp-root=/run/archiso/bootmnt
dhcp-boot=/arch/boot/syslinux/lpxelinux.0
dhcp-option-force=209,boot/syslinux/archiso.cfg
dhcp-option-force=210,/arch/
dhcp-authoritative

Ici, mon serveur DNS possède l’ip 192.168.0.1 (fournit par bind, d’où le port=0). Mon réseau est adressé de 192.168.0.51 à 192.168.0.150. local.lan est le nom de mon réseau local, et eth0 est l’interface d’écoute de mon serveur dnsmasq.

On utilisera aussi NFS (comme sur mon article sur kerrighed). On rajoute notre export dans /etc/exports

/run/archiso/bootmnt 192.168.0.0/24(ro,no_subtree_check)

On retrouve ici, notre réseau local, et notre dossier de montage de l’iso d’archlinux.

Un coup de reboot de nos services :

exportfs -r -a -v
systemctl restart dnsmasq

Et c’est bon :), vous pourrez booter vos machines sans avoir à brancher une clé usb, ou trouver le cd d’install.