我想知道如何从ubuntu的源代码构建grub 2 bootstrap ,并使用qemu模拟器对其进行测试。
我还想在新版本中更改grub2 bootstrap 的默认背景图像吗?
这可能吗?如果是,怎么办?
最佳答案
当然可以。
如GRUB website所示,可以从git.savannah.gnu.org通过git获得grub源代码。
从理论上讲,这只是一个问题
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
但是,取决于您的平台,grub的默认目标平台可能不是您想要的。因此,您需要确定要在QEMU中使用的固件平台,具体取决于您的体系结构,例如
您提到的Ubuntu至少匹配上述三种选项,但我会很无聊,并假设您的意思是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
注释GRUB_HIDDEN_TIMEOUT
时按Shift。然后,您需要某种UEFI镜像才能在您的QEMU下运行。 x86的默认选择称为OVMF,它是Tianocore EDK2(UEFI的事实上的开源实现)的一部分。由于有关重新分配FAT文件系统驱动程序的法律技术问题,许多Linux发行版(包括Ubuntu)不包括预构建的发行版。但是不要害怕,自己建立一个很简单。
但是,我不会比这个问题更离题,所以我要说的是通读the OVMF README并仔细阅读one或two对此的博客文章。
关于qemu - 如何从源代码构建grub2 bootstrap 并使用qemu模拟器对其进行测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31799336/