Nous allons aborder dans cette note, 2 sujets, qui deviendront complémentaire par la suite, un serveur pour PXE complet, ainsi qu’un serveur cache APT.
Un cache APT, pour quoi faire ?
Si vous avez plusieurs machines sur des distribs Debian-like, le proxy-cache est là pour vous faire économiser du temps en téléchargement. Vous lui demandez un paquet une fois, il ne l’as pas, il le télécharge, le stocke, et vous le demande. Vous le lui redemandez une 2eme fois pour une 2eme machine, il vous le distribue instantanément. On voit de suite l’intérêt…
Un serveur PXE, c’est quoi ?
PXE veut dire Preboot eXecution Environment, est un environnement de démarrage réseau, permettant de pouvoir démarrer a partir de celui-ci, notamment de lancer des installations (mais pas que). Vous avez déjà sans doute remarqué que certaines cartes mère chargent un petit bout de BIOS pour la carte réseau, et que ça prends un temps incroyable…Ben c’est ça dont on parle (rassurez vous, une fois le serveur en place, c’est très rapide)
Première étape : installation du serveur de cache pour APT
Pour celà, rien de plus simple…
aptitude install apt-cacher
Compliqué hein ?
Bon, c’est pas tout à fait fini, vous pouvez modifier quelques options dans /etc/apt-cacher/apt-cacher.conf notamment l’emplacement disque du cache a proprement dit (les fichiers que le cache va stocker), l’adresse email de l’admin, le port (par défaut 3142), etc.
Notez que tout fonctionne parfaitement sans aucune modification.
En revanche, il FAUT absolument modifier /etc/default/apt-cacher et mettre la valeur AUTOSTART à 1.
On lance le démon
/etc/init.d/apt-cacher start
Et c’est parti.
On peut vérifier que le serveur cache est bien lancé, en tapant dans votre FireFox préféré http://mon-server:3142/ (vous devriez avoir une page avec quelques informations concernant le démon apt-cacher).
Ensuite, et afin que les machines Debian-like de votre réseau aille taper dans le cache, deux solutions s’offrent à nous. La première solution, cochonne, mais indiquée sur la page http://mon-server:3142/ consiste à transformer, dans le fichier /etc/apt/sources.list les lignes deb et deb-src de la manière suivante :
deb http://ftp2.fr.debian.org/debian/ stable main
en
deb http://mon-server:3242/ftp2.fr.debian.org/debian/ stable main
Solution un peu longue à faire à la main (un sed serait le bienvenue ici…) surtout si vous souhaitez rajouter les security.debian.org/ et volatile.debian.org/.
Du coup, je vous ai trouvé une belle solution, beaucoup plus simple et élégante…Il suffit de dire à aptitude qu’il doit utiliser un proxy. Comment on fait ? On créer un fichier /etc/apt/apt.conf et on y colle dedans :
Acquire::http::Proxy "http://mon-server:3142/";
Et c’est tout.
Pour vérifier que celà fonctionne bien, un petit aptitude update suffira. Si ça ne fonctionne pas, essayez de mettre une IP plutôt qu’un nom de domaine. Si ça ne fonctionne toujours pas, refaites depuis le début :).
Seconde étape : installation et configuration des composants pour le PXE
PXE fonctionne de cette manière :
1- Le client recherche un serveur BOOTP (similaire au DHCP, mais pouvant fournir une info nécessaire au boot).
2- Un serveur BOOTP réponds, en offrant un bail DHCP, un serveur TFTP a contacter ainsi qu’un fichier a charger.
3- Le client contacte le serveur TFTP et demande le fichier en question.
4- C’est prêt.
Ce dont à donc besoin PXE : un serveur DHCP supportant le BOOTP (ils le font presque tous) et un serveur TFTP (Trivial File Transfert Protocol, c’est comme le FTP, sauf qu’on doit connaitre l’arborescence des fichiers pour pouvoir les lui demander…C’est…Trivial quoi…).
1- Installtion du serveur DHCP/BOOTP
aptitude install dhcp3-server
N.b. pour les utilisateurs de Freebox (et de boxes en général) : vous pouvez tout a fait garder le DHCP de votre Freebox, tant que vous ne définissez pas le DHCP que vous êtes en train d’installer en tant qu’autoritaire, les box n’ont généralement pas d’option BOOTP, pas de problèmes (par mesure de sécurité, on va attribuer une plage différente à la Box et pour le PXE).
On va ensuite éditer /etc/dhcp3/dhcpd.conf et y rajouter ces quelques lignes :
si vous avez déjà un autre serveur DHCP d’installé
option domain-name-servers 192.168.3.254, 8.8.8.8; option subnet-mask 255.255.255.0; option routers 192.168.3.254; allow bootp; subnet 192.168.3.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.3.1 192.168.3.10; filename "pxelinux.0"; next-server mon-server; }
Sinon :
authoritative; allow bootp;
Puis, dans votre subnet :
filename "pxelinux.0"; next-server mon-server;
On sauvegarde, et on relance le service dhcpd
/etc/init.d/dhcp3-server restart
2- Installtion du TFTP
aptitude install tftpd-hpa
Qui veut démarrer en inetd, par défaut, ce qui ne nous convient pas.
On va donc modifier /etc/default/tftpd-hpa pour mettre « yes » à l’option RUN_DAEMON. Pour plus de simplicité, j’ai également modifié le path dans lequel tftp-hpa allait démarrer (le path qui contiendra vos fichiers plus tard) en /var/tftp ça sera le chroot du serveur (TFTP ne gèrant pas d’authentification, il est primordial de ne rien y laisser trainer de compromettant).
Un petit coup de
update-rc.d tftp-hpa /etc/init.d/tftpd-hpa start
démarrera le serveur TFTP. (Pensez à créer le répertoire chroot du serveur TFTP, il pourrait planter sinon)
3- Préparation des fichiers et répertoires
On va créer pas mal de répertoire :
distros : contiendra les fichiers nécessaires au lancement des installers de Debian et Ubuntu, versions 32 et 64 bits
menu : contiendra les fichiers nécessaires à l’affichage du menu
pxelinux.cfg : contient le fichier nécessaire à l’amorçage du loader
tools : contiendra quelques outils plus ou moins utiles.
C’est parti pour les créations de répertoires.
mkdir -p /var/tftp/distros/debian/wheezy/amd64/ mkdir -p /var/tftp/distros/debian/wheezy/i386/ mkdir -p /var/tftp/distros/ubuntu/natty/amd64/ mkdir -p /var/tftp/distros/ubuntu/natty/i386/ mkdir /var/tftp/tools/ mkdir /var/tftp/menu/ mkdir /var/tftp/pxelinux.cfg/
Téléchargement des fichiers d’installation :
wget ftp://ftp.fr.debian.org/debian/dists/wheezy/main/installer-i386/current/images/netboot/debian-installer/i386/linux -qO /var/tftp/distros/debian/wheezy/i386/linux wget ftp://ftp.fr.debian.org/debian/dists/wheezy/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz -qO /var/tftp/distros/debian/wheezy/i386/initrd.gz wget ftp://ftp.fr.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux -qO /var/tftp/distros/debian/wheezy/amd64/linux wget ftp://ftp.fr.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz -qO /var/tftp/distros/debian/wheezy/amd64/initrd.gz wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux -qO /var/tftp/distros/ubuntu/natty/amd64/linux wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz -qO /var/tftp/distros/ubuntu/natty/amd64/initrd.gz wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux -qO /var/tftp/distros/ubuntu/natty/i386/linux wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz -qO /var/tftp/distros/ubuntu/natty/i386/initrd.gz
D’une manière générale, vous devriez pouvoir trouver ces deux fichiers pour a peu près n’importe qu’elle distribution du marché (il faut chercher un peu).
De plus, vous pouvez spécifier « stable » à la place du nom de la distribution sur Debian (le lien n’existant pas sur Ubuntu, et les autres distribs n’étant pas traitées dans ce tuto)
Des versions de syslinux et de memtest86 sont peut être plus récentes. Vérifiez…
cd /var/tftp/ wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-4.07.tar.gz tar zxvf syslinux-4.07.tar.gz cp syslinux-4.07/core/pxelinux.0 /var/tftp/ cp syslinux-4.07/com32/menu/vesamenu.c32 /var/tftp/tools/ cp syslinux-4.07/com32/hdt/hdt.c32 /var/tftp/tools/ cp syslinux-4.07/com32/modules/reboot.c32 /var/tftp/tools/reboot.c32 cp syslinux-4.07/com32/samples/localboot.c32 /var/tftp/tools/localboot.c32 wget http://www.memtest.org/download/5.01/memtest86+-5.01.bin.gz gzip -d memtest86+-5.01.bin.gz cp memtest86+-5.01.bin /var/tftp/tools/memtest wget http://img.sn4ky.net/tuto/pxe/background.png -qO /var/tftp/menu/background.png
Voilà, normalement tous les fichiers sont prêt, il n’y a plus qu’à créer les fichiers de configuration pour que ça soit tout joli sur votre PXE.
On commence par pxelinux.cfg/default
DEFAULT tools/vesamenu.c32 menu/design.conf ~ MENU TITLE MarkAsRead PXE LABEL LocalBoot MENU LABEL ^Boot Local KERNEL tools/localboot.c32 LABEL Debian Installers MENU LABEL ^Debian Installers >> KERNEL tools/vesamenu.c32 APPEND menu/design.conf menu/debian.conf LABEL Ubuntu Installers MENU LABEL ^Ubuntu Installers >> KERNEL tools/vesamenu.c32 APPEND menu/design.conf menu/ubuntu.conf LABEL Outils systemes MENU LABEL Outils ^systemes >> KERNEL tools/vesamenu.c32 APPEND menu/design.conf menu/systemes.conf TIMEOUT 50
Le signe « ^ » indique au PXE quelle lettre a mettre en surbrillance. La ligne sera activée dès lors qu’on tapera sur la touche en question au moment du boot.
Le Timeout est exprimé en dixième de secondes, un timeout de 50 correspond à 5sec.
Ensuite, menu/design.conf
MENU WIDTH 80 MENU MARGIN 10 MENU ROWS 12 MENU TABMSGROW 18 MENU CMDLINEROW 12 MENU ENDROW 24 MENU TIMEOUTROW 20 MENU PASSWORDMARGIN 3 MENU PASSWORDROW 11 menu background menu/background.png
Les options étant assez verbeuses d’elles-même, je ne les décrirait pas. Notons juste que le background peut accepter un PNG de 640*480 de 24 bits (ce qui laisse beaucoup de choix…)
Passons à menu/systemes.conf
MENU TITLE Outils Systemes LABEL retour_menu MENU LABEL <- Retour menu principal KERNEL tools/vesamenu.c32 APPEND menu/design.conf ~ LABEL memtest MENU LABEL ^MemTest 5.01 KERNEL tools/memtest LABEL HDT MENU LABEL ^Hardware Detection Test KERNEL tools/hdt.c32 APPEND modules=tools/modules.pcimap pciids=tools/pci.ids memtest=tools/memtest LABEL reboot MENU LABEL ^Reboot KERNEL tools/reboot.c32
Puis, menu/debian.conf
MENU TITLE Debian Installers LABEL retour_menu MENU LABEL <- Retour menu principal KERNEL tools/vesamenu.c32 APPEND menu/design.conf ~ LABEL --Debian Wheezy (7.1)-- LABEL Wheezy i386 Expert MENU LABEL Wheezy i386 KERNEL distros/debian/wheezy/i386/linux APPEND priority=low vga=normal initrd=distros/debian/wheezy/i386/initrd.gz LABEL Wheezy amd64 expert MENU LABEL Wheezy amd64 KERNEL distros/debian/wheezy/amd64/linux APPEND priority=low vga=normal initrd=distros/debian/wheezy/amd64/initrd.gz
Notez que l’option de « priority=low » sur la ligne APPEND indique a l’installeur que nous souhaitons lancer l’install en mode ‘Expert’
Et pour finir menu/ubuntu.conf
MENU TITLE Ubuntu Installers LABEL retour_menu MENU LABEL <- Retour menu principal KERNEL tools/vesamenu.c32 APPEND menu/design.conf ~ LABEL --Ubuntu Natty Narwhal (11.04)-- LABEL Natty Narwhal i386 MENU LABEL Natty Narwhal i386 KERNEL distros/ubuntu/natty/i386/linux APPEND vga=normal initrd=distros/ubuntu/natty/i386/initrd.gz LABEL Natty Narwhal amd64 MENU LABEL Natty Narwhal amd64 KERNEL distros/ubuntu/natty/amd64/linux APPEND vga=normal initrd=distros/ubuntu/natty/amd64/initrd.gz
nb. : pour Ubuntu, vous pouvez rajouter l’option DEBCONF_PRIORITY=low à la ligne APPEND pour exécuter l’installation en mode expert.
Si tout va bien, et que je ne me suis pas gouré, vous devriez avoir un serveur PXE prêt à démarrer, et à installer vos première distribs.
4- Mais là où tout le monde s’arrête, nous, on va plus loin.
Souvenez vous, au début du tuto, on installe un serveur proxy cache apt, et bien figurez vous qu’il est possible de spécifier au moment de charger l’initrd qu’on veut qu’apt utilise un proxy. Il suffit de rajouter, en fin de ligne APPEND de vos fichiers, le paramètre suivant :
mirror/http/proxy=http://mon-server:3142/
Ensuite, vous n’aurez rien à faire de plus. Aptitude créera automatiquement le fichier apt.conf avec les bons paramètres dedans. Si vous déplacez la machine, il suffit de supprimer le fichier (ou corriger ce qu’il y a dedans par la nouvelle entrée).
Elle est pas belle la vie ?
[…] Installation du serveur PXE : Ici, Sn4ky a déjà fait tout le travail, vous n’avez plus qu’à suivre ses instructions qui sont ici. […]
MAJ
syslinux-4.02
wget debian lenny corrigés (il restait des \etch\)
ajout d’un tip pour debian \stable\ (et non le nom de la distrib)
Tools…
[…] something about tools[…]…
[…] http://markasread.sn4ky.net/pxe-apt-cacherperfect-setup-pour-du-debian-like/ […]
MAJ
syslinux-4.03
memtools-4.20
ubuntu MM 10.10
MAJ
ajout de localboot.c32 qui était présent dans le fichier pxelinux.cfg/default mais pas copié dans l’arbo tools/
MaJ :
Modifications de lenny en squeeze
supression des installers en mode « standard »
ajout des installeurs de Debian GNU/kFreeBSD
,:~ i am always fond of reading topics and issues about this one ;,:
Bonjour,
Merci pour cet exemple très sympa !
Juste un détail, la version de memtest n’est pas indiqué dans le bon répertoire, remplacer :
wget http://www.memtest.org/download/4.10/memtest86+-4.20.bin.gz
par
wget http://www.memtest.org/download/4.20/memtest86+-4.20.bin.gz
Mais bon je chipotes.
Bonne continuation !
Bonjour Pierre.
Merci de ce feedback, nous avons corrigé l’article en conséquence.
merci bien !
MàJ :
Modif de Ubuntu Maverick Meerkat -> Ubuntu Natty Narwhal
Modif de syslinux 4.03 -> 4.04