我已经编译了linux kernel 2.6.39,我想在BOCHS中模拟它。那么,如何在BOCHS中从这个编译的内核启动?
我有一个制作启动 .ISO 文件的想法。但我不知道该怎么做。
问问题
991 次
1 回答
0
Bochs 似乎缺乏直接启动可执行文件的能力,因此您应该先创建一个虚拟磁盘磁盘映像(教程)。然后您可以使用 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:类型=磁盘,路径=image.img,模式=平面,圆柱=0,磁头=0,spt=0,平移=自动
(注意:在某些情况下,您可能需要手动指定 CHS 值)并且它应该可以工作(好吧,至少在它尝试运行 init 之前 - 但这是一个不同的问题)。
于 2013-01-31T19:09:54.640 回答