我想在启动阶段使用grub boot-loader加载共享库(闭源二进制用户空间库)。有没有机会这样做,或者我必须编写一个自定义精灵加载器(grub模块)来做它?
答案 0 :(得分:20)
所以,你不清楚自己想要做什么,但是:
无法将用户空间(假设Linux SysV ELF类型)直接加载到GRUB中。 GRUB模块确实是ELF格式,但它们包含额外的标头。该标头中包含的信息是显式许可声明 - GRUB将拒绝加载任何非明确GPLv2 +,GPLv3或GPLv3 +的模块。
应该可以编写ELF加载程序,但更简单的方法可能是编写一个工具来将用户空间库转换为GRUB模块。当然会有几个限制:
如果重新编译是一个选项,GRUB还提供POSIX仿真层 - 将CPPFLAGS_POSIX添加到CPPFLAGS,并使用核心标准POSIX头文件。看一下gcrypt对示例的支持。