Ответ 1
Итак, вы не делаете это совершенно ясно, что вы пытаетесь сделать, но:
Загрузка пользовательского пространства (при условии, что тип Linux SysV ELF) разделяемая библиотека прямо в GRUB невозможна. Модули GRUB действительно находятся в формате ELF, но содержат дополнительные заголовки. Среди информации, содержащейся в этом заголовке, есть явный оператор лицензии - GRUB откажется загружать любые модули, которые явно не являются GPLv2 +, GPLv3 или GPLv3 +.
Должно быть возможно написать загрузчик ELF, но проще всего написать инструмент для преобразования библиотеки пользовательского пространства в модуль GRUB. Разумеется, здесь должно быть несколько ограничений:
- Вам нужно будет убедиться, что в библиотеке пользовательского пространства не было никаких системных вызовов - у GRUB не было бы никакого места для их обработки.
- Вам необходимо будет соблюдать правила лицензирования (поэтому допустимы только три лицензии).
- Вам нужно будет убедиться, что эти библиотеки не зависят от глобальной таблицы смещений, создаваемой с помощью glibc для них.
Если перекомпиляция является опцией, GRUB также предоставляет уровень эмуляции POSIX - добавьте CPPFLAGS_POSIX в свои CPPFLAGS и используйте основные стандартные заголовочные файлы POSIX. Посмотрите на поддержку gcrypt для примера.