15/05/2010

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

Ajouts de nouvelles fonctions

Il est possible d’ajouter quelques fonctionnalités bien pratiques comme par exemple le fameux Memtest permettant de tester ses barettes de RAM ou bien ajouter HDT qui vous permettra d’obtenir de nombreuses informations concernant la machine sans même booter un OS.

Un sous-menu

Pour créer un sous-menu, il suffit de refaire appel à vesamenu.c32 et lui indiquer un autre fichier de conf :

/var/tftp/pxelinux.cfg/default
LABEL Outils systèmes
    MENU LABEL Outils systèmes >>
    KERNEL tools/vesamenu.c32
    APPEND menu/design.conf menu/systemes.conf
/var/tftp/menu/systemes.conf
MENU TITLE Outils Systèmes

LABEL retour_menu
    MENU LABEL <- Retour menu principal
    KERNEL tools/vesamenu.c32
    APPEND menu/design.conf ~

LABEL

Le ~ correspond au menu par défaut.

MemTest

On le récupère

# 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
/var/tftp/menu/systemes.conf
LABEL memtest
    MENU LABEL ^MemTest 4.0
    KERNEL tools/memtest

Et voilà MemTest est désormais intégré.

HDT

HDT fait partie de syslinux donc il faut le récupérer :

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

Il faut récupérer le fichier pci.ids qui se trouve sur sourceforge et le placer dans notre dossier /var/tftp/tools et enfin récupérer le fichier /lib/modules/`uname -r`/modules.pcimap à copier dans le même dossier.
Maintenant que tout est en place éditons, le fameux

/var/tftp/menu/systemes.conf
LABEL HDT
    MENU LABEL ^Hardware Detection Test
    KERNEL tools/hdt.c32
    APPEND modules=tools/modules.pcimap pciids=tools/pci.ids memtest=tools/memtest

Et voili voilou

Reboot

Une petite option pour reboot pour le fun :

# cp syslinux-3.81/com32/modules/reboot.c32 /var/tftp/tools/reboot.c32
/var/tftp/menu/systemes.conf
LABEL reboot
    MENU LABEL ^Reboot
    KERNEL tools/reboot.c32

Boot Local

Ajoutons une option pour tout de même booter sur son disque dur.

# cp syslinux-3.81/com32/samples/localboot.c32 /var/tftp/tools/localboot.c32
/var/tftp/menu/systemes.conf
LABEL LocalBoot
    MENU LABEL ^Boot Local
    KERNEL tools/localboot.c32

On a au final ces deux écrans :

PXE main menu

Image du menu principale


Menu des fonctionnalités

Menu des fonctionnalités

Et maintenant que nous avons un PXE fonctionnel, pratique et regardable passons au choses sérieuses : un vrai linux par le réseau.

  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

  14. | #14

    qol5kb

  1. | #1
  2. | #2