如何从它的源代码构建grub2 bootloader并使用qemu模拟器进行测试

问题描述 投票:3回答:1

我想知道如何从ubuntu中的源代码构建grub 2 bootloader并使用qemu模拟器进行测试。

我还想在新版本中更改grub2 bootloader的默认背景图片?

这可能吗?如果有,怎么样?

qemu bootloader grub
1个回答
8
投票

当然可以。

GRUB website所示,grub源代码可以通过git从git.savannah.gnu.org获得。

那么理论上它只是一个问题

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

但是,根据您的平台,grub的默认目标平台可能是您想要的,也可能不是。因此,您需要确定要在QEMU中使用哪个固件平台,具体取决于您的体系结构

  • (pc)BIOS
  • coreboot
  • (U)EFI
  • ieee1275(开放固件)
  • 你的船

你提到的Ubuntu与上面至少有3个可能的选项相匹配,但我会觉得很无聊并假设你的意思是x86_64 / amd64。由于您将在QEMU下运行GRUB,因此您的物理计算机运行的两个可能平台(“pc”或“efi”)中的哪一个并不重要。所以让我们活一点,然后选择(U)EFI变体。

在配置和构建之前,您需要安装一些先决条件,因此

$ sudo apt-get install build-essential autoconf automake
$ sudo apt-get build-dep grub-efi-amd64

所以实际构建可能看起来像这样:

$ # Next command is optionnal (languages):
$ ./linguas.sh
$ ./autogen.sh
$ # Next parameters are optionnal:
$ ./configure --prefix=$HOME/local --platform=efi
$ make
$ # Next command is optionnal:
$ make check
$ make install

获取正常运行的GRUB映像的最简单方法可能是使用grub-mkstandalone命令:

$ $HOME/local/bin/grub-mkstandalone -O x86_64-efi -o mygrub.efi

注意:要在/dev/sda磁盘(而不是QEMU)上安装grub,请使用:

$ sudo grub-install /dev/sda

注意:如果在引导时没有看到GRUB菜单,请检查this question。它涉及在启动或编辑/etc/default/grub时按Shift键以评论GRUB_HIDDEN_TIMEOUT

然后,您需要在QEMU下运行某种UEFI映像。 x86的默认选择称为OVMF,它是Tianocore EDK2的一部分 - the OVMF README是UEFI的事实上的开源实现。由于有关FAT文件系统驱动程序重新分发的法律技术问题,许多Linux发行版(包括Ubuntu)不包含预先构建的版本。但不要害怕,自己建立一个是非常简单的。

但是,我不会比我现有的更偏离这个答案,所以我要说的是通过one阅读并查看two或qazxswpoi只是略微过时的关于它的博客文章。

© www.soinside.com 2019 - 2024. All rights reserved.