- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道如何从 ubuntu 中的源代码构建 grub 2 引导加载程序并使用 qemu 模拟器对其进行测试。
我还想在新版本中更改 grub2 引导加载程序的默认背景图像吗?
这可能吗?如果是,怎么做?
最佳答案
当然可以。
如GRUB website所示,grub 源代码可通过 git 从 git.savannah.gnu.org 获取。
那么理论上这只是一个问题
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
但是,根据您的平台,grub 的默认目标平台可能是也可能不是您想要的。因此,您需要决定要在 QEMU 中使用哪个固件平台,具体取决于您的架构,可能类似于
您提到的 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
磁盘上安装 grub(而不是 QEMU),请使用:
$ sudo grub-install /dev/sda
注意:如果启动时没有看到 GRUB 菜单,请检查 this question 。它涉及在启动或编辑 /etc/default/grub
时按 Shift 注释 GRUB_HIDDEN_TIMEOUT
。
然后您需要某种 UEFI 镜像才能在 QEMU 下运行。 x86 的默认选择称为 OVMF,是 Tianocore EDK2 的一部分- UEFI 事实上的开源实现。由于 FAT 文件系统驱动程序重新分发方面的法律技术问题,许多 Linux 发行版(包括 Ubuntu)不包含预构建的驱动程序。但不用担心,自己构建一个非常简单。
但是,我不会让这个答案更加偏离主题,所以我要说的是通读一下 the OVMF README并查看 one或two只是有关它的博客文章稍微过时了。
关于qemu - 如何从源代码构建 grub2 引导加载程序并使用 qemu 模拟器进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799336/
我是一名优秀的程序员,十分优秀!