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
答案 0 :(得分:1)
从您在dmesg中看到的错误开始:
kmem_cache_create: duplicate cache ecryptfs_auth_tok_list_item
加载ecryptfs
模块时,它首先要为自己创建一堆内存缓存。该错误表明已存在具有该名称的缓存。
您可以通过查看sysfs:
来检查缓存是否已存在$ ls -ld /sys/kernel/slab/ecryptfs*
NB。由于平板合并,它可能不会显示在/proc/slabinfo
中。
如果你看到任何表明已经加载了ecryptfs模块的ecryptfs slab,或者它已经内置在你的内核中。
通常情况下,模块加载器不会让你加载同一个模块两次,但也许你做了一些奇怪的事情来混淆它。
答案 1 :(得分:0)
这种情况发生的可能原因是,如果重新编译并安装内核及其模块,但在安装内核之前忘记挂载/启动。重新启动后,将使用旧内核但新模块运行。无论如何,请检查正在运行的内核是否是最新的,如果有疑问,请重新安装内核和模块:
mount /boot
cd /usr/src/linux
make && make install && make modules_install
我已完成上述步骤并且错误已解决