11

grub ブートローダーを使用して、ブート段階で共有ライブラリ (クローズド ソースのバイナリ ユーザー空間ライブラリ) をロードしたいと考えています。これを行う可能性はありますか、それとも custom-elf-loader (grub モジュール) を作成する必要がありますか?


  • 29/08/2014: 詳細については、これは Grub ブートローダー プロジェクトにいくつかの新機能をカスタマイズまたは追加したいプログラミングの問題です。ご支援いただきありがとうございます!
4

1 に答える 1

20

したがって、何をしようとしているのかを明確にすることはできませんが、次のようになります。

ユーザー空間 (Linux SysV ELF タイプを想定) 共有ライブラリを直接 GRUB にロードすることはできません。GRUB モジュールは確かに ELF 形式ですが、追加のヘッダーが含まれています。そのヘッダーに含まれる情報の中には、明示的なライセンス ステートメントがあります。GRUB は、明示的に GPLv2+、GPLv3、または GPLv3+ ではないモジュールのロードを拒否します。

ELF ローダーを作成することは可能ですが、より簡単な方法は、ユーザー空間ライブラリを GRUB モジュールに変換するツールを作成することです。もちろん、ここにはいくつかの制限があります。

  • ユーザー空間ライブラリがシステム コールを実行していないことを確認する必要があります。GRUB にはそれらを処理するための場所がありません。
  • ライセンス規則に従う必要があります (したがって、3 つ以上のライセンスのみが受け入れられます)。
  • これらのライブラリが、glibc によって設定されたグローバル オフセット テーブルに依存していないことを確認する必要があります。

再コンパイルがオプションの場合、GRUB は POSIX エミュレーション レイヤーも提供します。CPPFLAGS_POSIX を CPPFLAGS に追加し、コア標準 POSIX ヘッダー ファイルを使用します。例として gcrypt サポートを見てください。

于 2014-08-25T18:26:28.560 に答える