Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:boot_pxe [2011/01/26 15:06]
james ajout liveCD PXE
sysadmin:boot_pxe [2012/09/21 17:31] (Version actuelle)
james ajout tags
Ligne 1: Ligne 1:
 +{{tag>​pxe sysadmin tftp serveur boot howto liveCD NFSroot}}
 ====== Boot PXE ====== ====== Boot PXE ======
  
Ligne 20: Ligne 21:
  
 ==== Configuration du serveur DHCP ==== ==== Configuration du serveur DHCP ====
-next-server 
  
-TODO+Je ne vais pas reprendre ici toute la configuration,​ mais je vais lister les directives a ajouter par rapport a une configuration "​normale"​ : 
 +  * ajouter en global : <​code>​ 
 +# pour le boot reseau 
 +allow booting; 
 +allow bootp; 
 +</​code>​ 
 +  * ajouter dans le subnet/​shared-network/​host de votre choix :<​code>​ 
 +#​next-server is your network boot server 
 +next-server 192.168.1.40;​ 
 +filename "​pxelinux.0";​ 
 +</​code>​ 
 +ou "​192.168.1.40"​ est l'IP de votre serveur tftp et "​pxelinux.0"​ le fichier à télécharger. 
 +Vous pouvez bien sûr mixer les serveurs tftp et/ou les fichiers a télécharger en fonction des différents réseaux/​machines. Vous pouvez également utiliser un nom DNS et non une IP.
  
 +Voici par exemple la déclaration complete d'un subnet et celle d'un hote utilisant une configuration différente de celle par défaut :
 +<​code>​
 +subnet 192.168.1.0 netmask 255.255.255.0 {
 +  range 192.168.1.150 192.168.1.200;​
 +  option routers monrouteur.mondomaine.com;​
 +  option domain-name "​mondomaine.com mondomaine.org";​
 +  option domain-name-servers ns.mondomaine.com,​ ns2.mondomaine.com;​
 +  ​
 +  next-server pxeserver.mondomaine.com;​
 +  filename "​pxelinux.0";​
 +}
 +
 +[....]
 +
 +host athlon2600 {
 +        hardware ethernet ​      ​ab:​cd:​ef:​00:​01:​02;​
 +        fixed-address ​          ​mamachine.mondomaine.com;​
 +        filename "​GEEXBOX/​boot/​pxelinux.0";​
 +}
 +</​code>​
  
 ==== Mise en place de l'​arborescence pour le boot PXE ==== ==== Mise en place de l'​arborescence pour le boot PXE ====
Ligne 147: Ligne 179:
   * Fichier de configuration de PXE Linux   * Fichier de configuration de PXE Linux
     * Pour créer un fichier de configuration propre à chaque machine, deux choix de création s'​offrent à nous :     * Pour créer un fichier de configuration propre à chaque machine, deux choix de création s'​offrent à nous :
-      * 00-26-54-42-b1-d3-d4 (adresse MAC de la carte reseau, donc la machine)+      * 01-00-26-54-42-b1-d3-d4 ("​01-"​ suivi de l'adresse MAC de la carte reseau, donc la machine)
       * C0A80003 (qui correspond a l'IP de la machine "​192.168.0.3"​ en hexadecimal)       * C0A80003 (qui correspond a l'IP de la machine "​192.168.0.3"​ en hexadecimal)
     * Il faut bien sur privilégier le premier, car '​adresse IP peut ne pas etre fixe (attribution d'​adresse via DHCP sans réservation par exemple) alors que l'​adresse MAc est quant a elle fixe et unique.     * Il faut bien sur privilégier le premier, car '​adresse IP peut ne pas etre fixe (attribution d'​adresse via DHCP sans réservation par exemple) alors que l'​adresse MAc est quant a elle fixe et unique.
Ligne 189: Ligne 221:
 Je vous conseille les lectures suivantes : Je vous conseille les lectures suivantes :
   * http://​www.gentilkiwi.com/​documentations-s11-t-pxe.htm   * http://​www.gentilkiwi.com/​documentations-s11-t-pxe.htm
 +  * http://​www.isalo.org/​wiki.debian-fr/​index.php?​title=PXE
 +  * http://​www.syslinux.org/​wiki/​index.php/​PXELINUX (anglais)
 +  * http://​www.syslinux.org/​wiki/​index.php/​MEMDISK#​EXTLINUX.2FISOLINUX.2FPXELINUX.2FSYSLINUX
 +  * http://​random.kakaopor.hu/​ubuntu-12-04-live-nfspxe-boot-diskless-casper-kept
 +
 +===== Aller plus loin =====
 +  * http://​drbl.sourceforge.net/​ (Diskless Remote Boot in Linux)
 +  * http://​ipxe.org/​start (iPXE permet de booter en iSCSI, AoE, http, .... et peut s'​utiliser avec chainloader )
 +
 +===== liveCD ubuntu 12.04 en PXE =====
 +Quelques particularités concernant le boot d'un liveCD d'​ubuntu 12.04 precise en PXE :
 +  * Par defaut la commande nfsmount utilisée pour monter le / utilise maintenant NFSv4 et non plus NFSv3. Si comme moi vous voulez continuer a utiliser un serveur NFSv3 pour ca, lisez la suite.
 +  * L'​initrd du liveCD de la version i386 (la version amd64 n'a pas ce probleme) ne fonctionne pas : certainement a cause d'un probleme de génération de l'​initrd pour les noyaux "​-generic-pae",​ voir suite pour regénérer un initrd fonctionnel (sans le support du PAE donc)
 +
 +==== Faire fonctionner un boot de liveCD PXE ubuntu 12.04 en NFSv3 ====
 +  * comme d'​habitude récupérer l'​image iso du liveCD
 +  * il faut ensuite la monter et rendre ce point de montage accessible en NFS comme ci dessus :
 +    * <​code>​
 +# mkdir /​export/​ISOs/​ubuntu-12.04-desktop-amd64
 +# mount -o loop,ro /​export/​iso/​linux/​ubuntu/​12.04_precise/​ubuntu-12.04-desktop-amd64.iso /​export/​ISOs/​ubuntu-12.04-desktop-amd64
 +</​code>​
 +    * ajouter l'​export NFS :<​code>​
 +# echo "/​export/​ISOs/​ubuntu-12.04-desktop-amd64 *(ro,​no_root_squash,​nohide,​async,​no_subtree_check)"​ >> /​etc/​exports
 +# /​etc/​init.d/​nfs-kernel-server reload</​code>​
 +
 +Voila pour la partie facile, maintenant il va falloir extraire l'​initrd,​ et en modifier le contenu pour appeler la commande "mount -f nfs" au lieu de la commande "​nfsmount"​ et ainsi utiliser le NFSv3 au lieu du NFSv4 :
 +  * décompression de l'​initrd fourni :<​code>​
 +$ mkdir /​tmp/​ubuntu_boot
 +$ cd /​tmp/​ubuntu_boot
 +$ cat /​export/​ISOs/​ubuntu-12.04-desktop-amd64/​casper/​initrd.lz | lzcat | cpio -i
 +</​code>​
 +  * modifier le script en applicant le patch suivant : <​code>​
 +--- ./​scripts/​casper.orig 2012-05-15 15:​22:​04.000000000 +0200
 ++++ ./​scripts/​casper 2012-05-15 15:​24:​45.000000000 +0200
 +@@ -223,11 +223,11 @@ do_nfsmount() {
 +         ​NFSOPTS=""​
 +     fi
 +
 +-    [ "​$quiet"​ != "​y"​ ] && log_begin_msg "​Trying nfsmount -o nolock -o ro ${NFSOPTS} ${NFSROOT} ${mountpoint}"​
 ++    [ "​$quiet"​ != "​y"​ ] && log_begin_msg "​Trying mount -t nfs -o nolock -o ro ${NFSOPTS} ${NFSROOT} ${mountpoint}"​
 +     # FIXME: This while loop is an ugly HACK round an nfs bug
 +     i=0
 +     while [ "​$i"​ -lt 60 ]; do
 +-        nfsmount -o nolock -o ro ${NFSOPTS} "​${NFSROOT}"​ "​${mountpoint}"​ && rc=0 && break
 ++        mount -t nfs -o nolock -o ro ${NFSOPTS} "​${NFSROOT}"​ "​${mountpoint}"​ && rc=0 && break
 +         sleep 1
 +         ​i="​$(($i + 1))"
 +     ​done</​code>​ ou encore :<​code>​sed -i -e '​s/​nfsmount -o nolock/​mount -t nfs -o nolock/'​ /​tmp/​ubuntu_boot/​scripts/​casper</​code>​
 +  * Recompresser l'​initrd :<​code>​find . | cpio --quiet --dereference -o -H newc | lzma -c9 > /​tmp/​initrd_new.lz</​code>​
 +  * Rendre ce nouvel initrd ainsi que le noyau accessible en tftp en les copiant a la racine du serveur tftp :<​code>​
 +# mkdir -p /​tftpboot/​ubuntu-live/​12.04_precise/​amd64/​
 +# cp /​tmp/​initrd_new.lz /​tftpboot/​ubuntu-live/​12.04_precise/​amd64/​
 +# cp /​export/​ISOs/​ubuntu-12.04-desktop-amd64/​casper/​vmlinuz /​tftpboot/​ubuntu-live/​12.04_precise/​amd64/​
 +</​code>​
 +  * Il faut ensuite ajouter les lignes suivantes a votre fichier "/​tftpboot/​pxelinux.cfg/​default"​ (ou autre : voir plus haut pour les subtilités) :<​code>​
 +# Ubuntu Precise Pangolin 12.04 liveCD
 +label precise-amd64-liveCD
 +    menu label Ubuntu 12.04 ^Precise Pangolin amd64 LiveCD
 +    kernel ubuntu-live/​12.04_precise/​amd64/​vmlinuz
 +    append boot=casper netboot=nfs nfsroot=10.31.192.28:/​export/​ISOs/​ubuntu-12.04-desktop-amd64/​ initrd=ubuntu-live/​12.04_precise/​amd64/​initrd_nfsmount.lz -- debian-installer/​locale=fr_FR keyboard-configuration/​layoutcode=fr keyboard-configuration/​variantcode=oss
 +</​code>​
 +ou "​10.31.192.28"​ est l'IP de votre serveur NFS distribuant l'​image ISO montée dans "/​export/​ISOs/​ubuntu-12.04-desktop-amd64/"​ : adaptez les chemins le cas échéant.
 +
 +==== La même chose mais pour un liveCD i386 ====
 +Pour la version i386, l'​initrd présent sur le cdrom ne fonctionne pas (en tous cas chez moi :p) : il n'​arrive pas a charger les modules lors du boot , comme par exemple le fichier /​lib/​modules/​3.2.0-23-generic/​modules.dep.
 +
 +
 +Il a donc fallu générer un nouvel initrd en utilisant le noyau linux-image-3.2.0-23-generic-generic et non pas le linux-image-3.2.0-23-generic-pae d'​origine avant de réaliser les opérations décrites ci dessus.
 +
 +
 +Pour ce faire, il faut prendre une machine ubuntu 12.04 i386 (dans mon cas une simple VM utilisant l'iso du liveCD 12.04 i386) et :
 +<​code>#​ apt-get install linux-image-3.2.0-23-generic
 +# /​usr/​sbin/​mkinitramfs -o /​tmp/​initrd_3.2.0-23-generic.lz -c lzma 3.2.0-23-generic</​code>​
 +Il ne restait donc ensuite plus qu'a en extraire le contenu, patcher le script scripts/​casper pour utiliser le NFSv3 et recompresser
 +
sysadmin/boot_pxe.1296050813.txt.gz · Dernière modification: 2011/01/26 15:06 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0