繁体   English   中英

GRUB mkimage:创建传统启动 x86 映像以通过 multiboot2 加载自定义 kernel

[英]GRUB mkimage: create legacy boot x86 image to load custom kernel via multiboot2

我尝试为使用 GRUB 作为引导加载程序的 x86 创建旧版引导映像。 最后,引导映像应该引导 GRUB,它会加载符合 Multiboot (2) 的 kernel 以及相关的 Multiboot (2) 引导模块。 我考虑过使用grub-mkimage实用程序。 最后,我想要一些 ISO 文件,我可以将 flash 到 USB 驱动器左右。 映像应包含 GRUB、kernel 和引导模块。

我目前的方法如下:

grub-mkimage -c grub.cfg \
    -O i386-pc \
    -m build/kernel.elf \
    -m build/roottask.elf \
    -m build/userapps.tar \
    -o boot_legacy_x86.img \
    -C auto

但是,由于grub-mkimage: error: core image is too big (0x17f00f > 0x78000). . 因此,我猜想遗留(非 UEFI)x86 引导流程会产生大小限制。 我想,我必须将 kernel、roottask 和 userapps 移动到同一个映像中,但不能移动到 GRUB 本身。 但是,我不知道如何实现这一点。 我非常感谢这里的任何建议。

grub-mkrescue实用程序就是您所需要的。 它按照 ISO9660 和 El-Torito 规范构建可引导的传统引导映像,并将您所需的文件捆绑到映像中。

诀窍相对容易。 准备一个具有以下结构的目录:

grub
├── iso
│   ├── boot
│   │   └── grub
│   │       └── grub.cfg
│   ├── kernel
│   └── roottask

现在,只需要grub-mkrescue -o "grub/legacy_x86_boot.img" "grub/iso" 生成的 iso 映像可以像这样闪存到 USB 驱动器上:

$ sudo dd if=grub/legacy_x86_boot.img of=/dev/sda

您可以找到其他资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM