gpt4 book ai didi

编译可加载内核模块(Debian/Ubuntu)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:56 27 4
gpt4 key购买 nike

此问题是 this 的后续问题一。我正在尝试将 ELF 加载器编译为单独的 LKM 并将其用作独立应用程序(替换基本内核中的原始模块听起来风险太大)。到目前为止,我已经复制了 source file到一个单独的目录树中,并尝试使用以下 Makefile 对其进行编译:

obj-m += binfmt_elf_mod.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

模块已生成,但给出以下警告:

make -C /lib/modules/3.13.0-32-generic/build M=/path/to/source/Resources modules
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-32-generic'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "start_thread" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "arch_randomize_brk" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "find_extend_vma" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "security_bprm_secureexec" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "vdso_enabled" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "arch_align_stack" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "arch_setup_additional_pages" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "randomize_va_space" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "set_personality_64bit" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "elf_core_write_extra_data" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "get_dump_page" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "elf_core_write_extra_phdrs" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "task_cputime" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "elf_core_extra_data_size" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "copy_siginfo_to_user" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "thread_group_cputime" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "elf_core_extra_phdrs" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "arch_vma_name" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
WARNING: "get_gate_vma" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined!
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-32-generic'

目前我正在使用 /lib/modules/3.13.0-32-generic 中的默认构建脚本而不是下载的源代码进行构建。如何解决这些依赖关系?

最佳答案

实际上,您不能。 Linux 内核中的 ELF 加载程序链接了一些不可用于内核模块的符号。

但更糟糕的是,如果您将 ELF 加载程序构建为一个模块,您将无法启动您的系统!您正在构建的模块和加载它的可执行文件都是 ELF 可执行文件;如果内核中已经存在 ELF 支持,您将无法使用它们。

关于编译可加载内核模块(Debian/Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29000125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com