当我从源代码编译时,如何从linux内核启动?

时间:2013-01-14 10:09:42

标签: linux-kernel boot

我已经编译了linux内核2.6.39,我想在BOCHS中模拟它。那么,如何从BOCHS中的这个编译内核启动?
我有一个想法,即启动.ISO文件。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

Bochs似乎缺乏直接启动可执行文件的能力,因此您应首先创建虚拟磁盘磁盘映像(tutorial)。然后,您可以将图像设置为带有kpartx的循环设备:

# kpartx -a image.img

这将在/ dev下创建loopNp1(N取决于使用的循环设备,通常为0)。 现在您可以格式化并装载它:

# mkfs.ext4 /dev/loopNp1
# mount /dev/loopNp1 /mnt

然后,您可以将内核映像(zImage,bzImage或类似内容)复制到/ mnt / boot中。 但是,要使其工作,您还需要一个引导加载程序。您可以使用

轻松安装grub(如果您已在系统上使用它)
# grub-install --boot-directory=/mnt/boot /dev/loopN

您还需要一个像

这样的grub.cfg
set timeout=0
set default=0 # Set the default menu entry

menuentry "Linux" {
   linux /boot/zImage
   boot
}

将它放在/ mnt / boot / grub下。现在我们完成了,卸下所有东西,在你的bochsrc中添加一行如

ata0-master:type = disk,path = image.img,mode = flat,cylinders = 0,heads = 0,spt = 0,translation = auto

(注意:在某些情况下,您可能需要手动指定CHS值)并且它应该有效(至少在它尝试运行init之前 - 但这是一个不同的问题)。