PVE直通核显 虚拟机关闭后恢复宿主机显示

这个b站up发了视频。PVE直通核显 虚拟机关闭后恢复宿主机显示_哔哩哔哩_bilibili

结果没教程。群友跑来问我。

目前仅支持intel 核显。不支持其他。

于是有了以下脚本


#!/usr/bin/perl
#https://foxi.buduanwang.vip
use PVE::QemuServer;

use strict;
use warnings;

print "GUEST HOOK: ".join(' ', @ARGV).
"\n";

my $igd_id = system("lspci -n|grep '0:02.0'|cut -d ':' -f4|cut -c 1-4 > /tmp/igd_id");
my $vmid = shift;
my $conf = PVE::QemuConfig->load_config($vmid);
my $phase = shift;

if ($phase eq 'pre-start') {
  print "$vmid is starting, doing preparations.\n";
  system("echo 0000:00:02.0 > /sys/bus/pci/drivers/i915/unbind");
  system("modprobe  -r i915");
  system("echo 8086 `cat /tmp/igd_id`  > /sys/bus/pci/drivers/vfio-pci/new_id");
}
elsif($phase eq 'post-start') {
  print "$vmid started successfully.\n";
}
elsif($phase eq 'pre-stop') {
  print "$vmid will be stopped.\n";
}
elsif($phase eq 'post-stop') {
  print "$vmid stopped. Doing cleanup.\n";
  system("echo 8086 `cat /tmp/igd_id`  > /sys/bus/pci/drivers/vfio-pci/remove_id");
  system("echo 0000:00:02.0 > /sys/bus/pci/drivers/vfio-pci/unbind");
  system("modprobe i915");
} else {
  die "got unknown phase '$phase'\n";
}

exit(0);

使用前提

1、必须先调试好直通核显,且能够出现显示器

2、i915没有在blacklist中

3、没有 grub中没有video=vesafb:off video=efifb:off

4、不要启用gvt-g

快捷操作

加载vfio等模块

echo vfio >> /etc/modules
echo vfio_iommu_type1 >> /etc/modules
echo vfio_pci >> /etc/modules
echo vfio_virqfd >> /etc/modules

安装脚本

wget -P /var/lib/vz/snippets/ https://cdn.jsdelivr.net/gh/jiangcuo/foxi/hookscripts/igd.pl
chmod +x /var/lib/vz/snippets/igd.pl
#将hookscript添加到虚拟机中,注意下面命令的替换vmid
qm set <vmid> --hookscript local:snippets/igd.pl

 

 

 

版权声明:
作者:佛西
链接:https://foxi.buduanwang.vip/linux/1590.html/
文章版权归作者所有,未经允许请勿转载
如需获得支持,请点击网页右上角
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录