可以用一个模块扩展内置的Linux内核特性吗?

可以用一个模块扩展内置的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

我在嵌入式环境中使用的是一个3.4.31+Linux内核,它内置了对SquashFs的支持,并使用zlib压缩方法。现在,我想添加对xz方法压缩的支持,而不替换内核,只是将其作为一个模块添加。可能吗

在我之后

  • 在内核菜单配置中选择SquashFs支持作为模块
  • 重新编译内核
  • 将原始内核保留在目标设备上,但更新/lib/modules/3.4.31的所有内容+
  • 调用modprobe压缩函数
  • 我明白了

    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)
    
    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)