Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sysadmin:boot_pxe [2012/02/08 14:13] james [Références] ajout lien recap img iso bin |
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 223: | Ligne 224: | ||
* http://www.syslinux.org/wiki/index.php/PXELINUX (anglais) | * http://www.syslinux.org/wiki/index.php/PXELINUX (anglais) | ||
* http://www.syslinux.org/wiki/index.php/MEMDISK#EXTLINUX.2FISOLINUX.2FPXELINUX.2FSYSLINUX | * 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 ===== | ===== Aller plus loin ===== | ||
* http://drbl.sourceforge.net/ (Diskless Remote Boot in Linux) | * 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 ) | * 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 | ||