Grub bootloader with shared library support

后端 未结 1 1868
灰色年华
灰色年华 2021-01-17 14:11

I\'d like to load a shared library (closed-source binary user-space library) at boot stage with grub boot-loader. Are there any chances for this or I must write a custom-elf

相关标签:
1条回答
  • 2021-01-17 14:40

    So, you don't make it crystal clear what you are trying to do, but:

    Loading a userspace (assuming Linux SysV ELF type) shared library straight into GRUB is not possible. GRUB modules are indeed in ELF format, but they contain additional headers. Among the information contained in that header is an explicit license statement - GRUB will refuse to load any modules that are not explicitly GPLv2+, GPLv3 or GPLv3+.

    It should be possible to write an ELF loader, but an easier way might be to write a tool to convert a userspace library to a GRUB module. There would of course be several restrictions here:

    • You would need to ensure the userspace library performed no system calls - GRUB would have nothing in place to handle them.
    • You would need to abide by the licensing rules (so only above three licenses would be acceptable).
    • You would need to ensure these libraries were not dependent on a global offset table being set up by glibc for them.

    If recompiling is an option, GRUB also provides a POSIX emulation layer - add CPPFLAGS_POSIX to your CPPFLAGS, and use core standard POSIX header files. Have a look at the gcrypt support for an example.

    0 讨论(0)
提交回复
热议问题