我通过make menuconfig
和编译内核make
。我正在尝试通过在qemu中运行bzImage来执行此操作,qemu -kernel bzImage
但无法解决错误消息:
Unable to mount root fs on unknown-block(0.0)
我该如何解决?如何在qemu中运行bzImage?
我通过make menuconfig
和编译内核make
。我正在尝试通过在qemu中运行bzImage来执行此操作,qemu -kernel bzImage
但无法解决错误消息:
Unable to mount root fs on unknown-block(0.0)
我该如何解决?如何在qemu中运行bzImage?
Answers:
它确实解决了。内核启动正常。错误是:
无法在未知块(0.0)上安装根fs
内核正在寻找根文件系统。您需要提供一个。您必须在某个内核上运行进程才能与它进行交互,并且初始进程必须从某个地方加载:当内核启动时,它将在目录上挂载一个文件系统(根文件系统)/
,然后运行该程序/sbin/init
。初始化程序通常负责运行启动脚本和启动服务,包括允许用户登录的程序。
您必须确保内核能够挂载根文件系统。它必须具有文件系统类型和块设备所涉及的所有层(磁盘控制器(SCSI / SATA / IDE / USB /…适配器),分区类型等)的驱动程序。
Linux提供了另一种可能性,即在启动过程中将一个初始文件系统加载到RAM中,以查找并安装根文件系统。该初始文件系统可以包含处理根文件系统的设备和文件系统类型的模块。有两种略有不同的机制:initrd和initramfs。
即使文件系统将单独由内核编译,也必须创建一个初始文件系统,该文件系统将存在于RAM中以运行内核。为了制作此初始ram文件系统,使用了mkinitrd。在ubuntu中使用mkinitramfs代替
cd〜/ linux / linux-2.6.32.59 / arch / i386 / boot
mkinitramfs -o initrd.img-2.6.32.59
之后,在qemu上运行内核
qemu-system-i386-内核bzImage -initrd initrd.img-2.6.32.59 -m 512M
-initrd表示初始的ram文件系统
您可以在/boot/initramfs-linux.img下找到ram文件系统