Accueil > Debian, Linux, Tutoriel > PXE + apt-cacher…Perfect setup pour du Debian-Like ?

PXE + apt-cacher…Perfect setup pour du Debian-Like ?

tuto_linux

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/lenny/amd64/
mkdir -p /var/tftp/distros/debian/lenny/i386/
mkdir -p /var/tftp/distros/ubuntu/lucid/amd64/
mkdir -p /var/tftp/distros/ubuntu/lucid/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/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/linux -qO /var/tftp/distros/debian/lenny/i386/linux
wget ftp://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz -qO /var/tftp/distros/debian/lenny/i386/initrd.gz
wget ftp://ftp.fr.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux -qO /var/tftp/distros/debian/lenny/amd64/linux
wget ftp://ftp.fr.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz -qO /var/tftp/distros/debian/lenny/amd64/initrd.gz
wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux -qO /var/tftp/distros/ubuntu/lucid/amd64/linux
wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz -qO /var/tftp/distros/ubuntu/lucid/amd64/initrd.gz
wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux -qO /var/tftp/distros/ubuntu/lucid/i386/linux
wget http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz -qO /var/tftp/distros/ubuntu/lucid/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).
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-3.86.tar.gz
tar zxvf syslinux-3.86.tar.gz
cp syslinux-3.86/core/pxelinux.0 /var/tftp/
cp syslinux-3.86/com32/menu/vesamenu.c32 /var/tftp/tools/
cp syslinux-3.86/com32/hdt/hdt.c32 /var/tftp/tools/
cp syslinux-3.86/com32/modules/reboot.c32 /var/tftp/tools/reboot.c32
wget http://www.memtest.org/download/4.10/memtest86+-4.10.bin.gz
gzip -d memtest86+-4.10.bin.gz
cp memtest86+-4.10.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 inRage 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 4.10
    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 Lenny (5.0)--
 
LABEL Lenny i386
    MENU LABEL Lenny ^i386
    KERNEL distros/debian/lenny/i386/linux
    APPEND vga=normal initrd=distros/debian/lenny/i386/initrd.gz
 
LABEL Lenny i386 Expert
    MENU LABEL Lenny i386 en mode ^expert
    KERNEL distros/debian/lenny/i386/linux
    APPEND priority=low vga=normal initrd=distros/debian/lenny/i386/initrd.gz
 
LABEL Lenny amd64 linux
    MENU LABEL Lenny ^amd64
    KERNEL distros/debian/lenny/amd64/linux
    APPEND vga=normal initrd=distros/debian/lenny/amd64/initrd.gz
 
LABEL Lenny amd64 expert
    MENU LABEL Lenny amd64 en mode e^xpert
    KERNEL distros/debian/lenny/amd64/linux
    APPEND priority=low vga=normal initrd=distros/debian/lenny/amd64/initrd.gz

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 Lucid Lynx (10.04)--
 
LABEL Lucid Lynx i386
    MENU LABEL Lucid Lynx i386
    KERNEL distros/ubuntu/lucid/i386/linux
    APPEND vga=normal initrd=distros/ubuntu/lucid/i386/initrd.gz
 
LABEL Lucid Lynx amd64
    MENU LABEL Lucid Lynx amd64
    KERNEL distros/ubuntu/lucid/amd64/linux
    APPEND vga=normal initrd=distros/ubuntu/lucid/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 ?

source : Geekfault et Ubuntu-fr

  1. Pas encore de commentaire
  1. Pas encore de trackbacks