模块 vfat 不会在启动时加载,并尝试通过modprobe vfat
产生错误来强制解决该问题
modprobe: ERROR: could not insert 'vfat': Unknown symbol in module, or unknown parameter (see dmesg)
与 dmesg 行
[ 663.227894] fat: Unknown symbol __bread_gfp (err 0)
[ 663.227924] fat: Unknown symbol __getblk_gfp (err 0)
启动时还有两条 [FAILED] 消息建议我运行systemctl status systemd-modules-load.service
;这样做的结果是:
● systemd-modules-load.service - Load Kernel Modules
Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static)
Active: failed (Result: exit-code) since Fri 2016-02-12 12:55:11 EST; 18min ago
Docs: man:systemd-modules-load.service(8)
man:modules-load.d(5)
Main PID: 502 (code=exited, status=1/FAILURE)
Feb 12 12:55:11 aleph systemd-modules-load[502]: Failed to insert 'fuse': No such file or directory
Feb 12 12:55:11 aleph systemd[1]: systemd-modules-load.service: main process exited, code=exited, status=1/FAILURE
Feb 12 12:55:11 aleph systemd[1]: Failed to start Load Kernel Modules.
Feb 12 12:55:11 aleph systemd[1]: Unit systemd-modules-load.service entered failed state.
我正在运行一个基本上普通的 Debian Jessie,并且没有手动调整我的内核的任何内容。uname -a
回报
Linux aleph 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
和modinfo fat vfat
:
filename: /lib/modules/3.16.0-4-amd64/kernel/fs/fat/fat.ko
license: GPL
depends:
intree: Y
vermagic: 3.16.0-4-amd64 SMP mod_unload modversions
filename: /lib/modules/3.16.0-4-amd64/kernel/fs/fat/vfat.ko
author: Gordon Chaffee
description: VFAT filesystem support
license: GPL
alias: fs-vfat
depends: fat
intree: Y
vermagic: 3.16.0-4-amd64 SMP mod_unload modversions
我从 Google 搜索中读到的有关错误细节的所有内容都表明,这里的问题是正在运行的内核版本与 kmod 选择的模块之间不匹配。为此,我采取了建议的两个明显步骤https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=808380和debian 不识别 vfat为了解决这个问题:首先,我尝试重新启动,然后我曾经apt-get install --reinstall linux-image-3.16.0-4-amd64
强制重新安装并在之后重新启动。debsums linux-image-3.16.0-4-amd64
也表明我当前的内核应该没问题。然而,问题仍然存在。
我可能可以通过编译自己的内核和模块来解决这个问题,但我真的会考虑将 debian 二进制文件之外作为最后的手段。
答案1
好吧,问题结果是常见的(即错误的内核),有一点小问题:由于某种原因,这在我这样做时无疑是有意义的,我将 grub-pc 安装为 debian 软件包,但有LILO(未作为软件包安装)作为我的实际引导加载程序运行,因此内核安装(并重新安装等)愉快地更新了 grub,这对引导时实际加载的内核映像没有影响。还有一个已知的bug 是特定的 Debian 内核/模块更新没有增加版本号,从而导致 kmod 的版本选择关闭(并且让我觉得我没有内核/模块不匹配,因为lsmod
和uname
给了我相同的版本号),但是通常,通过重新启动以加载正确的内核即可轻松修复该错误,但在本例中则不然,因为引导加载程序仍然具有旧内核。
答案2
使用 aptitude 比较已安装的以 linux-headers-* 开头的软件包和以 linux-image* 开头的软件包。
aptitude search linux-image
和
aptitude search linux-headers
确保为您正在运行的内核安装了两者 uname -a