我想在启动阶段使用grub boot-loader加载共享库(源代码二进制用户空间库)。有什么机会吗,或者我必须编写一个自定义的elf-loader(grub模块)来做到这一点?
想要自定义或向Grub引导加载程序添加一些新功能
项目。感谢您的全力支持!
最佳答案
因此,您并不清楚要做什么,但是:
无法将用户空间(假定为Linux SysV ELF类型)共享库直接加载到GRUB中。 GRUB模块确实采用ELF格式,但是它们包含其他头文件。该 header 中包含的信息包括显式许可证声明-GRUB将拒绝加载非显式GPLv2 +,GPLv3或GPLv3 +的任何模块。
应该可以编写一个ELF加载程序,但是更简单的方法可能是编写一个将用户空间库转换为GRUB模块的工具。这里当然会有一些限制:
如果可以选择重新编译,则GRUB还提供POSIX仿真层-将CPPFLAGS_POSIX添加到您的CPPFLAGS中,并使用核心标准POSIX头文件。看一下gcrypt支持的示例。
关于shared-libraries - 具有共享库支持的Grub bootstrap ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25396711/