启动期间内核加载模块错误

我在戴尔笔记本电脑上使用ubuntu 15.10。 它工作正常,但最近我的启动时间很慢(约1分钟)。 所以我环顾四周,当我读到/var/log/boot.log文件时,我看到以下错误:

 [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. 

每个其他服务(tftpd除外)运行完美。 这是完整的输出:

 [ OK ] Started Load/Save Screen Backlight Brightness of backlight:intel_backlight. [ OK ] Reached target Sound Card. [ OK ] Created slice system-systemd\x2drfkill.slice. Starting Load/Save RF Kill Switch Status of rfkill0... [ OK ] Started Show Plymouth Boot Screen. [ OK ] Started Forward Password Requests to Plymouth Directory Watch. [ OK ] Started Load/Save RF Kill Switch Status of rfkill0. [ OK ] Started Check And Enable File System Quotas. Starting Load/Save RF Kill Switch Status of rfkill1... [ OK ] Started Braille Device Support. Starting Load Kernel Modules... [FAILED] Failed to start Load Kernel Modules. See 'systemctl status systemd-modules-load.service' for details. [ OK ] Started Load/Save RF Kill Switch Status of rfkill1. [ OK ] Started LSB: QEMU KVM module loading script. [ OK ] Found device ST500LM012_HN-M500MBB 8. Starting File System Check on /dev/sda8... [ OK ] Started File System Check on /dev/sda8. Mounting /mnt/ubuntuspace... [ OK ] Found device ST500LM012_HN-M500MBB 7. Activating swap /dev/disk/by-uuid/431a5631-95f2-4d4f-8f81-42e5801b57aa... [ OK ] Activated swap /dev/disk/by-uuid/431a5631-95f2-4d4f-8f81-42e5801b57aa. [ OK ] Reached target Swap. [ OK ] Mounted /mnt/ubuntuspace. [ OK ] Reached target Local File Systems. Starting Create Volatile Files and Directories... Starting Set console keymap... [ OK ] Reached target Remote File Systems. Starting Wait for all "auto" /etc/network/interfaces to be up for network-online.target... Starting LSB: AppArmor initialization... Starting Clean up any mess left by 0dns-up... Starting Tell Plymouth To Write Out Runtime Data... [ OK ] Started Wait for all "auto" /etc/network/interfaces to be up for network-online.target. [ OK ] Started Clean up any mess left by 0dns-up. Starting Nameserver information manager... [ OK ] Started Nameserver information manager. [ OK ] Started Set console keymap. [ OK ] Started Create Volatile Files and Directories. Starting Update UTMP about System Boot/Shutdown... Starting Network Time Synchronization... [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. [ OK ] Started LSB: AppArmor initialization. Starting LSB: Raise network interfaces.... [ OK ] Started LSB: Raise network interfaces.. [ OK ] Started Tell Plymouth To Write Out Runtime Data. [ OK ] Reached target System Initialization. [ OK ] Listening on UUID daemon activation socket. Starting Restore Sound Card State... [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Started CUPS Scheduler. [ OK ] Listening on PC/SC Smart Card Daemon Activation Socket. [ OK ] Listening on CUPS Scheduler. [ OK ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket. [ OK ] Started Trigger resolvconf update for networkd DNS. [ OK ] Reached target Paths. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Reached target Timers. [ OK ] Listening on ACPID Listen Socket. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting Restore /etc/resolv.conf if the system crashed before the ppp link was shut down.... Starting System Logging Service... Starting Permit User Sessions... [ OK ] Started Self Monitoring and Reporting Technology (SMART) Daemon. Starting Avahi mDNS/DNS-SD Stack... Starting LSB: Set the CPU Frequency Scaling governor to "ondemand"... Starting Detect the available GPUs and deal with any system changes... Starting LSB: Record successful boot for GRUB... [ OK ] Started Cgroup management daemon. [ OK ] Started CUPS Scheduler. Starting VirtualBox Linux kernel module... Starting LSB: automatic crash report generation... Starting Network Manager... [ OK ] Started Deferred execution scheduler. [ OK ] Started crash report submission daemon. Starting Modem Manager... Starting LSB: Load kernel modules needed to enable cpufreq scaling... Starting LSB: Start/stop sysstat's sadc... Starting Enable support for additional executable binary formats... Starting Accounts Service... Starting LSB: Speech Dispatcher... Starting Bluetooth service... [ OK ] Started Regular background program processing daemon. Starting Initialize hardware monitoring sensors... Starting LSB: daemon to balance interrupts for SMP systems... [ OK ] Started D-Bus System Message Bus. [ OK ] Started Avahi mDNS/DNS-SD Stack. [ OK ] Started Bluetooth service. [ OK ] Started Network Manager. [ OK ] Reached target Network. [ OK ] Started OpenBSD Secure Shell server. Starting MySQL Community Server... Starting OpenVPN service... [ OK ] Reached target Bluetooth. [ OK ] Started Make remote CUPS printers available locally. Starting LSB: Start daemon at boot time... Starting Thermal Daemon Service... Starting dnsmasq - A lightweight DHCP and caching DNS server... Starting PostgreSQL Cluster 9.4-main... Starting Login Service... Starting Network Manager Wait Online... Starting LSB: Monitor for system resources and process activity... [ OK ] Started System Logging Service. [ OK ] Started Restore Sound Card State. [ OK ] Started Restore /etc/resolv.conf if the system crashed before the ppp link was shut down.. [ OK ] Started Permit User Sessions. [ OK ] Started LSB: Set the CPU Frequency Scaling governor to "ondemand". [ OK ] Started LSB: Record successful boot for GRUB. [ OK ] Started VirtualBox Linux kernel module. [ OK ] Started LSB: automatic crash report generation. [ OK ] Started LSB: Load kernel modules needed to enable cpufreq scaling. [ OK ] Started LSB: Start/stop sysstat's sadc. [ OK ] Started LSB: Speech Dispatcher. [ OK ] Started LSB: daemon to balance interrupts for SMP systems. [ OK ] Started OpenVPN service. [ OK ] Started Initialize hardware monitoring sensors. Starting Hostname Service... Starting Authenticate and Authorize Users to Run Privileged Tasks... Mounting Arbitrary Executable File Formats File System... Starting LSB: set CPUFreq kernel parameters... Starting vboxweb-service.service... Starting vboxballoonctrl-service.service... Starting vboxautostart-service.service... [ OK ] Mounted Arbitrary Executable File Formats File System. [ OK ] Started LSB: set CPUFreq kernel parameters. [ OK ] Started vboxweb-service.service. [ OK ] Started vboxballoonctrl-service.service. [ OK ] Started vboxautostart-service.service. [ OK ] Started Enable support for additional executable binary formats. [ OK ] Started Hostname Service. [ OK ] Started Login Service. [ OK ] Started LSB: Monitor for system resources and process activity. [ OK ] Started Thermal Daemon Service. [ OK ] Started Authenticate and Authorize Users to Run Privileged Tasks. [ OK ] Started Accounts Service. [ OK ] Started Modem Manager. [ OK ] Started LSB: Start daemon at boot time. [ OK ] Started ACPI event daemon. Starting WPA supplicant... [ OK ] Started dnsmasq - A lightweight DHCP and caching DNS server. [ OK ] Reached target Host and Network Name Lookups. [ OK ] Started WPA supplicant. Starting Network Manager Script Dispatcher Service... [ OK ] Started Network Manager Script Dispatcher Service. [ OK ] Started MySQL Community Server. [ OK ] Started PostgreSQL Cluster 9.4-main. Starting PostgreSQL RDBMS... [ OK ] Started PostgreSQL RDBMS. [ OK ] Started Network Manager Wait Online. [ OK ] Reached target Network is Online. Starting LSB: start Samba daemons for the AD DC... Starting LSB: disk temperature monitoring daemon... Starting LSB: HPA's tftp server... Starting /etc/rc.local Compatibility... Starting LSB: Tool to automatically collect and submit kernel crash signatures... Starting LSB: Apache2 web server... Starting ISC DHCP IPv4 server... Starting LSB: Postfix Mail Transport Agent... Starting LSB: backup and restore program... Starting LSB: Starts or stops the xinetd daemon.... Starting LSB: start Samba NetBIOS nameserver (nmbd)... [ OK ] Started LSB: disk temperature monitoring daemon. [ OK ] Started /etc/rc.local Compatibility. [ OK ] Started ISC DHCP IPv4 server. [ OK ] Started LSB: backup and restore program. [FAILED] Failed to start LSB: HPA's tftp server. See 'systemctl status tftpd-hpa.service' for details. [ OK ] Started LSB: Tool to automatically collect and submit kernel crash signatures. Starting Wait for Plymouth Boot Screen to Quit... [ OK ] Started LSB: Starts or stops the xinetd daemon.. [ OK ] Started Detect the available GPUs and deal with any system changes. Starting Light Display Manager... 

这是systemctl status systemd-modules-load.service的输出:

 ● systemd-modules-load.service - Load Kernel Modules Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since Wed 2016-07-06 06:05:56 IST; 1h 13min ago Docs: man:systemd-modules-load.service(8) man:modules-load.d(5) Process: 1019 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE) Main PID: 1019 (code=exited, status=1/FAILURE) Jul 06 06:05:56 hostname systemd[1]: Starting Load Kernel Modules... Jul 06 06:05:56 hostname systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE Jul 06 06:05:56 hostname systemd[1]: Failed to start Load Kernel Modules. Jul 06 06:05:56 hostname systemd[1]: systemd-modules-load.service: Unit entered failed state. Jul 06 06:05:56 hostname systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. 

究竟是什么错误,它是否会影响我的启动时间以及应该如何修复?

什么是“无法启动加载内核模块”?

Systemd读取目录/etc/modules-load.d的文件,以便使用此服务加载模块。 如果这些文件中指定的模块在/lib/modules目录中不存在于正在引导的内核中,则会出现“无法启动加载内核模块”错误。 这是ls -lA /etc/modules-load.d目录的内容

 -rw-r--r-- 1 root root 119 Apr 20 17:01 cups-filters.conf lrwxrwxrwx 1 root root 10 May 12 10:39 modules.conf -> ../modules 

journalctl捕获详细信息

就我而言,这是journalctl的相关部分:

 May 27 06:36:50 zanna-X205TA systemd-modules-load[176]: Failed to find module 'lp' May 27 06:36:50 zanna-X205TA systemd-modules-load[176]: Failed to find module 'ppdev' May 27 06:36:50 zanna-X205TA systemd-modules-load[176]: Failed to find module 'parport_pc' 

如果你做了journalctl | grep modules journalctl | grep modules你会看到哪些无法加载

在我的例子中, /etc/modules (由symlink指向)是空的,但cups-filters.conf文件包含对抛出错误的模块的引用:

 # Parallel printer driver modules loading for cups # LOAD_LP_MODULE was 'yes' in /etc/default/cups lp ppdev parport_pc 

使消息消失

我的笔记本电脑甚至没有任何并行端口,不出所料,所以我不需要那些模块。 在任何情况下,它们都无法加载,因为它们不在/lib/modules/$(uname -r)

我注释掉了这三行(将#放在每行模块名称前面的行的开头),错误消息消失了。

我没注意到开机时间有任何不同。

TL; DR

  • 检查journalctl以查看哪些模块无法加载
  • 读取/etc/modules-load.d的文件以查找对这些模块的引用
  • 注释掉指定那些模块的行以使错误消失(但请在编辑之前制作备份副本)
  • 重启以查看这是否对启动时间有任何影响