Bonjour,
voila j'ai créer un fichier image que j'ai partitionné (1 partition). Puis j'ai installé un noyau (dans boot/), un fichier init tres simple qui dit "hello world" (dans sbin/). J'ai ensuite configuré mon fichier lilo.conf (dans etc/) et lancer la commance lilo. Quand j'émule mon image (qemu), j'ai bien au démarrage deux options de noyau. Mais quand j'en choisie un, je vois bien le noyau se lancer, puis s'arreter d'un coup, sans lancer init et je ne comprend pas pourquoi :(
je vous donne un extrait de mon fichier lilo.conf :
image=boot/noyau
label="noyau-application"
initrd=sbin/init
image=boot/noyau
label="noyau-maintenance"
initrd=sbin/init
je veux lancer le meme noyau mais un noyau va lancer un jeu, et l'autre va lancer une console(pour la maintenance). Ici je veux pour l'instant lancer uniquement mon fichier init peu importe le noyau choisi.
je ne comprend pas trop la commande initrd, je ne sais pas pour ce que je veux faire si elle ne peut pas etre remplacé.
je vous remercie d'avance pour vos conseils et votre aide.
# initrd = une abrorescence complete avec plein de chose dedans
Posté par NeoX . Évalué à 2.
l'initrd c'est un fichier compressé contenant plein de chose dedans, comme les pilotes et programmes pour gerer le LVM par exemple.
dans ton cas tu veux juste l'option (en grub)
append="init=/sbin/init"
des exemples dans la documentation de lilo
# reponse
Posté par cosmoff . Évalué à 1.
merci de m'avoir répondu.
j'ai essayé la ligne
append="init=/sbin/init"
mais aussi
append="init=sbin/init"
et
append="sbin/init"
mais non mon noyau ne lance rien :(
c'est tres bizarre car à la fin de son exécution, le noyau est sensé lancer automatiquement le programme init qui se trouve dans /sbin. Or quand je met juste dans mon fichier lilo.conf :
ca devrait me lancer automatiquement le programme init, peu importe quel label je choisis à l’amorçage. Or non, quelqu'un à une idée?image=boot/noyau
label="noyau-application"
image=boot/noyau
label="noyau-maintenance"
[^] # Re: reponse
Posté par Marotte ⛧ . Évalué à 2.
Et
init=/sbin/init
dans ta conf LILO ?Une raison d’utiliser LILO plutôt que GRUB ?
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
j'ai essayé, lilo ne reconnait pas le paramètre init.
sur ce que j'ai vu sur internet, et qu'il faut passer le paramètre append dans le fichier lilo.conf, ce qui permet de transmettre des parametres au noyau et donc d'indiquer l'emplacement de mon fichier init. Mais ca ne marche toujours pas…
je continue de chercher…
J'ai pris lilo car mon prof me l'a imposé, c'est plus simple à mettre en oeuvre apparemment ;)
[^] # Re: reponse
Posté par nono14 (site web personnel) . Évalué à 2.
cat /proc/cmdline
pour voir les options passées au noyau
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
alors j'ai crée une image de base, donc dans mon image je n'ai qu'un repertoire boot, un etc et sbin, je ne peux donc pas faire ta commande :(
[^] # Re: reponse
Posté par NeoX . Évalué à 2.
et si tu definis le append="init=/bin/bash" ou append="init=/bin/sh"
tu obtiens bien un shell ?
c'est quoi le partitionnement et le type de partition de ton OS ?
si ca se trouve le noyau se lance, mais n'arrive pas à monter le filesystem pour ensuite trouve /sbin/init ou /bin/sh, etc
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
append="init=/bin/bash" ou append="init=/bin/sh" me retourne bien un shell, et comme tu l'avais pensé, le shell me retourne :
"Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,0)"
le noyau est incapable de monter le systeme de ficher racine ce qui explique pourquoi il ne trouve pas init, mais je ne comprend pas pourquoi.
alors j'ai choisi une partition en ext2 ce qui devrais marcher normalement. Et mon image n'a qu'une seul partition.
[^] # Re: reponse
Posté par NeoX . Évalué à 3.
ton noyau ne va pas le trouver tout seul par magie,
il doit falloir lui preciser ou il se trouve
ca doit etre l'option lilo
root=/dev/sdXY
ou
root=UUID=lesuperuuiddelapartitionquicontientlaracinedetonsysteme
à ajouter dans le APPEND
donc
append="root=/dev/sdaXY init=/bin/bash"
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
j'avais déja placé cette commande, je te montre mon fichier lilo.conf ca sera peut etre plus simple:
```
boot=/dev/loop0
disk=/dev/loop0
bios=0x80
sectors=63
heads=255
cylinders=1024
root=/dev/sda
install=menu
prompt
timeout=100
map=boot/map
read-only
image=boot/noyau
label="jeux"
append="init=/sbin/init"
image=boot/noyau
label="maintenance"
append="init=/sbin/init"
```
j'ai quand meme mi :
append="root=/dev/sda init=/sbin/init" ou append="root=/dev/sda init=/bin/bash"
mais ca me met toujours la ligne kernel panic impossible de monter le systeme de fichier racine
[^] # Re: reponse
Posté par NeoX . Évalué à 3.
ton /boot ou ton / est avec quel systeme de fichier ?
ton noyau a-t-il le support pour ce systeme de fichier compilé EN DUR
[^] # Re: reponse
Posté par nono14 (site web personnel) . Évalué à 2. Dernière modification le 11 novembre 2016 à 13:25.
ou
initrd root=/dev/sda1
plutot , non ?
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
je t'explique :
j'ai déja créer un systeme embarqué avec les commandes :
je monte le fichier image avec la commande mount, puis je place un répertoire boot ou je met mon noyau, je crée un repertoire sbin ou je place mon fichier init, et un repertoire etc avec mon fichier lilo.confpour créer une image de 8Mo:
dd if=/dev/zero of=image.img bs=1M count=8
ensuite je créer un systeme de fichier:
/sbin/mkfs.ext2 image.img
j'exécute la commande lilo, j'émule avec qemu et ca marche parfaitement, je recois bien "coucou ca va" de mon init. Donc mon noyau a bien créer un systeme de fichier et ensuite lancer mon init.
mon probleme se localise quand je veux partionner l'image. Des que je partitionne avec /sbin/fdisk image.img , je crée une seul partition et ca ne marche plus, bien que je refais la meme démarche :
je créer un systeme de fichier sur ma partition :
/sbin/mkfs.ext2 /dev/mapper/loop0p1 ou /dev/mapper/loop0p1 designe ma partition 1.
ensuite je monte ma partition 1, installe le noyau, le fichier init…
et quand j'émule, ca me met kernel panic impossible de créer le systeme de fichier racine, alors que la demarche est normalement pareil.
as tu une idée du probleme ?
[^] # Re: reponse
Posté par nono14 (site web personnel) . Évalué à 2. Dernière modification le 11 novembre 2016 à 13:46.
perso je passerais par le loopback pour le partitionnement
ps: perif dans /dev ou udev ?
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
[^] # Re: reponse
Posté par NeoX . Évalué à 2.
et si tu faisais une partition plutot que de formater l'image.
fdisk image.img
et ensuite seulement, faire le mkfs sur /dev/loop0p1
ce qui devrait correspondre à /dev/sda1 dans la machine virtuelle qemu
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
ca marche !!
je ne comprend pas trop comment tu as trouvé la solution, en faite le /dev/loop0p1 désigne bien un périphérique virtuel, et ce périphérique virtuel est lié à la partition sda1?
[^] # Re: reponse
Posté par NeoX . Évalué à 2.
quand tu crees l'image, tu crees le disque dur qui servira dans la VM
tu ne peux pas (enfin ce n'est pas recommandé) installer l'OS sur le disque,
il faut l'installer sur une partition.
donc il faut partitionner le disque virtuel
=> il faut partitionner le fichier image
et seulement ensuite formater la partition.
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
ok, mais pourquoi mettre root=/dev/sda1 ? car la partition de mon fichier image.img est sur le périphérique loop0p1 ?
[^] # Re: reponse
Posté par NeoX . Évalué à 4.
tout simplement parce que
image.img = le fichier qui contient ton disque dur virtuel
[^] # Re: reponse
Posté par cosmoff . Évalué à 1.
ok j'ai compris ;)
en tout cas merci beaucoup NeoX pour ton aide et ton temps, c'est vraiment sympa de partager ton savoir !
[^] # Re: reponse
Posté par NeoX . Évalué à 2.
j'ai appris des anciens,
je suis maintenant parmi les anciens
et je transmet mon savoir
et je ne fais donc que boucler la boucle ;)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.