我最近遇到了一个问题,我想使用 Gummiboot 从 Uefi 启动 Xen Hypervisor。
主要是出于优雅的原因,我不想退回到 Bios 或使用另一个(更笨重的)引导管理器。我没有找到分步指南,所以我不得不从文档中拼凑出所有内容。为了让谷歌找到,我会在这里回答我自己的问题。
我之前曾在 Arch 论坛上发布过,经过几次修改后,我想我可以在这里发布。
问候,
RTT
a) 一个运行 gummiboot-loaded arch linux 系统
b) efi 系统分区中支持 Xen 的(这是 arch 中的标准)内核映像(我的安装在/boot
;大多数发行版将其安装在/boot/efi
)
您需要一个支持 x86_64-pep 仿真的 binutils 版本。要获得它,您需要从源代码构建 binutils。
获取一些包裹
# pacman -S abs base-devel
获取 abs 树
# abs
将包含 PKGBUILD 的文件夹复制到工作目录。比如你家:
$ cp -r /var/abs/core/binutils/ ~/
打开~/binutils/PKGBUILD
并找到:
${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
--with-lib-path=/usr/lib:/usr/local/lib \
--with-bugurl=https://bugs.archlinux.org/ \
--enable-ld=default --enable-gold \
--enable-plugins --enable-threads \
--with-pic --enable-shared \
--disable-werror --disable-multilib
添加参数--enable-targets=x86_64-pep
,以便该行读取
${srcdir}/binutils-${pkgver}/configure --prefix=/usr \
--with-lib-path=/usr/lib:/usr/local/lib \
--with-bugurl=https://bugs.archlinux.org/ \
--enable-ld=default --enable-gold \
--enable-plugins --enable-threads \
--with-pic --enable-shared \
--disable-werror --disable-multilib \
--enable-targets=x86_64-pep
通过运行编译和安装 binutils
$ cd ~/binutils
$ makepkg
# pacman -U binutils*.pkg.tar.xz
(如果 makepkg 想要包,获取它们)
现在您需要从 AUR 构建 Xen。
这是包:https ://aur.archlinux.org/packages/xen/
这是操作方法:https ://wiki.archlinux.org/index.php/AUR
(此时您可以切换回正常的 binutils 包,以便将来升级)
如果 Xen 编译成它应该的样子,你会xen-*.efi
在/usr/lib/efi/
. 实际上有几个,但只有一个是真实的,其余的只是链接。
将其复制到 efi 分区。
# cp -L /usr/lib/efi/xen.efi /boot/
生成一个xen.cfg
文件在/boot
. 我的看起来像这样,但我是 Xen 的新手,所以你可以选择更好的设置。查看 Xen wiki 以获取建议。请记住将 UUID 替换为您的根分区文件系统之一。如果您有不同的设置,内核映像和 ramdisk 也是如此。
[global]
default=xen
[xen]
options=console=vga dom0_mem=1024M,max=1024M dom0_max_vcpus=2 loglvl=all noreboot
kernel=vmlinuz-linux root=UUID=d07a95fe-f633-43a4-9996-8c8f76272344 rw ignore_loglevel #earlyprintk=xen
ramdisk=initramfs-linux.img
Gummiboot 不需要太多信息。只需在/boot/loader/entries/
(例如xen.conf
)中创建一个新文件,其中包含以下内容:
title Xen Hypervisor
efi /xen.efi
您可能需要调整 gummiboot 菜单和/或默认选择的超时时间。/boot/loader/loader.conf
为此进行编辑。
完毕!
您现在可以配置您的 Dom0,您可以按照 Arch wiki 中的普通指南开始添加 DomU。