我最近遇到了这个问题,我想使用Gummiboot从Uefi启动Xen Hypervisor。
主要是出于优雅的原因,我不想回到Bios或使用另一个(更笨重)的启动管理器。我没有找到分步指南,所以我不得不从文档中将所有内容拼凑在一起。对于谷歌来说,我会在这里回答我自己的问题。
我之前已将它发布到Arch论坛,经过一些修改后,我想我可以在这里发布。
此致
RTT
答案 0 :(得分:2)
a)运行使用gummiboot的arch linux系统
b)支持Xen(这是拱门中的标准)efi系统分区中的内核映像(我的/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中的常规指南开始添加DomUs。