如何解决为什么在启动时不会调用此内置内核模块的init函数?
我在没有MMU的ARM平台上使用Linux,因此普通的ELF文件将无法工作,我应该使用FDPIC_ELF可执行文件。但是我的内核无法执行fdpic可执行文件(错误-8(ENOEXEC))。
我已决定在 binfmt_elf_fdpic.c printk()
函数中放置一些->init()
调用以进行跟踪。但这行不通。
static int __init init_elf_fdpic_binfmt(void)
{
printk(" Mahyar: elf_fdpic: init started\n"); // delete me later!
register_binfmt(&elf_fdpic_format);
printk(" Mahyar: elf_fdpic: init finished\n"); // delete me later!
return 0;
}
static void __exit exit_elf_fdpic_binfmt(void)
{
unregister_binfmt(&elf_fdpic_format);
}
core_initcall(init_elf_fdpic_binfmt);
module_exit(exit_elf_fdpic_binfmt);
For seeing the complete code on github click here!
我已启用menuconfig-> executable-formats中的fdpic ELF支持作为内置功能(不是内核模块)。另外,我的内核日志级别是15(最高级别(应该打印所有内容))。
当我更改 binfmt_elf_fdpic.c 文件中的内容并运行make
命令时,它将再次编译该文件。因此,这意味着该文件应该可以工作。
但是为什么启动时不会将其加载到内核中?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。