Journal Menu lors d'un boot reseau

Posté par  .
Étiquettes : aucune
0
16
avr.
2004
Hello,

J'ai configuré des machines diskless pour qu'elles puissent booter a partir d'un serveur (contenant par exemple une image de knoppix). Pxe + Dhcp + tftp + nfsboot ... tout ca tout ca

C'est impec ca marche.

Ce que je voudrais c'est que les clients au boot puissent choisir entre plusieurs images disponibles sur le tftpboot.

Un simple menu, avant chargement de l'image reelle.

any hint ?

merci d'avance
  • # Re: Menu lors d'un boot reseau

    Posté par  . Évalué à 1.

    Ce que je voudrais c'est que les clients au boot puissent choisir entre plusieurs images disponibles sur le tftpboot.

    Un simple menu, avant chargement de l'image reelle.


    Pour le boot PXE, c'est pxelinux ( http://syslinux.zytor.com/pxe.php(...) ) qui est utilisé ? Dans ce cas, il suffit de configurer le fichier [racine tftp]/pxelinux.cfg/default (ou C0A8... selon l'adresse IP des stations diskless) avec plusieurs entrées, comme pour Syslinux.
    • [^] # Re: Menu lors d'un boot reseau

      Posté par  . Évalué à 1.

      Un simple menu

      Mmmh... j'y pense : le "menu", c'est la possibilité de choisir différentes options par le biais d'un prompt ou bien c'est un menu plus élaboré comme on peut avoir avec Grub (interface de type curse) ? Si c'est cette 2ème solution (à la Grub), j'ai répondu à côté de la plaque. Et il me semble que pour le moment, ce n'est pas possible avec Pxelinux.

      Note : je n'ai jamais essayé, mais il est peut-être possible de faire quelque chose avec Grub ; je verrais ça comme ça :
      1) Compiler Grub avec le support diskless (--enable-diskless) et la carte réseau appropriée du système diskless
      2) utiliser "pxegrub" (cf. dans le répertoire stage2), que le client récupère par TFTP
      3) configurer le serveur BOOTP/DHCP pour qu'il envoie le menu par TFTP (option T150)

      Une recherche sur google avec les termes "pxe grub t150" doit retourner des résultats intéressants.
      • [^] # Re: Menu lors d'un boot reseau

        Posté par  . Évalué à 1.

        he oui c'est bien le "menu" qui pose probleme

        > recherche sur google avec les termes "pxe grub t150"

        oui il y a bcp de chose , je vais regarder.

        merci du conseil
        • [^] # Re: Menu lors d'un boot reseau

          Posté par  . Évalué à 1.

          Plutôt que de glander en attendant le week-end, je viens d'essayer pxegrub ; j'en aurais probablement eu besoin un jour ou l'autre.
          Et bien ça marche, on peut avoir un menu Grub classique.
          
          Cette solution a un inconvénient quand on travaille avec différentes type cartes réseau, puisque -d'après la doc de Grub-, il est préférable de n'activer qu'un seul driver à la fois, ce qui fait qu'on doit avoir plusieurs versions de pxegrub. Bon, sur un réseau local avec du matériel clairement identifié, ça n'est pas forcément un problème. Bref...
           Si ça peut aider, v'là en gros ma configuration :
            - serveur TFTP/DHCP/NFS (Slackware 9.1) : cain, ip=192.168.1.1
            - client diskless : eden, mac=00:a1:b2:c3:d4:e5, ip=par dhcp (192.168.1.20)
          
          
          ------- /etc/dhcpd.conf (extrait) -------
          allow booting;
          allow bootp;
          
          # Option pour grub
          # Cette option doit etre hors d'un bloc semble-t-il, sinon ISC DHCPd rale...
          option option-150 code 150 = text;
          
          host eden {
                    hardware ethernet 00:a1:b2:c3:d4:e5;
                    fixed-address 192.168.1.20;
                    server-name "192.168.1.1";
                    # Le serveur TFTP fait un "chroot" dans le répertoire /tftpboot
                    # donc c'est bien "/grub/pxegrub" et non pas "/tftpboot/grub/pxegrub"
                    # idem pour "/tftpboot/grub/menu.lst"
                    filename "/grub/pxegrub";
                    option option-150 "(nd)/grub/menu.lst";
          }
          -------
          
          ------- /tftpboot/grub/menu.lst -------
          # Menu grub on ne peut plus classique
          color white/blue black/light-gray
          timeout 10
          default 0
          
          # 0. station diskless NFS-Root
          # Ne pas oublier "ip=dhcp" dans les parametres du noyau
          title nfs
             root (nd)
             kernel (nd)/boot/bz-2.4.25-grsec-dl ip=dhcp root=/dev/nfs nfsroot=192.168.1.1:/tftpboot/SLACK
          
          # 1. station diskless avec un ramdisk
          title secours
             root (nd)
             kernel (nd)/boot/bzsecours root=/dev/ram0 host=eden keymap=fr-latin1
             initrd (nd)/boot/secours.img.gz
          -------
          
          • [^] # Re: Menu lors d'un boot reseau

            Posté par  . Évalué à 1.

            Juste une précision : la machine est une plate-forme VIA Eden ; le driver réseau est le via-rhine.
          • [^] # Re: Menu lors d'un boot reseau

            Posté par  . Évalué à 1.

            Qu'est ce qu'il y a dans ton repertoire /tftpboot/grub a part pxegrub et menu.lst ?
            • [^] # Re: Menu lors d'un boot reseau

              Posté par  . Évalué à 1.

              Qu'est ce qu'il y a dans ton repertoire /tftpboot/grub a part pxegrub et menu.lst ?
              
              Rien d'autre...
              
              
              J'ai mis les images et autres initrd dans le répertoire "/tftpboot/boot" ; comme le serveur TFTP (tftp-hpa 0.36) effectue un changement de racine (cf config inetd.conf*), tous les fichiers qui sont téléchargés par TFTP le sont relativement au répertoire "chrooté" ici, j'utilise "/tftpboot", mais rien n'empêche d'utiliser un autre répertoire racine. C'est pour ça que dans mes fichiers de conf (dhcpd.conf, menu.lst) il n'y a aucune référence au répertoire "/tftpboot".
              
              
              Remarque : toutes les distributions GNU/Linux n'ont pas le même serveur TFTP et donc les switchs de configuration peuvent être différents, voire ne pas être disponibles.
              
              
              ~# cd /tftpboot && tree .
              .
              |-- boot/
              |   |--bz-2.4.25-grsec-dl
              |   |--bzsecours
              |   |--bztest-2.6.3
              |   |--initrd.img
              |   `--secours.img.gz
              `-- grub/
                  |-- menu.lst
                  `-- pxegrub
              
              
              (*) ----- /etc/inetd.conf -----
              # "-s [répertoire]" : permet au serveur TFTP de changer de racine (chroot)
              # "-u [user] : le serveur TFTP prend l'identité de l'utilisateur [user]
              tftp   dgram   udp   wait    root    /usr/sbin/tcpd  in.tftpd -p -t 30 -v -u tftp -s /tftpboot
              
              • [^] # Re: Menu lors d'un boot reseau

                Posté par  . Évalué à 1.

                ok ca marche , en fait mon pb etait :

                la machine sur laquelle j'essayais a 2 cartes reseau : la carte mere et une carte additionnelle . c'est la carte mere qui va chercher pxegrub mais ensuite celui-ci utilise la carte reseau additionnelle pour se connecter... evidement ca marche pas : elle n'est pas sur le meme reseau !
                J'ai viré la carte additionnelle, et evidement maintenant ca marche.
                J'ai le menu , et je peux choisir de booter ce que je veux.
                Impeccable .

                Je n'ai pas encore trouvé comment forcer pxegrub a prendre la bonne carte reseau. en gros l'equivalent de "ether=10,0x300,eth0" sur la ligne de commande du kernel. Il va bien falloir que je trouve, car j'ai besoin de cette deuxieme carte

                Merci bcp pour ton aide
  • # Re: Menu lors d'un boot reseau

    Posté par  (site web personnel) . Évalué à 1.

    Tu peux donner des adresses, des docs ?
    Merci :)
    • [^] # Re: Menu lors d'un boot reseau

      Posté par  . Évalué à 1.

      pas de doc
      juste la reproduction au propre et en dur du knoppix terminal server en particulier sa version openmosix.

      j'ai le cd copié sur le serveur, monté en -o loop. l'image initrd et vmlinux copies dans /tftpboot
      Et hop je boote les machines et j'ai un cluster...

      maintenant je voudrais generaliser pour pouvoir choisir une image donnée quand je boote les clients sans devoir trifouiller dans /tftpboot ou dhcpd a chaque fois.

      j'ai bien vu
      pxelinux (syslinux)
      bpbatch
      Ka

      bpbatch est le plus riche mais j'ai du mal , je ne trouve pas d'exemples simples . Plusieurs de ces systemes demande pxe2.0 alors que mes machines sont presque toutes pxe 0.9
      • [^] # Re: Menu lors d'un boot reseau

        Posté par  . Évalué à 1.

        Hello


        Je suis en stage de fin de DUT, et j'ai un projet où je dois faire la meme chose que toi
        J'ai déjà commencé, et j'utilise BpBatch, mais mon tuteur m'a dis de regarder aussi autre chose pour voir si kelke chose de mieux existe
        Tu pourrai me faire un topo de ce que tu a utilisé et de ce ke tu as fais stp?
        (j'ai deja un menu assez sommaire de boot d'images de diskettes si ca t'interesse)
        • [^] # Re: Menu lors d'un boot reseau

          Posté par  . Évalué à 1.

          Pour l'instant je n'ai rien fait du tout. En particulier parceque je n'arrive pas a passer l'option "-i" a BpBatch. a cause de pxe 0.9 je pense.

          Bref les logs du tftpd m'indiquent que BpBatch cherche a recuperer "bpbatch.bpb" mais je n'arrive pas a ecrire ce fichier. Tous les exemples donnés sur le site sont bcp trop compliqués. C'est souvent pour le chargement de tout un os sur le disque du client. Alors que je veux juste charger des choses tres simples totalement diskless comme :
          - knoppix openmosix
          - les differentes morphix
          - mandrake move
          - un simple os+ serveur X pour faire terminal
          - ... etc

          si tu pouvais me montrer ton .bpb ca m'aiderait bcp .

          sinon je vais regarder du cote de grub comme me le conseille unk

          BTW : au fait qu'est ce qu'il reproche a BpBatch ton tuteur ?
          • [^] # Re: Menu lors d'un boot reseau

            Posté par  . Évalué à 1.

            a toi aussi tu a le pb de l'option "-i". En effet j'essayais de l'utiliser mais je n'optenais pas de prompt, il chargeai directement le fichier bpbatch.bpb.
            Donc me suis pas fais chier, g modifié directement ce fichier.
            Mon bpb est vraiment pas bien fais(mea culpa) et il ne permet que de charger des images de disquettes(ici une diskette de boot windows 98 car d'autres images de diskettes merdent, il met "unable to open remote file", je comprend tjs pas pk mais bon, a voir...)

            Set CacheNever="ON" <- ca c'est car il veut pas mettre en cache, je c pas pk
            #Changer ici le mot de passe
            Set MDP="jojo"


            #Pour passer approximativement de qwerty en azerty
            Remapkeys "aAqQwWzZ;:mM" "qQaAzZwWmM;:"

            #Crypte le mot de passe
            MD5 "$MDP" mdp_crypt

            :again
            DrawWindow 150 200 400 160 "Menu"
            TextAttr Black LightGray
            At 15,20 Print "1- Windows 98"
            At 17,20 Print "2- Entrer le mot de passe"
            At 20,20 GetKey(touche)
            if "$touche" == "1" goto win98
            if "$touche" == "2" goto password
            goto again

            :win98
            LoadRamDisk "images/awin98.img"
            FloppyBoot
            goto fin

            :password
            Clear
            DrawWindow 150 200 350 160 "Mot de passe"
            TextAttr Black LightGray
            At 17,20 Print "Mot de passe : "
            GetPasswd userpass

            MD5 "$userpass" mdp_user
            if "$mdp_crypt" == "$mdp_user" goto ok
            goto again

            :ok
            Clear
            DrawWindow 150 200 400 160 "Menu protege par mot de passe"
            TextAttr Black LightGray
            At 15,20 Print "1- Windows 98"
            At 17,20 Print "2- Windows 98"
            At 20,20 GetKey(touche_user)
            if "$touche_user" == "1" goto win98
            if "$touche_user" == "2" goto win98
            goto ok


            :fin
            CloseGraph
            #interact



            Désolé du nombre de goto, mais g pas trouvé mieux, et la doc de bpbatch est pas super bien détaillée sur les if.

            Quand a mon tuteur, en fait c pas k'il aime aps, c k'il veut ke je regarde si autre chose existe pour voir si y'a pas un truc mieux(si t'a des essai concluant avec grub, fait le moi savoir et dis moi tt ce que t'a fais :-p)

            TODO: booter sur des images de disque dur(y'a pas kelku'un ki pourait en envoyer ou m'indiquer où en trouver facilement sur internet pour faire des tests concluants?) windows ou de kernel linux
            • [^] # Re: Menu lors d'un boot reseau

              Posté par  . Évalué à 1.

              grand merci
              cela m'a permis de demarer le travail.

              Mais je suis tombé sur un pb un peu plus loin a cause du fait que je cherche a charger un pxelinux (car c'est une installation qui marche deja) :
              si je fais un tftpboot "toto/tata/pxelinux.0"
              il n'y a pas de "cd toto/tata" et donc pxelinux.0 s'attend a trouver "pxelinux.cfg/default" a la racine où a ete chargé bpbatch.bpb ...

              Si je met tout a la racine, c'est ok ca demare , mais je perd la possibilité de faire un choix (car j'ai plusieurs installations qui demarent grace a pxelinux.0 et des noms de fichiers identiques mais dans des repertoires differents)

              J'ai rapidement fouillé la doc de pxelinux mais je n'ai pour l'instant rien trouvé.

              J'ai essayé LinuxBoot mais ca marche tres mal
              • [^] # Re: Menu lors d'un boot reseau

                Posté par  . Évalué à 1.

                As-tu reussi a creer ton menu? pour chaque option de ton menu, tu pourrai faire un "tftpboot mon_image" et avoir plein d'images avec des noms differents genre pxelinux.0 pxelinux2.0 (bon pour s'y retrouver c galere). Enfin je dis peut etre une connerie, pxelinux a peut etre besoin du fichier pxelinux.0 obligatoirement(je suis aps allé voir). Je suis pas très familier avec pxelinux, tu pourrai détailler un peu tt ce que t'a fais stp?
                • [^] # Re: Menu lors d'un boot reseau

                  Posté par  . Évalué à 1.

                  > As-tu reussi a creer ton menu?

                  oui oui impeccable. merci

                  > tftpboot mon_image" et avoir plein d'images avec des noms differents genre pxelinux.0

                  c'est le pb : si je fais :
                  TFTPBoot "knoppix-openmosix/pxelinux.0";
                  pxelinux veut absolument trouver sa configuration dans "<repertoire de bpbatch>/pxelinux.cfg/" et non pas dans "knoppix-openmosix/pxelinux.cfg/"
                  Pas moyen de changer ca. pxelinux est en assembleur. et non en c , je n'ai donc pas pu lui coller un trick du genre le renommer et faire "if argv[0] != "pxelinux.0" alors chercher "argv[0]/pxelinux.cfg/default" sinon valeurs habituelles"

                  un autre truc aurait ete de changer le parametre dhcp "option pxelinux.pathprefix ..." en fonction du choix mais impossible de le modifier dans bpbatch.bpb

                  bref pour l'instant je laisse tomber et me concentre sur pxegrub qui marche (a peu pres) cf. posts plus haut.
                  • [^] # Re: Menu lors d'un boot reseau

                    Posté par  . Évalué à 1.

                    Tu pourrai quand meme me donner ton .bpb que je vois ce ke tu avais fais(g pa envi d'abandonner l'idée tt de suite) et tes fichiers de config de pxegrub(que ej vois a koi ca ressemble) pour voir ce que ca peut donner.
                    Essai de faire ca assez "simpliste" stp, je débute dans le monde linux
                    • [^] # Re: Menu lors d'un boot reseau

                      Posté par  . Évalué à 1.

                      comme je l'ai dit , j'ai juste remplacé :
                      :win98
                      LoadRamDisk "images/awin98.img"
                      FloppyBoot
                      goto fin

                      par
                      :win98
                      TFTPBoot "knoppix-openmosix/pxelinux.0";
                      goto fin

                      pour tester une installation en dur de knoppix terminalserver. Rien de plus. mais ca ne marche pas.

                      le reperoire tftp : cd tftpboot && tree
                      .
                      |-- bpb
                      | |-- INSTALL
                      | |-- LICENSE
                      | |-- bpbatch
                      | |-- bpbatch.bpb
                      | |-- bpbatch.hlp
                      | |-- bpbatch.ovl
                      | |-- mrbatch
                      | |-- mrbatch.exe
                      | |-- mrzip
                      | |-- mrzip.exe
                      | |-- readme
                      | `-- whatsnew
                      `-- knoppix-openmosix
                      |-- boot.msg
                      |-- etherboot.nbi
                      |-- german.kbd
                      |-- logo.16
                      |-- miniroot.gz
                      |-- pxelinux.0
                      |-- pxelinux.cfg
                      | `-- default
                      `-- vmlinuz


                      pour le grub c'est comme indiqué plus haut :
                      il faut que pxegrub soit compilé pour les carte reseau qu'on va utiliser.
                      repretoire tftpboot :
                      |-- grub
                      | |-- menu.lst
                      | |-- pxegrub


                      dhcp.conf :
                      option option-150 code 150 = text;
                      subnet 192.168.0.0 netmask 255.255.255.0 {
                      (...)
                      filename "grub/pxegrub";
                      option option-150 "(nd)/grub/menu.lst";
                      (..)
                      }

                      menu.lst est comme un menu classique :
                      color white/blue black/light-gray
                      timeout 10
                      default 0

                      # 0. station diskless NFS-Root
                      title knoppix-openmosix
                      root (nd)
                      kernel (nd)/knoppix-openmosix/vmlinuz textmode nfsdir=192.168.0.5:/cdrom nodhcp lang=fr ramdisk_size=100000 init=/etc/init apm=power-off nomce noeject noprompt vga=791 quiet BOOT_IMAGE=knoppix
                      initrd= (nd)/knoppix-openmosix/miniroot.gz

                      le (nd) c'est pour "network device"
                      • [^] # Re: Menu lors d'un boot reseau

                        Posté par  . Évalué à 1.

                        Bon ba je crois ke je v aller jeter un coup d'oeil à pxegrub lundi matin serieusement (et surtt à la doc paske g jms utilisé grub, seulement lilo)
                        Merci, et si tu fais de nouvelles decouvertes sympathiques, hesite pas à poster ici, ca m'interesse bcp :-)
  • # Re: Menu lors d'un boot reseau

    Posté par  (site web personnel) . Évalué à 1.

    Dans etherboot y a quelque chose du genre
    mgl ou un truc du genre
    si tu veux je peux te le retrouver avec des fichiers d'exemple
    mais la j'ai la flemme ;)
  • # Re: Menu lors d'un boot reseau

    Posté par  . Évalué à 1.

    J'avais tenté de faire la même chose et j'y était parvenu après 50000 tentatives, mais c'est assez ancien et je ne souviens plus très bien des détails.

    J'utilise une carte 3Com 3c905C-TX qui à la possibilité de booter en réseau via en soft intègré qui s'appele MBA.

    Ma config marche en bootp, je n'ai pas essayé en dhcp car il n'y a qu'un seul client.

    Les tentatives avec nbgrub ne marchaient pas à cause d'un bug spécifique entre
    grub et ma carte réseau sinon les options dans bootptab auraient été les suivantes:

    bf=/boot/nbgrub:\
    T150="/netboot/a/etc/menu.lst":

    Pour contourner le problème j'ai utilisé syslinux d'un manière un peu particulière :

    j'ai créé une ramdisk formatée en fat16, installé syslinux dessus et copié un kernel, après j'ai balancé la ramdisk dans un fichier
    ensuite j'utilise l'utilitaire de 3Com qui s'appele imggen pour ajouter à ce fichier le "MBA BootWare support"
    Ce qui est un peu particulier parce que normalement on envoie directement un kernel et pas un systeme de fichier, mais cela à marché.

    exemple de ce qu'il y a dans le syslinux.cfg

    label linux
    kernel linuxnfs
    append ip=:192.168.1.3:192.168.1.1:255.255.255.0::: nfsroot=192.168.1.2:/netboot/a

    label linux2
    kernel linux
    append ip::::::autoconf nfsroot=192.168.1.2:/netboot/a

    Donc ainsi on boot sur un espèce de file system virtuel au lieu de booter directement
    avec un kernel, du coup en faisant un fs assez grand tu peu mettre plusieurs kernels
    dessus dans mon cas y'a linux et linuxnfs.

    j'ajoute mon bootptab en prime au cas ou :)

    # /etc/bootptab: database for bootp server (/usr/sbin/bootpd)

    a:\
    ht=ethernet:\
    ha=0001020FB243:\
    ip=192.168.1.3:\
    sm=255.255.255.0:\
    gw=192.168.1.1:\
    sa=192.168.1.2:\
    rp=/netboot/a:\
    hd=/netboot/a:\
    to=3600:\
    #bf=/boot/vmmulti:\ (l'image avec syslinux)
    bf=/boot/vmlinuz:\ (un kernel normal)
    #T129="root=/dev/nfs ip=::::::autoconf": (cette option est censé remplacé le "append" pour les paramètres du kernel mais ça marche pas)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.