我在 VMWare VM 下使用一些需要访问并行端口的软件。如果lp
加载了内核模块,VMWare 的 Player 将无法访问该端口。每次我想在虚拟机下使用该模块时,我都需要卸载该模块,而且由于我从未在 Ubuntu 下使用它,所以如果它默认不加载就好了。
我尝试添加blacklist lp
并/etc/modprobe.d/blacklist.conf
运行sudo update-initramfs -k all -u
,但lsmod
显示启动后仍加载。如何阻止模块加载?我正在使用 Ubuntu 11.10 和内核团队 PPA 的 3.0.0-x 内核。
答案1
构建自定义内核是不是必要的
这是我的程序(旧版应用程序,在 vmware 播放器中虚拟化,需要访问并行端口加密狗)
为了使并行端口加密狗正常工作,Ubuntu 用户需要成为该lp
组的成员。以 root 身份(或sudo
):
vigr (add user to group lp)
vigr -s (repeat)
接下来,您需要阻止内核模块lp
加载
编辑
/etc/modules
以确保lp
在启动时不会加载:# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. #lp rtc
黑名单
lp
模块(Ubuntu 10 及更高版本)允许玩家访问它。创建文件:/etc/modprob.d/blacklist-vmware.conf
#/etc/modprob.d/blacklist-vmware.conf blacklist lp
执行以下操作来更新启动映像:
dpkg-reconfigure linux-image-$(uname -r)
编辑
/etc/default/cups
成如下的样子:# Cups configure options # LOAD_LP_MODULE: enable/disable to load "lp" parallel printer driver module LOAD_LP_MODULE=no
重启并测试!
lsmod | grep lp
(应为空响应)
答案2
我怎样才能阻止模块被加载?
lp
内置于内核中,因此将其列入黑名单不起作用。简单的解决方案是rmmod lp
在登录后卸载它。您可以通过制作 init 脚本来自动执行此操作,或者只需将其放入.bashrc
--中rmmod lp 2>nul
,这样如果模块已卸载,它就不会因错误而弄乱您的屏幕。
我正在使用来自内核团队 PPA 的 Ubuntu 11.10 和 3.0.0-x 内核。
长期解决方案是简单地从内核中删除该模块,这当然需要构建自定义内核。请参阅此社区帮助页面如果您选择这种方式,请查看如何执行此操作的更多信息。