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 NeoX . É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 Salk . É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 Valden . É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 NeoX . Évalué à 4.
parce que ton
init.sh
ne se trouve plus sur fog mais dans /scriptsqui 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 AgentSteel (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 Valden . É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 NeoX . É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 :
par exemple la personne choisissant Maintenance, voit alors le menu remplacer par "clonezilla32, clonezilla64, sysrescuecd"
[^] # Re: kernel
Posté par Valden . É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 NeoX . É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 Valden . É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 NeoX . É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 Valden . É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.