为什么在启动时不会调用此内置内核模块的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 (将#修改为@)