【问题标题】:grub2, grub-mkrescue, bios, vbe framebuffer, custom kernelgrub2、grub-mkrescue、bios、vbe 帧缓冲区、自定义内核
【发布时间】:2013-12-31 14:10:49
【问题描述】:

是时候在这里问我的第一个问题了。

在过去的某个时候,我曾经让我的内核 Just Work (TM) 与 GRUB2;它仍然适用于 GRUB Legacy,但我想要 [VBE] 帧缓冲区图形。

我注意到的第一个问题是

grub-mkrescue -o cd.iso cdimg/

构建伪造,无法启动的图像。如果我将内核复制到图像源目录的根目录并将其命名为 efi.img(否则,xorriso 由于缺少 efi.img 而失败),我尝试过的最新版本会构建一个正常的文本模式图像。

我想这里真正的问题是 GRUB2 是否应该与非 EFI 系统一起工作? :( 据我所知,我的帧缓冲区初始化和用白色填充屏幕与之前用于使用某些早期版本的 GRUB2 的代码完全相同。

提前致谢,

文杜

附: FWIW,操作系统项目位于https://github.com/vendu/OS-Zero/

附言我希望这不是太模糊...... :)

【问题讨论】:

    标签: framebuffer bios grub vbe


    【解决方案1】:

    我是 xorriso 的开发者(但对 GRUB2 参与不多)。

    这里真正的问题是 GRUB2 是否应该工作 与非 EFI 系统? :(

    我自己的测试系统是带有 BIOS 的 AMD 64 位系统,而不是 EFI。 它从 CD/DVD 和 U 盘引导 grub-mkrescue 映像。

    你的启动是否使用没有负载的 grub-mkrescue 映像?

    grub-mkrescue -o cd.iso

    (你应该会得到一个 GRUB2 引导提示)

    为我从 CD/DVD 引导的基于 GRUB2 的 GNU/Linux 映像是 流行病-4.1-b1-1-amd64.iso 。 (它无法从 U 盘启动 因为它的 initrd 有一个缺点。这不是 GRUB2 的故障。) 不过,它的 GRUB2 并不是最新的。

    构建虚假的、无法启动的图像。

    你能发布结果吗

    xorriso -indev cd.iso -toc

    应该报告所使用的 El Torito 引导信息 从 CD 和 DVD 引导时通过 BIOS 和 UEFI。 (有趣的是只有无法正确启动的图像, 当然。)

    如果到目前为止看起来不错,那么您应该报告问题 给你的发行版的维护者(如果你自己不是那个角色) 或到 grub-devel 邮件列表。

    附言我希望这不是太模糊...... :)

    你必须至少给出一个准确的描述 拒绝开机: 你有什么BIOS? 你用的是什么版本的 GRUB2? 你看到什么消息? 它发生在多台机器上吗? ...任何异常情况...?

    祝你有美好的一天:)

    托马斯

    【讨论】:

    • 嗨,Thomas,感谢您的回答! :) 我想我忘了提到这个场景不是真正的硬件,但我正在尝试在 Qemu 之上启动我的自定义(非 Linux)内核。 :) 我会尽力为您提供更多信息... :)
    • 哎呀,看起来 cmets 不是多行的(stackoverflow n00b 警报)... :) xorriso 的问题是它似乎在寻找“/efi.img”:xorriso:失败:在加载的 ISO 映像 xorriso 中找不到路径“/efi.img”:更新:1 秒内添加了 598 个文件 xorriso:中止:-abort_on 'FAILURE' 遇到'FAILURE' - 无论我是否指定源目录,这似乎都会发生在这里与否。
    • 一旦我将自定义内核作为第二个副本放在源代码树中并将其命名为 efi.img,我会从您建议的命令中得到这两行作为输出:Boot image : '/boot/grub /i386-pc/eltorito.img' , boot_info_table=on , grub2_boot_info=on 引导映像:'/efi.img' , platform_id=0xEF
    • xorriso 对 /efi.img 的渴望可能来自 grub-mkrescue 给 xorriso 的“--efi-boot efi.img”之类的选项。显然,该脚本需要 UEFI 启动映像。这不应该是内核,而是包含一些程序和数据的 FAT 文件系统。 BIOS 将尝试通过 .../i386-pc/eltorito.img 启动,它应该解释 grub.conf 文件,其中包含如何加载操作系统的说明。通过 scdbackup@gmx.net 与我联系以进行进一步检查。
    • 我在 Arch Linux 上使用 Grub 2.02~beta2 时遇到了同样的问题。我从 Grub 的主分支 git repogrub-mkrescue 编译 grub 不再期望 /efi.img
    【解决方案2】:

    今天在 Debian Jessie 上点击这个。 要修复 grub-mkrescue -o boot.iso 因缺少 /efi.img 而失败,只需安装 mtools 软件包。 Grub 依赖于 mtools(可选),如果它不存在,则会静默失败。

    在 Debian 上 apt-get install mtools 为我解决了这个问题。 希望对您有所帮助。

    【讨论】:

    • “Grub 依赖于 mtools(可选),如果它不存在,它会静默失败。”那是什么意思? “取决于”和“可选”似乎是同一枚硬币的两面。
    • 实际上这意味着 Grub 已安装,并且无需“可选”依赖的工具即可工作。安装“xorriso”和“mtools”由用户决定。在处理 ISO 创建(依赖于 xorriso)或 efi 映像(依赖于 mtools)时,没有这些 grub 将默默地失败。注意:我没有去包装定义,也没有去 grub 代码 - 这个评论是基于我在创建“boot.iso”以让 VirtualBox 从硬盘引导“真正的” linux 安装时的经验。
    • 如果它失败那么它是一个依赖。如果它是可选的,它就不会失败!无论如何,问题在上游解决了,没有使用mtools
    猜你喜欢
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多