Compilé el núcleo haciendo make menuconfig
y make
. Intenté ejecutar bzImage en qemu, qemu -kernel bzImage
pero no funcionó con el mensaje de error:
Unable to mount root fs on unknown-block(0.0)
¿Cómo puedo arreglarlo? ¿Cómo puedo ejecutar bzImage en qemu?
linux
linux-kernel
qemu
Codificador404
fuente
fuente
Respuestas:
Funcionó. El grano arrancó bien. El error es:
El núcleo está buscando un sistema de archivos raíz. Necesitas proporcionar uno. No puede interactuar con un kernel sin ejecutar procesos en él, y el proceso inicial debe cargarse desde algún lugar: cuando se inicia el kernel, monta un sistema de archivos (el sistema de archivos raíz) en el directorio
/
, luego ejecuta el programa/sbin/init
. El programa init normalmente se encarga de ejecutar scripts de arranque e iniciar servicios, incluidos los programas que permiten a los usuarios iniciar sesión.Debe asegurarse de que el núcleo pueda montar el sistema de archivos raíz. Debe tener controladores para el tipo de sistema de archivos y para todas las capas involucradas en el dispositivo de bloque (controlador de disco (adaptador SCSI / SATA / IDE / USB / ...), tipo de partición, etc.).
Linux ofrece una posibilidad adicional, que es cargar un sistema de archivos inicial en la RAM que se usa durante el proceso de arranque para localizar y montar el sistema de archivos raíz. Este sistema de archivos inicial puede contener módulos que manejan el dispositivo y el tipo de sistema de archivos del sistema de archivos raíz. Hay dos mecanismos ligeramente diferentes: initrd e initramfs.
fuente
Aunque los sistemas de archivos se compilarán solo en el núcleo, se debe crear un sistema de archivos inicial que estará presente en la RAM para ejecutar el núcleo. Para hacer este sistema de archivos RAM inicial, se usa mkinitrd. En ubuntu se usa mkinitramfs en lugar de eso
después de eso ejecuta el kernel en qemu
-initrd representa el sistema de archivos RAM inicial
puede encontrar el sistema de archivos ram en /boot/initramfs-linux.img
fuente