Journal Grand challenge de boot réseau pas commum

Posté par  .
Étiquettes : aucune
0
14
mai
2004
Salut a tous :)

Alors voila, je vous explique ce que je veux faire :
Je voudrais pouvoir démarrer le réseau avec PXELinux, ça sa marche nickel, donc ça charge un noyau 2.4.24 patché pour y intégré en dur SHFS.
Le noyau a été configuré de tel sorte que quasi tout le matos de n'importe quel PC soit pris en compte [enfin une grande majoritée;)]
Pour l'instant ça c'est fait, ça marche nickel :)

Donc ensuite, une fois le noyau chargé en mémoire, il exécute le fichier linuxrc qui est inclu dans l'initrd (montage loop pour le voir)

Mais moi ce que je vais faire a présent, c'est faire un montage du / un peu a la façon NFS mais avec SHFS, et ça c'est pas possible encore :(

Mais ça n'est pas tout,
pour que pc puisse faire un montage SHFS, il faut que la carte réseau est été détecté, puis obtenir une IP via un DHCP
Or, l'initrd aillant une place limitée, je n'ai pas pu y intégrer les modules des cartes réseaux

Donc, je voudrais savoir, cher journal, si je suis parti de bon pied, ou s'il existe une solution plus interessante et qui pourrait marcher, car la je me sent assez mal parti
^^
  • # et du réseau a pas cher ?

    Posté par  . Évalué à 1.

    genre du realtek 8139 (100mbits) a 10€ la carte réseau pci ?

    un seul module a charger, et a moitié plus de probleme pour le montage shfs ;)

    c'est sur que c'est pas une vraie solution, mais c'est viable je pense, nan ?
  • # pivot_root ?

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

    Tu utilises pivot_root?

    Si oui, comment l'utilises-tu et pourquoi ça n'est pas possible de monter / avec SHFS via pivot_root?

    Pour l'instant, qu'est-ce qui est monté comme racine?

    C'est quoi le contenu de linuxrc? (j'arrive pas à voir le mien dans mon initrd...)
  • # Ou est le probleme?

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

    Or, l'initrd aillant une place limitée, je n'ai pas pu y intégrer les modules des cartes réseaux
    Qu'est-ce que tu raconte?
    il est pas limité juste a la taille de la ram
    Largement suffisant pour mettre les modules des cartes reseau
    et tu mets busybox pour le mount et le client dhcp
    c'est tout
  • # Agrandir le initrd

    Posté par  . Évalué à 1.

    Avec la commande rdev tu peux augmenter la taille du système de fichier initrd et y loger tout tes modules ainsi que dhcpd:


    rdev -r mon_bzImage 49152

    definit la taille par defaut d'un ramdisk à 48 Mo
    • [^] # Re: Agrandir le initrd

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

      hummm, je vient d'essayé,
      ca ne m'a rien, marqué, chose, qui peut etre normal

      du -h initrd me donne la meme taille
      je la mount, meme taille,
      et si j'essaye d'écrire dedans plus de chose, sapin possible :(
  • # IP

    Posté par  . Évalué à 2.

    Busybox va permettre de bien limiter la taille de ton initrd ( compilé c - de 1 Mo je crois avec bcp d'outils a l'interieur, mais faut un certain nombre de lib de la glibc et ca ca prend de la place)

    Pour ton ip, tu peux specifier a pxelinux qu'il te la donne automatiquement ( passé en paramètre au noyau) en ajoutant ca a ton label:

    IPAPPEND 1


    Sinon tu pourrais peut etre utiliser ltsp (www.ltsp.org) et modifier leur script qui lui charge / en NFS ( c aussi le fichier /linuxrc de leur ramdis, t'a qu'a monter en loop pour modifier). Leur noyau possede bcp de drivers de carte rezo, leur ramdisk utilise deja busybox, partir de cela te ferais gagner du tps je pense.
    (Pour info, ils utilisent aussi PXELinux pour booter)
    • [^] # Re: IP

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

      Ton post est tres interessant
      Je ne vais pas pouvoir utilisé NFS pour des raisons de sécurité, de routabilité et aussi parce que ca s'appuie sur UDP (dans son implementation la plus générale)
      Parce contre, je m'en vais de ce pas regardé comment ca se passe avec ltsp :)

      Thanks
  • # where is the probleme ?

    Posté par  . Évalué à 1.

    > Or, l'initrd aillant une place limitée, je n'ai pas pu y intégrer les modules des cartes réseaux

    ton initrd n'est pas normal. je n'ai jamais eu de pb de ce coté la.
    Jette un coup d'oeil dans le script knoppix_terminalserver sur n'importe quelle knoppix. Il y a tt ce qu'il faut.

    pour le dhcp :
    recupere le pump de knoppix
    puis fais dans linuxrc :

    insmod <les modules reseau idoines>
    pump -i eth[0 ou 1 ou 2]

    mount -t shfs ...

    et basta
    • [^] # Re: where is the probleme ?

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

      BusyBox comprends un client dhcp (et un insmod et un mount et plein d'autres trucs). Par ailleurs BB peut être compilé statiquement de manière à ne pas devoir intégrer la glibc contrairement à ce qu'un autre commentaire a dit plus haut (mais c'est pas sur non plus que ça fasse gagner de la place).

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

      • [^] # Re: where is the probleme ?

        Posté par  . Évalué à 1.

        T sur qu'en compilant statiquement y'a pas besoin de la glibc quand meme?
        D'après la doc de busybox:

        Supported C Libraries:

        glibc-2.0.x, glibc-2.1.x, glibc-2.2.x, glibc-2.3.x, uClibc.


        Pour moi ca veut dire qu'il faut quand meme fournir la glibc (et la lib NSS pour l'authentification, enfin ca depend de plusieurs parametres ca)
        • [^] # Re: where is the probleme ?

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

          Faut fournir la glibc à la compilation mais si tu décides de le compiler statiquement, il inclura tout ce qu'il faut dans les binaires et donc pas besoin de glibc après. Enfin je crois.

          pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

          • [^] # Re: where is the probleme ?

            Posté par  . Évalué à 1.

            Et c kel parametre a la compilation pour lui dire où trouver la glibc? Et si tu rajoutes un programme à la main dans ton initrd et que lui a besoin de la glibc, tu fais comment? y'a un lien entre tes lib de la glibc et busybox, comme pour les programmes? Me semble bizarre tt ca
            • [^] # Re: where is the probleme ?

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

              C'est clair que s'il te faut un autre programme qui a besoin de la glibc il va y avoir un problème mais sinon pour savoir ou trouver la glibc à la compilation, je suppose qu'il fait pareil que tous les autres programmes (je ne sait pas comment exactement mais peut-être tout simplement en suivant le lien donnée par /lib/libc.so.6) et ensuite il inclu les fonctions nécessaires dans le binaire final au lieu de les charger dynamiquement. Mais il me semble me souvenir que tu peux choisir quelle libc choisir en bidouillant le makefile (pour compiler en avec uClibc quand tu es sous glibc par exemple). Si ça t'intéresse vraiment, rtfm et expérimente mais je suis presque certains que c'est faisable.

              pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

              • [^] # Re: where is the probleme ?

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

                Avec BusyBox 1.00-pre2 qui traine sur mon disque dur:
                make menuconfig
                Build Options --->
                Build BusyBox as a static binary (no shared libs) (NEW)
                Help
                CONFIG_STATIC:
                If you want to build a static BusyBox binary, which does not
                use or require any shared libraries, then enable this option.
                This can make BusyBox be considerably larger, so you should
                leave this option false unless you have a good reason (i.e.
                your target platform does not support shared libraries, or
                you are building an initrd which doesn't need anything but
                BusyBox, etc).

                Most people will leave this set to 'N'.
                Apparement la version 1.00 est pas encore "stable" et cette option n'est peut être pas disponible dans la version "stable" mais bon...

                En fait apparement ya moyen de faire ça pour n'importe quel programme en utilisant l'option -static de gcc.

                pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Taille de l'initrd

    Posté par  . Évalué à 1.

    Meme si virtuellement la taille de l'initrd n'est pas limitée, il faut aussi penser au boot

    Quand l'ordi boot, il récupère l'initrd en RAM, il y a deja le noyau et un bout de PXElinux.
    Donc si on fait une initrd de 25 Mo, et qu'on a un poste qu'avec 32 Mo de ram, ba ca coince, + de place en ram pour décompresser
    Si il a fait une initrd qui peut s'adapter a bcp d'ordinateurs, il doit avoir pas mal de modules donc ca prend de la place...

Suivre le flux des commentaires

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