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

我还想在新版本中更改grub2 bootstrap 的默认背景图像吗?

这可能吗?如果是,怎么办?

最佳答案

当然可以。

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

从理论上讲,这只是一个问题

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

但是,取决于您的平台,grub的默认目标平台可能不是您想要的。因此,您需要确定要在QEMU中使用的固件平台,具体取决于您的体系结构,例如
  • (pc)BIOS
  • coreboot
  • (U)EFI
  • ieee1275(开放式固件)
  • u-boot

  • 您提到的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并仔细阅读onetwo对此的博客文章。

    关于qemu - 如何从源代码构建grub2 bootstrap 并使用qemu模拟器对其进行测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31799336/

    10-10 08:23