15/05/2010

PXE : Y a-t-il un bootloader sur l’réseau ?

Maquillage

Bon c’est bien gentil mais d’une part c’est moche et d’autre part c’est pas vraiment super pratique. On va donc faire un menu ressemblant à un bon vieux GRUB.
Tout d’abord on va tenter de faire les trucs proprement donc on va créer un petit dossier /var/tftp/tools qui contiendra les petits binaires et un autre /var/tftp/menu pour les menus.

On a donc cette arborescence :

/var/tftp
        /distros
            …
        /menu
        /tools
        /pxelinux.0
        /pxelinux.cfg
            /default

Il faut récupérer le binaire permettant de faire afficher un beau menu. Celui-ci se trouve dans syslinux.

# cp syslinux-3.81/com32/menu/vesamenu.c32 /var/tftp/tools

Il nous faut maintenant modifier le fichier pxelinux.cfg/default pour utiliser ce binaire et faire un truc plus classe :

DEFAULT tools/vesamenu.c32 menu/design.conf ~

MENU TITLE Mon PXE

LABEL Lenny I386
    MENU LABEL Installer Lenny I386
    KERNEL distros/debian/lenny/i386/linux
    APPEND vga=normal initrd=distros/debian/lenny/i386/initrd.gz

LABEL Lenny I386 Expert
    MENU LABEL Installer 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 Installer Lenny AMD64
    KERNEL distros/debian/lenny/amd64/linux
    APPEND vga=normal initrd=distros/debian/lenny/amd64/initrd.gz

LABEL Lenny amd64 expert
    MENU LABEL Installer Lenny AMD64 en mode Expert
    KERNEL distros/debian/lenny/amd64/linux
    APPEND priority=low vga=normal initrd=distros/debian/lenny/amd64/initrd.gz

TIMEOUT 0

La première ligne appelle le binaire en lui fournissant en argument le fichier design.conf que l’on va créer de ce pas.

/var/tftp/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

L’image de background doit être en png 24bits en 640*480 ce qui laisse pas mal de choix de fond d’écran.

Vous pouvez maintenant tester votre nouveau PXE tout en couleurs et bien plus fonctionnel. Vous avez maintenant un PXE ressemblant à un bon petit grub.

  1. khemael
    | #1

    Et pour ceux qui cherchent la ptite bête qui les empeche de faire correctement un PXE LiveCD Gentoo, c’est par ici :

    http://blog.dastrup.com/?p=12

    A adapter car un peu vieillo.

  2. | #2

    wget ftp://machinblabla.com/truc -qO c’est mieux…sinon ça ne met pas le fichier au bon endroit 😉

  3. | #3

    encore une petite coquille :
    # wget http://www.memtest.org/download/4.00/memtest86+-4.00.bin.gz
    tar xvf memtest86+-4.00.bin.gz
    # cp memtest86+-4.00/precomp.bin /var/tftp/tools/memtest

    on pourrait mettre une version à jour :
    # wget http://www.memtest.org/download/4.10/memtest86+-4.10.bin.gz
    et ceci n’est pas un tar
    gzip -d memtest86+-4.10.bin.gz && cp memtest86+-4.10.bin /var/tftp/tools/memtest

  4. | #4

    encore une petite coquille (désolé, le truc pour éditer ne fonctionne pas très bien…)
    reboot.c32 se trouve (dans la version à jour de syslinux -3.86-) dans syslinux-3.86/com32/modules/reboot.c32

  5. j0ck3r
    | #5

    Génial cet article ! Merci ^^

  6. | #6

    Encore un petit commentaire pour signaler que les manips sont exactement les même pour Ubuntu (étonnant non ?) en utilisant l’initrd.gz et le linux fournis par http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/ (pour Lucid Lynx AMD64, je vous laisse le soin de parcourir les répertoires pour les versions i386 et autres distribs)

    Prochaine étape : un PXE pour l’install de Windows ?

  7. | #7

    arghhh quel dommage de ne pas avoir continué le tuto sur la compilation des kernel pour le live nfs…
    je ne suis pas un expert de la compil, encore moins du debootstrap…je suis donc bloqué avec Tiny Core Linux…
    Une MAJ est-elle prévue ? (nb : j’ai remarqué que les suggestions de corrections que j’avais faites n’ont pas été intégrées au site)

  8. Lord
    | #8

    Sn4kY → merci j’ai corrigé pour le reboot.c32 . Par contre, il existe bien une version tarball de syslinux (j’ai pris l’habitude de les préférer).
    Concernant la compil du kernel c’est pas trop difficile, je te conseille ce tuto qui est prévu pour gentoo mais qui devrait passer comme sur des roulettes pour tout noyau nunux : http://www.gentoo.fr/install/configuration-noyau.htm . Il te faudra donc activer le support de root nfs dans les filesystems.
    Concernant Debootstrap, c’est encore plus simple puisqu’il s’agit en fait d’un script qui se charge de créer une arboressence debian ou ubuntu en téléchargeant sur internet tout ce qu’il faut :
    # debootstrap version_de_debian /endroit/ou/l’installer http://miroir.debian.que.tu.veux
    N’hésites pas si tu as encore des soucis (par irc serait plus simple).

  9. | #9

    @ Lord :
    je pense que je vais fortement m’inspirer du tuto pour rédiger le mien (avec des modifs particulières, notamment l’implémentation d’un apt-cacher)
    je mettrai bien sur en source geekfault.

  10. | #10

    OK, je crois que je viens de capter, en fait l’export NFS du debootstrap et le “kernel_perso” que tu décrit ici n’ont rien à voir…J’avais compris qu’on obtenait le “kernel_perso” en compilant je ne sais quoi a partir de debootstrap…d’où mon incompréhension…
    mais ayé, j’ai capté. effectivement, c’est mieux de se refaire un petit noyaux, aux oignons 🙂

  11. | #11

    Hop hop ! encore un petit feedback, vu que j’ai bien galéré, je vous en fait profiter.
    Pour pouvoir activer THE option “Root File system on NFS” vous devez au préalable activer DHCP et BOOTP (tant qu’à faire) dans “Networking” —> “Networking Options” —> “IP: Kernel level autoconfiguration”
    ensuite ça semble OK, (je pense que le module pour la carte réseau de mon eeePC 900 n’est pas intégré)

  12. | #12

    2uajz4

  13. | #13

    mc6v7p

  1. | #1
  2. | #2