3

eCryptfs 是一个符合 POSIX 的加密文件系统,自 2.6.19 版以来一直是主线 Linux 内核的一部分。

当我尝试插入模块 (ecryptfs.ko) 时,我收到以下错误:

insmod:插入“ecryptfs.ko”时出错:-1 无法分配内存

有人可以帮我吗?

下面是dmesg

Failed to allocate one or more kmem_cache objects

kmem_cache_create: duplicate cache ecryptfs_auth_tok_list_item

Pid: 3332, comm: insmod Tainted: G           O 3.2.2+ #1

Call Trace:

[<c102bfe0>] ? printk+0x15/0x17

[<c10878b6>] kmem_cache_create+0x41c/0x458

[<d0ebd038>] ecryptfs_init+0x38/0x1b1 [ecryptfs]

[<c1001071>] do_one_initcall+0x71/0x118

[<d0ebd000>] ? 0xd0ebcfff

[<c1055703>] sys_init_module+0x60/0x18c

[<c12db9b0>] sysenter_do_call+0x12/0x36

ecryptfs_init_kmem_caches: ecryptfs_auth_tok_list_item: kmem_cache_create 
failed

 Failed to allocate one or more kmem_cache objects
4

2 回答 2

1

从您在 dmesg 中看到的错误开始:

kmem_cache_create: duplicate cache ecryptfs_auth_tok_list_item

ecryptfs模块被加载时,它做的第一件事就是为自己创建一堆内存缓存。该错误表明已经存在具有该名称的缓存。

您可以通过查看 sysfs 来检查缓存是否已经存在:

$ ls -ld /sys/kernel/slab/ecryptfs*

注意。/proc/slabinfo由于平板合并,它可能不会显示。

如果您看到任何表明 ecryptfs 模块已加载或已内置到内核中的 ecryptfs 平板。

通常模块加载器不会让你加载同一个模块两次,但也许你做了一些奇怪的事情来混淆它。

于 2012-04-22T04:15:24.130 回答
0

发生这种情况的一个可能原因是,如果重新编译并安装内核及其模块,但在安装内核之前忘记挂载 /boot。重新启动后,将使用旧内核但新模块运行。无论如何,请检查正在运行的内核是否是最新的,如果有疑问,请重新安装内核和模块:

mount /boot 
cd /usr/src/linux 
make && make install && make modules_install 

我已完成上述步骤,错误已解决

于 2012-04-22T04:51:22.597 回答