起因:
我把独显直通给虚拟机 → 宿主机把显卡 “让” 给了虚拟机 → 宿主机没显卡可用,所以黑屏。因为我不再需要虚拟机做测试了,所以把显示器连接回独立显卡上,但是在进入系统的时候黑屏了。
恢复思路:先临时关掉直通,进系统,再永久恢复,最后重装显卡驱动。下面一步一步来,照着做就行。
一、先想办法进入系统
1、开机黑屏:先进入命令行(关键第一步)
- 长按电源键 10 秒 强制关机,再开机。
- 开机立刻不停按 Esc(台式机)或 Shift(笔记本),调出 GRUB 菜单。
- 选中 Ubuntu(默认那一项),按 e 进入编辑模式。
- 找到以
linux开头的那一行,拉到最末尾,删掉里面的:intel_iommu=on(Intel CPU)amd_iommu=on(AMD CPU)vfio-pci之类直通参数 然后加上:
nomodeset iommu=off(作用:临时关闭 IOMMU / 直通,不让内核把显卡交给虚拟机) - 按 Ctrl + X 启动,就能进命令行(黑底白字)。
2、修改参数(直接照着做)
在 linux 行的末尾,添加以下内容(注意前面要加空格,和原来的内容分开):
nomodeset iommu=off modprobe.blacklist=vfio-pci
修改后的整行末尾看起来会像这样:
quiet splash preempt=full nomodeset iommu=off modprobe.blacklist=vfio-pci
这三个参数的作用:
nomodeset:临时禁用显卡内核模式设置,防止黑屏iommu=off:关闭 IOMMU 直通功能,让宿主机重新接管显卡modprobe.blacklist=vfio-pci:屏蔽直通模块,防止它再抢显卡
3、启动系统
修改完成后,按 Ctrl + X 或 F10 启动系统,就能进入命令行界面了。
二、进入系统后再彻底解决问题
进入系统后,接下来的目标:彻底删除所有直通残留配置,防止下次开机再出问题。
1、先删除直通相关的配置文件
因为之前我添加过一个配置文件:vfio.conf
怎么确定是这个文件呢?一般内容如下图:如果不确定,请检查该目录下的所有文件。

# 删除直通专用黑名单文件
sudo rm -f /etc/modprobe.d/vfio.conf
2、更新内核启动镜像,让所有修改生效
sudo update-initramfs -u
3、最后一步:重启验证
sudo reboot
重启后,你的系统就完全恢复到直通前的状态了:
- 宿主机独占显卡,不会再被
vfio-pci抢设备 - 不会再出现直通导致的黑屏问题