![我如何找出为什么 systemctl 服务“systemd-modules-load”失败?](https://linux22.com/image/1472750/%E6%88%91%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E4%B8%BA%E4%BB%80%E4%B9%88%20systemctl%20%E6%9C%8D%E5%8A%A1%E2%80%9Csystemd-modules-load%E2%80%9D%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
一段时间以来,我在启动过程中看到一些红色文本闪烁。今天我决定研究一下。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;静态;供应商预设:已启用) 活动:失败(结果:退出代码)自 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/失败) 11 月 09 日 02:58:48 bonus-debian systemd[1]: 正在开始加载内核模块... 11 月 09 日 02:58:48 bonus-debian systemd-modules-load[644]: 无法找到模块“-r usbhid” 11 月 09 日 02:58:48 bonus-debian systemd[1]: systemd-modules-load.service: 主进程已退出,代码=已退出,状态=1/失败 11 月 09 日 02:58:48 bonus-debian systemd[1]: 无法启动加载内核模块。 11 月 09 日 02:58:48 bonus-debian systemd[1]: systemd-modules-load.service: 单元进入失败状态。 11 月 09 日 02:58:48 bonus-debian systemd[1]: systemd-modules-load.service: 失败,结果为“退出代码”。
我想先用谷歌搜索一下这个问题:
哎哟。
我的系统似乎并不介意驱动程序加载失败,因为我没有注意到体验下降,但我仍然想修复它。
由于 Google 一无所获,我已经陷入困境。我不知道从哪里开始寻找。
我如何找出为什么 systemctl 服务“systemd-modules-load”失败?
答案1
我也遇到了这个问题。我按照 Arch Linux 上的说明解决了这个问题systemd 维基页面。以下是我所做工作的总结:
让我们找出启动失败的 systemd 服务
$ systemctl --failed ------------------------------------------------------------------------ systemd-modules-load.service loaded failed failed Load Kernel Modules
好的,我们发现 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
现在我们有了进程 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'
我们发现一些内核模块配置有错误。因此,我们在 /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 ...
无法找到模块“blacklist usblp”错误消息可能与 blacklist.conf 中的错误设置有关。让我们通过在步骤 3 中找到的每个选项前插入尾随 # 来停用它:
/etc/modules-load.d/blacklist.conf ---------------------------------------------------------------------- # blacklist usblp # install usblp /bin/false
现在尝试启动 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.
答案2
就我而言
sudo update-initramfs -u
解决了问题。
答案3
我遇到此问题是因为 droidcam 卸载不完整。尽管已删除了所有恶意模块的痕迹,但我还是在启动时看到相同的错误(systemd-modules-load 失败)。对该模块的引用位于初始 ramdisk 中。我必须通过以 root 身份运行“dracut”来创建一个新的初始 ramdisk。要生成新的 ramdisk,请使用 bash 语法:
cd /boot
mv initramfs-$(uname -r).img initramfs-$(uname -r).img-bak
dracut initramfs-$(uname -r).img