Forum Linux.noyau Déploiement noyau par PXE

Posté par  . Licence CC By‑SA.
Étiquettes :
2
21
mar.
2014

Bonjour,

Pour un projet de Master, j'ai besoin de vos conseils. Afin de pouvoir parvenir a la fin de mon projet j'aurais besoin de pouvoir récupérer des informations d'une clé USB branchée sur un poste client, qui bootera sur le réseau.

Je cherche donc à déployer un système minimal qui exécutera certaines commandes à son démarrage afin d'envoyer des infos au serveur. Je pense ainsi déployer un noyau linux afin d'avoir les outils nécessaires me permettant de récupérer les infos de la clé USB. Mais comment puis-je automatiser les commandes au démarrage du noyau ?

En vous remerciant par avance

Cordialement

  • # etudier ce qui est lancé apres le noyau

    Posté par  . Évalué à 2. Dernière modification le 22 mars 2014 à 11:16.

    en general c'est /sbin/init
    si tu remplaces /sbin/init par /bin/bash, tu aurais par exemple un simple shell.

    dans ton cas, tu veux probablement avoir un "livePXE" avec un OS complet,
    il faut donc regarder comment font les distribs,
    là encore generalement, c'est un systeme complet qui se trouve dans une image disque au format squashfs.

  • # C'est dans la doc

    Posté par  . Évalué à 3.

    Comme l'indique la documentation générale du noyau linux :

    https://www.kernel.org/doc/Documentation/kernel-parameters.txt

    Le paramètre init passé dans la ligne de commande qui lance le noyau

    init=[KNL]

    Format:
    Run specified binary instead of /sbin/init as init process.

    te permettra de lancer ce que tu voudras

  • # kernel

    Posté par  . Évalué à 1.

    Je ne cherche pas a déployer un OS complet, juste un mini système monté en ram qui puisse détecter et monter des périphériques basique et qui possède les outils de base comme cat, touch, grep, cut.

    voici un extrait de mon fichier de configuration PXE :
    LABEL fog.debug
    kernel fog/kernel/monbzImage
    append initrd=fog/images/moninit.gz root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns= init=fog/scripts/init.sh
    MENU LABEL Mon Debug Mode

    Cependant il me lance busybox (initramfs) je n'ai pas l'impression que mon déploiement fonctionne comme il faut. Et je n'ai pas l'impression que le paramètre init fonctionne :/

    • [^] # Re: kernel

      Posté par  . Évalué à 4.

      parce que ton init.sh ne se trouve plus sur fog mais dans /scripts
      qui se trouve à la racine de ton "OS"

      la racine de ton OS (/dev/ram0) etant générée à partir de "moninit.gz" qui doit etre un initrd valide.

    • [^] # Re: kernel

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

      Une solution serait de générer un kernel avec initramfs intégré, avec un outil comme Buildroot.
      (ce n'est pas compliqué de customiser les scripts d'init sur un tel système).

      Un tuto que j'avais fait à l'époque pour booter un kernel + initramfs avec lecture de MP3 sur une clé usb (Buildroot a évolué depuis mais le principe est là)

      http://agentoss.wordpress.com/2011/03/02/how-to-build-a-tiny-linux-mp3-player-system-using-buildroot/

      • [^] # Re: kernel

        Posté par  . Évalué à 1.

        D'accord, tout marche pour le déploiement du noyaux du coup =).

        Mais petite question, une fois le kernel démarré, est ce que il est possible du coup de faire appel à un menu PXE ? comme si je redémarrais en PXE mais en choisissant le menu que je veux démarrer mais sans redémarrer la machine

        • [^] # Re: kernel

          Posté par  . Évalué à 1.

          c'est quoi l'interet ?

          PXE te permet de choisir une action dans un menu/sous menu/sous sous menu

          si tu lui demandes de demarrer un noyau avec ton linux personnalisé (ton script)
          ce n'est pas pour revenir au menu PXE, c'est pour faire ce que tu as decidé de faire dans ta personnalisation (ton script)

          si tu veux offrir un choix à l'utilisateur, genre entre 2 OS, ben configure PXE pour offrir plusieurs choix.
          chez moi le PXE fournit un menu ressemblant à ca :

          • Boot Local
          • Live CD 32bits
          • Live CD 64bits
          • Maintenance
            • Clonezilla 32bits
            • Clonezilla 64bits
            • SysrescueCD
          • Tests
            • LiveCD Custom
            • LTSP

          par exemple la personne choisissant Maintenance, voit alors le menu remplacer par "clonezilla32, clonezilla64, sysrescuecd"

          • [^] # Re: kernel

            Posté par  . Évalué à 1.

            Après je connais le principe du PXE etc… la c'est juste que je dois me basé sur le système PXE mais sans le menu

            • [^] # Re: kernel

              Posté par  . Évalué à 3.

              ben tu fais un boot via PXE, qui ne propose qu'une seule entrée, sans timeout
              ainsi ca boot directement dessus.

              si tu bootes sur un noyau linux, avec un initramfs personnalisé, tu peux lancer ton script qui fera le menu pour l'utilisateur, lui proposera des choix.
              bref la meme chose que sous ton linux mais avec un linux minimaliste.

              • [^] # Re: kernel

                Posté par  . Évalué à 1.

                Mais entre deux je dois récupérer le SN de la clé USB. C'est pour cela que je déploie un kernel etc.
                Le kernel recupere le SN et l'envois au serveur le serveur compare avec la base de SN … etc.

                Donc il serait possible une fois ces actions faites, de pouvoir démarrer le menu PXE ?

                • [^] # Re: kernel

                  Posté par  . Évalué à 2. Dernière modification le 30 mars 2014 à 21:37.

                  tu lances ton noyau de deploiement,
                  tu changes l'image en fonction du SN de la clef USB

                  donc finalement ce n'est pas PXE qui doit faire le boulot (qui lui est classique),
                  mais ton OS de deploiement qui doit etre modifier pour charger l'image en fonction du SN

  • # re : kernel

    Posté par  . Évalué à 1.

    En fait c'est pour un projet scolaire. Pour tout dire mon prof souhaitais que je mette en place un système de déploiement PXE sécurisé par un système de clé USB.

    Au tout début j'ai décider de charger le menu depuis la clé USB, mais au final mon prof m'a dit qu'il ne voulais rien sur la clé USB.

    De ce fait, je dois me basé sur le numéros de la clé USB etc… mais pour la partie USB tout est bon.

    Je dois trouver un moyen de déployer après avoir fait la vérification de la clé USB. (J'utilise FOG en tant que solution de déploiement)

    Et chaque clé doit automatiquement déployer un OS différent, sans interaction avec l'utilisateur.

    Et je n'avais aucune idée si on pouvait rappeler/relancer le menu PXE sans redémarrer la machine

Suivre le flux des commentaires

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