archlinux运行kvm all in one主机,包括核显和pci直通 保姆级教程

archlinux

为什么选择archlinux,因为文档齐全 ,且可以滚动更新。 已经安装好了一个archlinux 在一个5G的分区上,用的efi grub启动 安装的包 base linux dhcpcd nano sudo grub efibootmgr exfat-utils

本文停止更新, 新文:https://dev.leiyanhui.com/arch/install-kvm

准备工作

sudo pacman -S neofetch fish wget

配置开机登录提示 和自动打开fish

cd ~ && nano readme.md

输入一些提示信息

nano .bashrc
------
neofetch
cat ~/readme.md
fish

nano替代vim

sudo ln -s /bin/nano /bin/vi sudo ln -s /bin/nano /bin/vim

安装yay(非必须)

nano  /etc/pacman.conf 文件末尾添加以下两行:
---------
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

挂一下代理或者不挂也行,

export http_proxy="10.0.0.200:7890"
export https_proxy="10.0.0.200:7890"
sudo pacman -Sy
sudo pacman -S archlinuxcn-keyring
sudo pacman -S yay

安装基本的qemu和libvir

sudo pacman -S qemu-base 
sudo pacman -S ovmf #新版edk2-ovmf已经包含在qemu-base 包里面了 这行不用运行
sudo pacman -S  libvirt # libvirt服务器端和 virtsh命令行客户端
sudo pacman -S dnsmasq  # net网络需要的dns分配
sudo pacman -S usbutils  # 查看usb设备id用的工具包

我这次选择了 libvir 作为kvm的管理工具,因为纯shell的方式 有一些 权限问题,还有开机启动启动,pci和usb热拔插,以及其他一些细节处理起来还是很麻烦。所以 还是决定用 管理工具来处理

在无图形界面的archlinux上安装使用virt-manager

安装

sudo pacman -S  

arch启动x11转发

sudo pacman -S xorg-xauth # x11转发需要的依赖
touch ~/.Xauthority && chmod 600 ~/.Xauthority
sudo nano /etc/ssh/sshd_config
----
AddressFamily inet
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

重启sshd

sudo systemctl reload sshd
sudo systemctl restart sshd

virt-manager 虽然可以打开,但是因为权限问题是连不上本地主机的

配置普通用户的权限

sudo usermod -a -G kvm $(whoami)
sudo usermod -a -G libvirt $(whoami)
sudo nano /etc/libvirt/libvirtd.conf
#找到这里两行 取消注释
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"

配置 libvirtd 服务

sudo systemctl enable libvirtd
sudo systemctl start libvirtd

使用支持x11 server的ssh客户端登录到宿主机

win下推荐 MobaXterm

运行 virt-manager 正常可以打开 virt-manager图形界面了 virt-manager 应该可以用了

配置pci设备直通和vgpu

核显的直通查看我之前的文章,usb是不需要任何处理就可以直通的,这里处理部分pice设备的直通和intel核显的 vgpu

sudo nano /etc/default/grub

编辑 GRUB_CMDLINE_LINUX_DEFAULT 添加 intel_iommu=on i915.enable_guc=0

重启

sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo mkinitcpio -P
sudo reboot

需要直通的pci设备挂到vfio

sudo nano /etc/modprobe.d/vfio.conf

具体查看以前的文章关于vfio.conf 的部分

启用几个内核模块

sudo modprobe kvmgt vfio-iommu-type1 mdev

i915 enable_gvt=1

sudo nano /etc/modprobe.d/gvt-g.conf
-------
options i915 enable_gvt=1

然后重启

检查显卡

lspci -D -nn  # 查看显卡id  一般核显都是 0000:00:02.0 

ls /sys/devices/pci0000:00/0000:00:02.0/mdev_supported_types

目录不存在,lsmod | grep kvm 发现 kvmgt 没有启用 sudo nano /etc/default/grub 中的GRUB_CMDLINE_LINUX_DEFAULT 再添加 i915.enable_gvt=1

这里发现一个kvmgt 的坑

sudo modprobe kvmgt vfio-iommu-type1 mdev 在重启后就会失效

嵌套虚拟化

sudo nano /etc/modprobe.d/kvm_intel.conf
------
options kvm_intel nested=1
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计