Загрузчик Grub с поддержкой общей библиотеки

Я хотел бы загрузить общую библиотеку (бинарную библиотеку пользовательского пространства с закрытым исходным кодом) на этапе загрузки с помощью загрузчика grub. Есть ли для этого какие-либо шансы или я должен написать собственный загрузчик эльфов (модуль grub), чтобы сделать это?


  • 29/08/2014: Более подробно, это проблема программирования, в которой я хочу настроить или добавить некоторые новые функции в проект загрузчика Grub. Спасибо за вашу поддержку!

person tuantm    schedule 20.08.2014    source источник
comment
Почему бы и нет?? @ДжонатонРейнхарт   -  person tuantm    schedule 20.08.2014
comment
Как самый плодовитый флагман не по теме в теге grub, я просто хотел бы отметить, что этот вопрос на 100% по теме.   -  person unixsmurf    schedule 21.08.2014
comment
О, и я также очень хотел бы написать ответ. Так можно ли его отменить, пожалуйста?   -  person unixsmurf    schedule 21.08.2014
comment
Эй, это только что было вновь открыто, и люди уже начинают помечать это как не по теме. Останавливаться. Вот это совершенно в тему. @unixsmurf давай, ответь, пока не стало слишком поздно.   -  person Lucas Trzesniewski    schedule 25.08.2014
comment
@LucasTrzesniewski: очень обязан.   -  person unixsmurf    schedule 25.08.2014
comment
@LucasTrzesniewski Как я уже сказал на Meta, я все еще считаю, что этот вопрос не по теме. Если бы вы спросили, как написать модуль grub для загрузки общего файла object/.so, это был бы вопрос программирования. В нынешнем виде это вопрос о том, как использовать grub, который больше подходит для UNIX и Linux или Суперпользователь.   -  person Powerlord    schedule 25.08.2014
comment
@Powerlord Я согласен, что здесь есть некоторая двусмысленность, но я бы не ожидал, что ответ суперпользователя будет чем-то иным, кроме Нет. Невозможно. Нет ОС, нет SO., хотя ответ, подробно описывающий, как это сделать программно, возможен здесь. ОП говорит о специальном загрузчике ELF, так что он якобы знает, с чем имеет дело..   -  person Lucas Trzesniewski    schedule 25.08.2014
comment
@powerlord - нет, это простой вопрос да / нет - может ли существующая кодовая база поддерживать это или им нужно создавать собственное решение с нуля.   -  person Chris Stratton    schedule 26.08.2014


Ответы (1)


Таким образом, вы не даете кристально ясного понять, что вы пытаетесь сделать, но:

Загрузка разделяемой библиотеки пользовательского пространства (при условии, что Linux SysV типа ELF) прямо в GRUB невозможна. Модули GRUB действительно имеют формат ELF, но содержат дополнительные заголовки. Среди информации, содержащейся в этом заголовке, есть явное заявление о лицензии — GRUB откажется загружать любые модули, которые явно не являются GPLv2+, GPLv3 или GPLv3+.

Должна быть возможность написать загрузчик ELF, но проще написать инструмент для преобразования пользовательской библиотеки в модуль GRUB. Конечно, здесь будет несколько ограничений:

  • Вам нужно будет убедиться, что библиотека пользовательского пространства не выполняет системные вызовы - у GRUB не будет ничего для их обработки.
  • Вам нужно будет соблюдать правила лицензирования (поэтому будут приемлемы только более трех лицензий).
  • Вам нужно будет убедиться, что эти библиотеки не зависят от глобальной таблицы смещений, настроенной для них glibc.

Если перекомпиляция является опцией, GRUB также предоставляет уровень эмуляции POSIX — добавьте CPPFLAGS_POSIX к вашему CPPFLAGS и используйте основные стандартные заголовочные файлы POSIX. Взгляните на поддержку gcrypt для примера.

person unixsmurf    schedule 25.08.2014
comment
О, это интересно (дополнительные заголовки). Я рад, что вы снова открыли вопрос, чтобы вы могли опубликовать эту информацию. - person jww; 26.08.2014
comment
Спасибо @unixsmurf, ваш ответ действительно полезен. Я скоро обновлю свой вопрос, добавив несколько экспериментов, основанных на ваших идеях. Еще раз спасибо. - person tuantm; 29.08.2014