【问题标题】:How to disable vmwgfx driver without compiling a new kernel on Ubuntu?如何在 Ubuntu 上不编译新内核的情况下禁用 vmwgfx 驱动程序?
【发布时间】:2018-08-10 05:42:46
【问题描述】:

我知道通过编译内核来禁用它而不在配置中设置CONFIG_DRM_VMWGFX。但是我不想构建一个新内核,我可以通过一些配置来实现它吗?

我试图从lib/modules/.../kernel/driver 目录中删除vmwgfx.ko 并重新启动,但驱动程序在 Ubuntu 16.04 上运行良好。为什么?文件在其他地方吗?

我也尝试过 rmmod,但它不起作用。

[root@ubuntu:] lsmod |grep vmwgfx
vmwgfx                235405  4 
drm_kms_helper        159169  1 vmwgfx
ttm                    99345  1 vmwgfx
drm                   370825  7 ttm,drm_kms_helper,vmwgfx
[root@ubuntu:] rmmod -f vmwgfx
rmmod: ERROR: ../libkmod/libkmod-module.c:793 kmod_module_remove_module()
could not remove 'vmwgfx': Resource temporarily unavailable
[root@ubuntu:] modprobe -r vmwgfx
modprobe: FATAL: Module vmwgfx is in use.

【问题讨论】:

  • 根据模块的类型,您可能可以使用rmmod 。使用lsmod 查看列表。
  • 短语 Module vmwgfx is in use. 并不意味着 vmwgfx 是内置的。相反,这意味着vmwgfx 是一个模块。您可以输入lsmod 来查看模块列表。在此列表中,您可能还会看到哪个模块使用您的模块。顺便说一句,这个问题根本不是关于编程的,所以它在 Stack Overflow 上是题外话。你可以在askubuntu问。
  • 您可以将 modprobe 配置中的模块列入黑名单以阻止它们自动加载。见modprobe.d(5)
  • @askubuntu 一个模块也可以在没有其他模块使用的情况下被使用,例如当某些东西打开一个由模块管理的设备时,它的“使用中”计数会增加。由于vmwgfx 是一个图形驱动程序,可能有Xorg 服务器和帧缓冲控制台tty 进程(例如agetty)在使用它。

标签: linux-kernel driver linux-device-driver ubuntu-16.04


【解决方案1】:

终于,我知道该怎么做了。

我删除了这个驱动文件然后重启,它还在系统中运行。这是因为驱动程序的文件存储在 initramfs-xxx.img 中。所以我们需要重建一个initramfs-xxx.img。

  1. 您应该从lib/modules/$(uname -r)/kernel/driver/gpu/drm/vmwgfx/vmwgfx.ko 中删除驱动程序文件。

  2. 重建initramfs:mkinitrd -f /boot/initrd-`uname -r`-new.img `uname -r`

  3. 重启

【讨论】:

  • 这里的uname 是什么意思?
  • @Deniel 这意味着我应该替换当前内核的引导文件。
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
相关资源
最近更新 更多