如何从源代码构建 grub2 引导加载程序并使用 qemu 模拟器对其进行测试
how to build grub2 bootloader from it's source and test it with qemu emulator
我想知道如何从 ubuntu 中的源代码构建 grub 2 引导加载程序并使用 qemu 模拟器对其进行测试。
我也想在新版本中更改 grub2 引导加载程序的默认背景图像?
这可能吗?如果是,如何?
当然可以。
如 GRUB website 所示,grub 源代码可通过 git 来自 git.savannah.gnu.org。
那么理论上只是
的问题
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
然而,根据您的平台,grub 的默认目标平台可能是也可能不是您想要的。所以你需要决定你想在 QEMU 中使用哪个固件平台,这取决于你的架构可以是
- (电脑)BIOS
- 核心引导
- (U)EFI
- ieee1275(开放固件)
- u-boot
你提到的 Ubuntu 与上面至少 3 个可能的选项匹配,但我会很无聊,假设你的意思是 x86_64/amd64。由于您将在 QEMU 下 运行ning GRUB,因此您的物理计算机 运行ning 是两个可能的平台("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
以评论 GRUB_HIDDEN_TIMEOUT
.
时按 Shift
然后你需要某种 UEFI 镜像来 运行 在你的 QEMU 下。 x86 的默认选择称为 OVMF,它是 Tianocore EDK2 的一部分 - UEFI 事实上的开源实现。由于 FAT 文件系统驱动程序重新分发的法律技术问题,许多 Linux 分发版(包括 Ubuntu)不包含预构建的。不过不用担心,自己动手做一个也很简单。
但是,我不会让这个答案比我已经拥有的更离题,所以我要说的是通读 the OVMF README and look through one or two 只是关于它的博客文章有点过时。
我想知道如何从 ubuntu 中的源代码构建 grub 2 引导加载程序并使用 qemu 模拟器对其进行测试。
我也想在新版本中更改 grub2 引导加载程序的默认背景图像?
这可能吗?如果是,如何?
当然可以。
如 GRUB website 所示,grub 源代码可通过 git 来自 git.savannah.gnu.org。
那么理论上只是
的问题$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
然而,根据您的平台,grub 的默认目标平台可能是也可能不是您想要的。所以你需要决定你想在 QEMU 中使用哪个固件平台,这取决于你的架构可以是
- (电脑)BIOS
- 核心引导
- (U)EFI
- ieee1275(开放固件)
- u-boot
你提到的 Ubuntu 与上面至少 3 个可能的选项匹配,但我会很无聊,假设你的意思是 x86_64/amd64。由于您将在 QEMU 下 运行ning GRUB,因此您的物理计算机 运行ning 是两个可能的平台("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
以评论 GRUB_HIDDEN_TIMEOUT
.
然后你需要某种 UEFI 镜像来 运行 在你的 QEMU 下。 x86 的默认选择称为 OVMF,它是 Tianocore EDK2 的一部分 - UEFI 事实上的开源实现。由于 FAT 文件系统驱动程序重新分发的法律技术问题,许多 Linux 分发版(包括 Ubuntu)不包含预构建的。不过不用担心,自己动手做一个也很简单。
但是,我不会让这个答案比我已经拥有的更离题,所以我要说的是通读 the OVMF README and look through one or two 只是关于它的博客文章有点过时。