2015-04-21 84 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代碼作爲非模塊化組件。如果你想擺脫內核中的代碼,那麼你需要使用剛剛編譯的新內核(以及剛剛創建的模塊)。