Linux – Running bzImage in QEMU: Unable to mount root fs on unknown-block(0.0)

linuxlinux-kernelqemu

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)

Linux kernel error

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:

Unable to mount root fs on unknown-block(0.0)

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.

Related Question