J'ai compilé le noyau en faisant make menuconfig
et make
. J'essayais d'exécuter le bzImage dans qemu, en le faisant, qemu -kernel bzImage
mais cela n'a pas fonctionné avec le message d'erreur:
Unable to mount root fs on unknown-block(0.0)
Comment puis-je le réparer? Comment puis-je exécuter le bzImage dans qemu?
linux
linux-kernel
qemu
Coder404
la source
la source
Réponses:
Cela a fonctionné. Le noyau a bien démarré. L'erreur est:
Le noyau recherche un système de fichiers racine. Vous devez en fournir un. Vous ne pouvez pas interagir avec un noyau sans exécuter de processus dessus, et le processus initial doit être chargé de quelque part: lorsque le noyau démarre, il monte un système de fichiers (le système de fichiers racine) sur le répertoire
/
, puis exécute le programme/sbin/init
. Le programme init est normalement chargé d'exécuter des scripts de démarrage et de démarrer des services, y compris des programmes permettant aux utilisateurs de se connecter.Vous devez vous assurer que le noyau est capable de monter le système de fichiers racine. Il doit avoir des pilotes pour le type de système de fichiers et pour toutes les couches impliquées dans le périphérique de bloc (contrôleur de disque (adaptateur SCSI / SATA / IDE / USB /…), type de partition, etc.).
Linux offre une possibilité supplémentaire, qui est de charger un système de fichiers initial dans la RAM qui est utilisée pendant le processus de démarrage afin de localiser et de monter le système de fichiers racine. Ce système de fichiers initial peut contenir des modules qui gèrent le type de périphérique et de système de fichiers du système de fichiers racine. Il existe deux mécanismes légèrement différents: initrd et initramfs.
la source
Même si les systèmes de fichiers seront compilés seuls le noyau, un système de fichiers initial doit être créé qui sera présent dans la RAM pour exécuter le noyau. Pour créer ce système de fichiers ram initial, mkinitrd est utilisé. Dans ubuntu, mkinitramfs est utilisé à la place de cela
après cela, exécutez le noyau sur qemu
-initrd représente le système de fichiers ram initial
vous pouvez trouver le système de fichiers ram sous /boot/initramfs-linux.img
la source