Boot pxe linux partie 1

Pré-requis et environnement typique

Cas de mise en place

Comment faire son choix parmi toutes les solutions que je vais vous proposer ?

Voilà les différentes solutions et leurs implications.

Le choix d’un système par nfs, le système sera contenu dans un dossier simple ce qui le rendra facilement modifiable


  • Avantages :

    • simple à mettre en oeuvre
    • éprouvé depuis longtemps
    • pas de réelle modification du système exporté
  • Inconvénients :

    • fragmentation assez importante car tous les fichiers requis par le système sont répartis sur tout le disque dur
    • débit réseau important
    • cache disque du serveur divisé entre tous les systèmes


Le choix d’une image système à l’intérieur du serveur, le système sera contenu dans une image en lecture seule et les modifications seront stockées dans un dossier


  • Avantages :

    • économie de l’espace disque car seuls les différences sont stockées<puce>restauration rapide de l’image de base supprimant toutes les différences<puce>possibilité d’intervenir simplement sur le système

    • pas de réelle modification du système exporté
  • Inconvénients :

    • débit réseau important
    • cache disque du serveur divisé entre tous les systèmes
    • cela peut devenir très lourd lors de nombreux points de montage


Le choix d’une image système sur la machine qui boot, le système sera contenu dans une image en lecture seule et les modifications seront stockées dans un dossier


  • Avantages :

    • économie de l’espace disque car seules les différences sont stockées
    • restauration rapide de l’image de base en supprimant toutes les différences
    • économie de la bande passante
    • cache disque mieux utilisé car le serveur ne fait que desservir quelques images principales et brasser quelques fichiers, le cache des machines bootant sur le réseau est aussi utilisé.
  • Inconvénients :

    • intervenir sur une images peut devenir très compliqué ;
    • obligation d’avoir un initrd (micro-système de boot) personnalisé.
Les deux structures typiques
Je vais vous présenter deux structures typiques :
 

  • un serveur, un switch, des ordinateurs : c’est le cas le plus courant, et sûrement le cas que vous allez utiliser. L’utilisation de la bande passante doit être maitrisée ;
  • un serveur réel et des serveurs virtuels : vous avez un serveur réel, et des machines virtuelles dessus, ce qui permet de ne plus travailler avec des disques durs virtuels mais utilisé un partage réseau pour stocker son système, ce qui fait qui vous n’aurez plus d’espace alloué et ne servant à rien dans un gros fichier représentant le disque. Au vu de la structure, seul le serveur va gérer le système de fichiers, ce qui produit un gain de performance.
Le noyau du serveur
Nous allons travailler avec samba, la majorité des noyaux sont compatible.  Pour travailler sur un serveur ne faisant qu’exporter une image système, il est conseillé d’activer les options suivantes.
 

File systems --->
Miscellaneous filesystems --->
 <*> SquashFS - Squashed file system support
 [*] Additional option for memory-constrained systems
 (3) Number of fragments cached
Le noyau du client
Quelle que soit votre mise en place, vous aurez besoin de cela sur le client :
 

File systems ---> Network File Systems ---> <*> Vifs/samba fs
Miscellaneous filesystems --->
 <*> Another unionfs Maximum number of branches (127) --->
 [ ] Use <sysfs>/fs/aufs/stat 
 [*] Use inotify to detect actions on a branch 
 [*] NFS-exportable aufs
 [ ] Aufs as an readonly branch of another aufs mount
 [*] Delegate the internal branch access the kernel thread
 [ ] Show whiteouts 
 [*] Make squashfs branch RR (real readonly) by default
 [*] splice.patch for sendfile(2) and splice(2)
 [ ] Debug aufs
 [ ] Compatibility with Unionfs (obsolete)
 [ ] Unionfs-2.2 or later patch is applied or not (obsolete)
 [ ] Unionfs-2.3 or later patch is applied or not (obsolete) 
 <*> SquashFS 3.3 - Squashed file system support
 [*] Additional option for memory-constrained systems
 (3) Number of fragments cached
<*> SquashFS 3.3 - Squashed file system support
 [*] Additional option for memory-constrained systems (3) Number of fragments cached
Networking support --->
Networking options --->
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support

Et mettez en dur toutes les cartes réseaux.

Peu ou presqu’aucun noyau pré-compilé ne propose ces options. Il faut un noyau patché avec aufs, voir http://aufs.sourceforge.net/ qui explique très bien comment patcher son noyau. Attention, il faut compiler une fois sont noyau avant d’installer aufs. Pour pouvoir utiliser votre client dans tous les modes, je vous conseille d’avoir toutes les options pour pouvoir changer sans tout recompiler.
Logiciel, version et matériels
Je vous conseille d’utiliser au maximum des versions récentes mais stables. Dans mon cas, j’ai choisi sur le client et le serveur :
 

  • Gentoo netinstall,
  • noyau 2.6.30-r18,
  • aufs en cvs,
  • squashfs 3.4,
  • samba 3.5

Coté serveur :

  • samba 3.5,
  • dhcp-3.1.0,
  • tftp-hpa-0.48.

Pour l’ordinateur démarrant sur le réseau, il faut activer dans le BIOS ROM NETWORK dans onboard devices ou équivalent, sauvegarder, rebooter, aller dans le BIOS, puis dans le menu boot order, sélectionner le réseau en premier. Merci de vous référer au guide de votre carte mère pour plus d’informations. Tous les ordinateurs ne sont pas capables de booter en réseau. Dans ce cas, il existe des alternatives telles que mettre un BIOS open source capable de booter sur le réseau (coreboot + gPXE, coreboot + grub, …), ou installer sur un média bootable un chargeur de démarrage, le noyau et l’initrd de votre système réseau. Tous les PC virtuels que je connais sont capables de booter en réseau, il ne faut que le sélectionner dans le BIOS (vmware), ou dans la ligne de commande (kvm) les options adéquates.

Je considére que appartir de maintenant toutes mes images sont dans le partage samba « images-pxe »

Le serveur dhcp, tftp, samba

Serveur dhcp
Mais c’est quoi, un serveur dhcp ? Un serveur dhcp, c’est un serveur qui va automatiquement configurer votre carte réseau, remplir le DNS, la passerelle, l’IP, … Il s’occupe aussi de configurer l’environnement de boot en réseau. L’IP de l’interface amenant internet au serveur (et le réseau coté internet) ne doit pas être en 192.168.0.X, ou, si on change tous les 192.168.0.X en 192.168.1.X ci-dessus et par la suite. Un fichier d’exemple est toujours plus parlant, situé chez moi à /etc/dhcp/dhcpd.conf :
 

123456789101112131415161718192021222324252627282930313233
# bootallow booting;allow bootp;filename "pxelinux.0";ping-check = 1;# dhcpdefault-lease-time 2678400;max-lease-time 2678400;# domain et dnsoption domain-name "monnom.local";ddns-update-style none;# Serveur dhcp unique sur le réseauauthoritative;# interface desserviesubnet 192.168.0.0 netmask 255.255.255.0 {  option domain-name "monnom.local";# remplacer par votre serveur DNS  option domain-name-servers 192.168.0.1;  range 192.168.0.10 192.168.0.99;# désactivé si votre serveur ne sert pas de passerelle  option routers 192.168.0.1;}host pcenipfixe {# remplacer par l'adresse MAC de votre carte réseauhardware ethernet 00:1A:4D:58:85:4F;# remplacer par l'IP fixe vouluefixed-address 192.168.0.10;}
L’IP de votre serveur doit être fixe (pas de configuration automatique par dhcp) à 192.168.0.1. Installer votre serveur dhcp, sous Gentoo :
emerge -av dhcp
Remplir le fichier /etc/dhcp/dhpcd.conf, lancer le serveur dhcp.
Autorisé le partage de connexion internet:
echo 1 > /proc/sys/net/ipv4/ip_forward
Sous Gentoo, éditez le fichier /etc/sysctl.conf et décommentez pour l’avoir au démarage :
1
net.ipv4.ip_forward = 1
Serveur tftp

Le serveur tftp est en fait un serveur ftp minimal. Il permet de distribuer le fichier de boot, et tous les fichiers utiles au lancement du système, tels que les noyaux, les initrd, …

Voir ce lien pour voir le dossier d’exemple /mnt/pxe/ :

http://files.first-world.info/howto/pxe-exemple/mnt/pxe/

Tout le dossier est téléchargeable ici :

http://files.first-world.info/howto/pxe-exemple/mnt/pxe.tar.bz2

Le fichier pxelinux.0 sert de rom pour faire chargeur de démarrage.

Le dossier pxelinux.cfg contient le menu principal par défaut (pxelinux.cfg/default) mais on peut spécifier un fichier spécifique à un PC en l’identifiant par son adresse MAC. Je ne m’attarderai pas plus dessus.

J’ai rempli le dossier d’exemples divers, d’installeur réseau (pour installer par le réseau au lieu des cd), de live système, d’utilitaires, … j’ai mis aussi des fonds d’écran dans chaque menu, à vous de l’explorer un peu.

Dans votre distribution, installer le packet tftp-hpa, sous Gentoo

Sous gentoo, éditer le fichier /etc/conf.d/in.tftpd puis y mettre :

Code : Autre – Sélectionner

12
INTFTPD_PATH="/mnt/pxe/"INTFTPD_OPTS="-R 4096:5120 -a 192.168.0.1 -u nobody -s ${INTFTPD_PATH}"

Vous pouvez lancer le serveur in.tftpd, si votre distribution le supporte, vous pouvez le lancer comme un service

Serveur samba
Installez samba.
Mon smb.conf la ou « user » est mon utilisateur courant. Ensuite lancer samba.
[Global]
workgroup = WORKGROUP
netbiosname = PXE
server string = PXE Samba Server
log level = 1
log file = /var/log/samba/all.log
max log size = 50
hosts allow = 192.168.0.0/255.255.255.0 fe80::/10
hosts deny = 0.0.0.0/0
security = share
guest account = user
share modes = yes
encrypt passwords = yes
null passwords = yes
directory security mask = 0700
directory mode = 0700
create mask = 0600
force directory mode = 0700
force security mode = 0600
invalid users = root
map to guest = bad user
dos charset = 850
unix charset = ISO8859-15
obey pam restrictions = yes
pam password change = no
[images-pxe]
path = /mnt/share/read/iso/squashfs
read only = yes
browseable = yes
writable = no
guest ok = yes
guest only = yes
guest account = user
username = user
comment = PXE image for network boot
hosts allow = 192.168.0.0/255.255.255.0 fe80::/10
hosts deny = 0.0.0.0/0

Publié par