【问题标题】:How to boot from linux kernel when I have compiled it from source code?从源代码编译后如何从 linux 内核启动?
【发布时间】:2013-02-01 03:09:54
【问题描述】:

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

【问题讨论】:

    标签: linux-kernel boot


    【解决方案1】:

    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 之前 - 但这是一个不同的问题)。

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 2013-09-27
      • 2012-06-26
      • 2018-04-11
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 2012-07-10
      • 2016-07-03
      相关资源
      最近更新 更多