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*

NB。/proc/slabinfoスラブのマージにより、表示されない場合があります。

ecryptfsモジュールがすでにロードされているか、カーネルにすでに組み込まれていることを示唆するecryptfsスラブが表示された場合。

通常、モジュールローダーでは同じモジュールを2回ロードすることはできませんが、混乱させるために何か奇妙なことをした可能性があります。

于 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 に答える