I compiled the kernel by doing make menuconfig
and make
. I was trying to run the bzImage in qemu, by doing qemu -kernel bzImage
but it didn't work out with the error message:
Unable to mount root fs on unknown-block(0.0)
How can I fix it? How can I run the bzImage in qemu?
Best Answer
It did work out. The kernel booted fine. The error is:
The kernel is looking for a root filesystem. You need to provide one. You can't interact with a kernel without running processes on it, and the initial process has to be loaded from somewhere: when the kernel starts, it mounts a filesystem (the root filesystem) on the directory
/
, then runs the program/sbin/init
. The init program is normally in charge of running boot scripts and starting services including programs that let users log in.You must make sure that the kernel is able to mount the root filesystem. It must have drivers for the filesystem type and for all the layers involved in the block device (disk controller (SCSI/SATA/IDE/USB/… adapter), partition type, etc.).
Linux offers an additional possibility, which is to load an initial filesystem in RAM that's used during the boot process in order to locate and mount the root filesystem. This initial filesystem can contain modules that handle the device and filesystem type of the root filesystem. There are two slightly different mechanisms: initrd and initramfs.