我如何找出为什么systemctl服务“ systemd-modules-load”失败?


27

一段时间以来,我已经看到一些红色的文字在引导过程中闪烁。今天,我决定调查一下。systemctl服务systemd-modules-load.service失败,显示以下文本:

tomas @ bonus-debian:〜$ sudo systemctl status systemd-modules-load
●systemd-modules-load.service-加载内核模块
   已加载:已加载(/lib/systemd/system/systemd-modules-load.service;静态;供应商预设:已启用)
   活动:自ma以来失败(结果:退出代码)。2015-11-09 02:58:48 CET; 5分钟前
     文件:man:systemd-modules-load.service(8)
           男人:modules-load.d(5)
  处理:644 ExecStart = / lib / systemd / systemd-modules-load(代码=已退出,状态= 1 /失败)
 主PID:644(代码=已退出,状态= 1 /失败)

十一月 09 02:58:48 bonus-debian systemd [1]:启动加载内核模块...
十一月 09 02:58:48 bonus-debian systemd-modules-load [644]:无法找到模块'-r usbhid'
十一月 09 02:58:48 bonus-debian systemd [1]:systemd-modules-load.service:主进程已退出,代码=已退出,状态= 1 /失败
十一月 09 02:58:48 bonus-debian systemd [1]:无法启动加载内核模块。
十一月 09 02:58:48 bonus-debian systemd [1]:systemd-modules-load.service:设备进入失败状态。
十一月 09 02:58:48 bonus-debian systemd [1]:systemd-modules-load.service:失败,结果为“退出代码”。

我以为我会从搜索问题开始:

屏幕截图

哎哟。

我的系统似乎并不介意驱动程序加载失败,因为我没有注意到降级的体验,但是我仍然想修复它。

由于Google让我无处可寻,所以我已经陷入困境。我不知道从哪里开始寻找。

我如何找出为什么systemctl服务“ systemd-modules-load”失败?


您是否udev有机会更改规则?
MariusMatutiae,2015年

您可以在journalctl中检查日志吗?是否要加载名为“ -r usbhid”的模块?
cristi

Answers:


40

我也有这个问题。我能够按照Arch Linux systemd Wiki页面上的说明解决它。这是我所做的摘要:

  1. 让我们找到无法启动的系统服务

    $ systemctl --failed  
    ------------------------------------------------------------------------
    systemd-modules-load.service   loaded failed failed  Load Kernel Modules
    
  2. 好的,我们发现systemd-modules-load服务存在问题。我们想了解更多。

    $ systemctl status systemd-modules-load  
    ------------------------------------------------------------------------
    systemd-modules-load.service - Load Kernel Modules      
       Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)     
       Active: failed (Result: exit-code) since So 2013-08-25 11:48:13 CEST; 32s ago  
         Docs: man:systemd-modules-load.service(8).  
               man:modules-load.d(5)
      Process: 15630 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
    

    如果未列出进程ID,请使用以下命令重新启动失败的服务

    $ systemctl restart systemd-modules-load
    
  3. 现在,我们有了进程ID(PID),可以深入研究此错误。输入具有当前进程ID的以下命令(此处:15630):

    $ journalctl _PID=15630
    ----------------------------------------------------------------------
    -- Logs begin at Sa 2013-05-25 10:31:12 CEST, end at So 2013-08-25 11:51:17 CEST. --
    Aug 25 11:48:13 mypc systemd-modules-load[15630]: Failed to find module 'blacklist usblp'
    Aug 25 11:48:13 mypc systemd-modules-load[15630]: Failed to find module 'install usblp /bin/false'
    
  4. 我们看到某些内核模块配置有错误的设置。因此,我们在/etc/modules-load.d/中查看这些设置。

    $ ls -Al /etc/modules-load.d/
    ----------------------------------------------------------------------
    ...  
    -rw-r--r--   1 root root    79  1. Dez 2012  blacklist.conf  
    -rw-r--r--   1 root root     1  2. Mär 14:30 encrypt.conf  
    -rw-r--r--   1 root root     3  5. Dez 2012  printing.conf  
    -rw-r--r--   1 root root     6 14. Jul 11:01 realtek.conf  
    -rw-r--r--   1 root root    65  2. Jun 23:01 virtualbox.conf  
    ...  
    
  5. 无法找到模块“ blacklist usblp”错误消息可能与blacklist.conf中的错误设置有关。让我们通过在步骤3找到的每个选项之前插入尾随#来停用它:

    /etc/modules-load.d/blacklist.conf  
    ----------------------------------------------------------------------
    # blacklist usblp  
    # install usblp /bin/false  
    
  6. 现在,尝试启动systemd-modules-load:

    $ systemctl restart systemd-modules-load  
    

    如果成功,则不应提示任何内容。如果看到任何错误,请返回步骤3并使用新的PID来解决剩余的错误。

    如果一切正常,则可以使用以下命令验证服务是否已成功启动:

    $ systemctl status systemd-modules-load
    ----------------------------------------------------------------------
    systemd-modules-load.service - Load Kernel Modules
       Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
       Active: active (exited) since So 2013-08-25 12:22:31 CEST; 34s ago
         Docs: man:systemd-modules-load.service(8)
               man:modules-load.d(5)
     Process: 19005 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)
    Aug 25 12:22:31 mypc systemd[1]: Started Load Kernel Modules.
    

5
很好的答案– _PID=现在将永远存在于我的工具箱中。谢谢!
AdrianGünter'17

1
不幸的是,我/etc/modules-load.d/是空的,仍然说无法找到模块等等。现在怎么办?
阿德里安

2
您可能还想退房journalctl _SYSTEMD_UNIT=systemd-modules-load.service。保存查找PID。
TwoD

2
从用户bobafetthotmail:也可以/usr/lib/modules-load.d/查找文件加载模块,因为应用程序可以在其中放置所需的模块。本/etc/modules-load.d/应该是为用户配置文件。
fixer1234 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.