可以用一个模块扩展内置的Linux内核特性吗?
我在嵌入式环境中使用的是一个3.4.31+Linux内核,它内置了对SquashFs的支持,并使用zlib压缩方法。现在,我想添加对xz方法压缩的支持,而不替换内核,只是将其作为一个模块添加。可能吗 在我之后可以用一个模块扩展内置的Linux内核特性吗?,linux,linux-kernel,Linux,Linux Kernel,我在嵌入式环境中使用的是一个3.4.31+Linux内核,它内置了对SquashFs的支持,并使用zlib压缩方法。现在,我想添加对xz方法压缩的支持,而不替换内核,只是将其作为一个模块添加。可能吗 在我之后 在内核菜单配置中选择SquashFs支持作为模块 重新编译内核 将原始内核保留在目标设备上,但更新/lib/modules/3.4.31的所有内容+ 调用modprobe压缩函数 我明白了 dmesg显示: kmem_cache_create: duplicate cache squash
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)
kmem\u缓存\u创建:重复缓存挤压\u索引节点\u缓存
[](从[](kmem\u缓存创建+0x4a4/0x514)中[](展开回溯+0x0/0xf0)
[](kmem_cache_create+0x4a4/0x514)来自[](初始化模块+0x24/0x7c[squashfs])
[](初始化模块+0x24/0x7c[squashfs])来自[](do_one_initcall+0x11c/0x190)
[](系统初始化模块+0x36c/0x1874)中的[](do_one_initcall+0x11c/0x190)
[](系统初始化模块+0x36c/0x1874)来自[](快速系统调用+0x0/0x2c)
是否有一种解决方法可以强制删除内置的SquashFs支持?它不是这样工作的,原始内核二进制文件已经包含SquashFs代码作为非模块组件。如果您想从内核中删除代码,则需要使用刚刚编译的新内核(以及刚刚创建的模块)。如果内置SquashFs不是模块,则可能不会。你可以重新编译一个内核来满足你的需要。如果它不是他上面提到的一个模块,那么肯定不是。
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)