模块 vfat 无法加载(我已经尝试过明显的修复)

模块 vfat 无法加载(我已经尝试过明显的修复)

模块 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=808380debian 不识别 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 的版本选择关闭(并且让我觉得我没有内核/模块不匹配,因为lsmoduname给了我相同的版本号),但是通常,通过重新启动以加载正确的内核即可轻松修复该错误,但在本例中则不然,因为引导加载程序仍然具有旧内核。

答案2

使用 aptitude 比较已安装的以 linux-headers-* 开头的软件包和以 linux-image* 开头的软件包。

aptitude search linux-image

aptitude search linux-headers

确保为您正在运行的内核安装了两者 uname -a

相关内容