2015-04-21 29 views
3

我在嵌入式环境中使用了一个3.4.31+的Linux内核,它内置了对使用zlib压缩方法的SquashFs的支持。现在我想添加对xz方法压缩的支持,无需替换内核,只需将其添加为模块即可。可能吗?是否可以使用模块来扩展内置Linux内核功能?

后,我

  1. 选择Squashfs的支持,在内核menuconfig的
  2. 重新编译内核模块
  3. 离开原来的内核我的目标设备上,但更新的/lib/modules/3.4.31+
  4. 全部内容
  5. 调用modprobe的squashfs的

我得到

# modprobe squashfs 
modprobe: failed to load module squashfs (kernel/fs/squashfs/squashfs.ko): Cannot allocate memorycode 

的dmesg显示:

kmem_cache_create: duplicate cache squashfs_inode_cache 
[<c000e5e4>] (unwind_backtrace+0x0/0xf0) from [<c0077264>] (kmem_cache_create+0x4a4/0x514) 
[<c0077264>] (kmem_cache_create+0x4a4/0x514) from [<bf011024>] (init_module+0x24/0x7c [squashfs]) 
[<bf011024>] (init_module+0x24/0x7c [squashfs]) from [<c0008840>] (do_one_initcall+0x11c/0x190) 
[<c0008840>] (do_one_initcall+0x11c/0x190) from [<c0048c40>] (sys_init_module+0x36c/0x1874) 
[<c0048c40>] (sys_init_module+0x36c/0x1874) from [<c00092e0>] (ret_fast_syscall+0x0/0x2c) 

有没有一种解决方法强行取出内置Squashfs的支持?

+0

可能不是,如果内置SquashFs是*不是*模块。您可能会重新编译内核来满足您的需求。 –

+0

绝对不是,如果它不是上面指出的模块。 – cbz

回答

-1

它不这样工作,原始内核二进制文件已经包含squashfs代码作为非模块化组件。如果你想摆脱内核中的代码,那么你需要使用刚刚编译的新内核(以及刚刚创建的模块)。