x86下KVM启动Jailhouse

x86下KVM启动Jailhouse

首先按照官方文档需要关闭linux kernel的iommu:

VT-d IOMMU usage (DMAR) has to be disabled in the Linux kernel, e.g. via the command line parameter:

intel_iommu=off

方法:

修改/etc/default/grub(/etc下的是grub的配置文件,/boot下的真正启动时加载的grub文件),调整GRUB_CMDLINE_LINUX内容

GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet amd_iommu=on iommu=pt"

通过grub-mkconfig命令来根据/etc/default/grub文件来更新/boot/grub/grub.cfg:

grub-mkconfig -o /boot/grub/grub.cfg

重启系统,这时再去查看IOMMU状态:
在这里插入图片描述

还需要为hypervisor分配连续的RAM以及额外的cell,在/etc/default/grub中添加:

GRUB_CMDLINE_LINUX_DEFAULT="memmap=82M\\\$0x3a000000"

但是通过virt-manager来图形化启动虚拟机无法设置启动IOMMU,于是乎使用命令行启动:

sudo qemu-system-x86_64 -machine q35,kernel_irqchip=split -m 1G -enable-kvm     -smp 4 -device intel-iommu,intremap=on,x-buggy-eim=on     -cpu host,-kvm-pv-eoi,-kvm-asyncpf,-kvm-steal-time,-kvmclock     -drive file=/home/txz/Documents/virtual_learn/ubuntu-server/ubuntu-server.img,format=qcow2,id=disk,if=none     -device ide-hd,drive=disk -serial stdio -serial vc     -device intel-hda,addr=1b.0 -device hda-duplex -netdev user,id=net -device e1000e,addr=2.0,netdev=net

但是缺少“efi-e1000e.rom”,需要手动安装:

sudo apt install qemu-efi
cd /usr/lib/ipxe/qemu
sudo wget https://github.com/qemu/qemu/raw/master/pc-bios/efi-e1000e.rom

然后去到jailhouse源文件进行编译和安装(需要python,gcc,make等)

注意python需要安装mako:

sudo apt install python-mako

根据官方文档,进行硬件检查:

jailhouse hardware check

但是会出错:

在这里插入图片描述

查找到原因:

需要:

export PATH=$PATH:/home/alex/jailhouse/tools

而且需要进入root才能成功正确执行:jailhouse hardware check

在这里插入图片描述

然后为目标x86系统生成系统配置文件:

jailhouse config create sysconfig.c

将生成的sysconfig.c文件放到configs/x86/目录下

但是到最后不管怎么样,jailhouse在enable之后都会遇到Ignore NMI IPI的问题,我认为是因为我在启动虚拟机的命令行中缺少-kvm-pv-ipi导致的,但是我安装的kvm版本是不支持-kvm-pv-ipi特性的,无奈之后暂时放弃这种方式,尝试jailhouse官方提供的jailhouse-image;

但是又想了想,我这是在逃避问题啊!!!于是乎各种google发现pv ipi竟然是腾讯的工程师提交给KVM的新特性!看来是需要更新KVM,于是卸载qemu-kvm:

sudo apt remove qemu-kvm

然后去到qemu的官网,下载4.11的qemu,源码编译过程很简单

sudo ./configure
sudo make -j4
sudo make install

这是再使用添加了-kvm-pv-ipi的启动命令:

sudo qemu-system-x86_64 -machine q35,kernel_irqchip=split -m 1G -enable-kvm     -smp 4 -device intel-iommu,intremap=on,x-buggy-eim=on     -cpu host,-kvm-pv-eoi,-kvm-pv-ipi,-kvm-asyncpf,-kvm-steal-time,-kvmclock     -drive file=/home/txz/Documents/virtual_learn/ubuntu-server/ubuntu-server.img,format=qcow2,id=disk,if=none     -device ide-hd,drive=disk -serial stdio -serial vc     -netdev user,id=net -device e1000e,addr=2.0,netdev=net     -device intel-hda,addr=1b.0 -device hda-duplex

大攻告成!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值