如何防止 lp 模块在启动时加载?

如何防止 lp 模块在启动时加载?

我在 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加载

  1. 编辑/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
    
  2. 黑名单lp模块(Ubuntu 10 及更高版本)允许玩家访问它。

    创建文件:/etc/modprob.d/blacklist-vmware.conf

    #/etc/modprob.d/blacklist-vmware.conf
    blacklist lp
    
  3. 执行以下操作来更新启动映像:

    dpkg-reconfigure linux-image-$(uname -r)
    
  4. 编辑/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 内核。

长期解决方案是简单地从内核中删除该模块,这当然需要构建自定义内核。请参阅此社区帮助页面如果您选择这种方式,请查看如何执行此操作的更多信息。

相关内容