将 nouveau 驱动程序和 bochs_drm 列入黑名单在 xen / ubuntu 20.10 来宾操作系统中根本不起作用

将 nouveau 驱动程序和 bochs_drm 列入黑名单在 xen / ubuntu 20.10 来宾操作系统中根本不起作用

我正在尝试将我的 nvidia GTX 1060 从 ubuntu 20.10 主机传递到带有 ubuntu 20.10 来宾操作系统的 xen。下面您可以看到如何配置所有内容(默认 vga 显示适配器/nvidia 1060 驱动程序和显示器)。我遇到的问题是,即使在虚拟机内检测到 1060,也无法检测到连接到它的显示器。

root@zioma-HVM-domU:/home/zioma# lspci -k

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
Subsystem: Red Hat, Inc. Qemu virtual machine
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
Subsystem: Red Hat, Inc. Qemu virtual machine
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
Subsystem: Red Hat, Inc. Qemu virtual machine
Kernel driver in use: ata_piix
Kernel modules: pata_acpi
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
Subsystem: Red Hat, Inc. QEMU Virtual Machine
Kernel driver in use: uhci_hcd
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
Subsystem: Red Hat, Inc. Qemu virtual machine
Kernel modules: i2c_piix4
00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
Subsystem: XenSource, Inc. Xen Platform Device
Kernel driver in use: xen-platform-pci
00:04.0 VGA compatible controller: Device 1234:1111 (rev 02)
Subsystem: Red Hat, Inc. Device 1100
Kernel driver in use: bochs-drm
Kernel modules: bochs_drm
00:06.0 VGA compatible controller: NVIDIA Corporation GP106 [GeForce GTX 1060 3GB] (rev a1)
Subsystem: ZOTAC International (MCO) Ltd. GP106 [GeForce GTX 1060 3GB]
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
00:07.0 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller (rev a1)
Subsystem: ZOTAC International (MCO) Ltd. GP106 High Definition Audio Controller
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

root@zioma-HVM-domU:/home/zioma# ls -l /sys/class/drm/

totale 0
lrwxrwxrwx 1 root root    0 nov  1 23:14 card0 -> ../../devices/pci0000:00/0000:00:04.0/drm/card0
lrwxrwxrwx 1 root root    0 nov  1 23:14 card0-Virtual-1 -> ../../devices/pci0000:00/0000:00:04.0/drm/card0/card0-Virtual-1
lrwxrwxrwx 1 root root    0 nov  1 23:14 ttm -> ../../devices/virtual/drm/ttm
-r--r--r-- 1 root root 4096 nov  1 23:14 version

root@zioma-HVM-domU:/home/zioma# xrandr

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
Virtual-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*+
   1920x1080     60.00  
   1600x1200     60.00  
   1680x1050     59.95    59.88  
   1400x1050     59.98    59.95  
   1600x900      60.00  
   1280x1024     60.02  
   1440x900      59.89    59.90  
   1280x960      60.00  
   1366x768      59.79    60.00  
   1360x768      60.02  
   1280x800      59.81    59.91  
   1280x768      59.87    59.99  
   1280x720      60.00  
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94

我无法关闭屏幕 0,因为它是我拥有的唯一屏幕,即连接到 xen 默认图形适配器的屏幕。我无法打开通过 vga 电缆连接的外部显示器,因为在虚拟机内部未检测到屏幕。所以,我想,如果我将 nouveau 和 bochs-drm 列入黑名单会发生什么?我在这里阅读了如何将 bochs_drm 列入黑名单:

在 QEMU guest 中禁用帧缓冲区

这里是如何将 nouveau 驱动程序列入黑名单:

https://linuxconfig.org/how-to-disable-blacklist-nouveau-nvidia-driver-on-ubuntu-20-04-focal-fossa-linux

我的目标是将带有 nvidia 驱动程序的 1060 设置为虚拟机内第一个也是唯一一个图形适配器。这就是我所做的:

nano /etc/modprobe.d/blacklist-nouveau.conf

blacklist nouveau
options nouveau modeset=0

nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash systemd.show_status=1 bochs_drm.fbdev=off"

update-initramfs -u
update-grub

然后我重新启动并再次使用 lspci -k 检查,但 nouveau 驱动程序和 bochs_drm 模块尚未列入黑名单。与以前相比没有任何改变。我有什么错?

答案1

我通过执行以下禁用 nouveau 的操作获得了最佳结果

# edit /etc/default/grub

GRUB_CMDLINE_LINUX = [parameters]

# use any one or more of these as a parameter where each parameter is separated by a space.
# just keep your existing parameters and you can simply add all of these
# note: the rd.driver.blacklist=nouveau by itself seems to not have worked for me in rhel7.9

   rd.driver.blacklist=nouveau
   modprobe.blacklist=nouveau
   nouveau.modeset=0

然后你必须做一个grub2-mkconfig -o /boot/efi/EFI/?/grub.cfg 我假设你的语法?ubuntu。要么是雷尔或者森托斯对我来说,然后重新启动。

推荐你做了一个systemctl set-default multi-user.target 重新启动之前所以你在重新启动后会得到一个工作(非图形)控制台,否则当它尝试进入图形目标时,你的显示器上可能什么也没有,如果发生这种情况,它需要额外的工作来纠正它总是启动到不可用的状态图形界面。

从非图形控制台,您始终可以systemctl isolate graphical.target跳转到它,如果失败,则只需重新启动,当您知道已完成所有工作时,即可systemctl set-default graphical.target将其恢复。抱歉,我不知道您目前的错误是什么;不久前,我在 Linux 中浪费了很多时间搞乱 nvidia 之后,决定采用这种方法。

相关内容