簡體   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