7

ubuntu のソースから grub 2 ブートローダーをビルドし、qemu エミュレーターでテストする方法を知りたいです。

また、新しいビルドで grub2 ブートローダーのデフォルトの背景画像を変更したいですか?

これは可能ですか?はいの場合、どのように?

4

1 に答える 1

13

もちろんできます。

GRUB Web サイトに示されているように、grub のソース コードは git.savannah.gnu.org から git 経由で入手できます。

それからそれは理論的には単なる問題です

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

ただし、プラットフォームによっては、grub のデフォルトのターゲット プラットフォームが必要な場合とそうでない場合があります。したがって、QEMU で使用するファームウェア プラットフォームを決定する必要があります。これは、アーキテクチャに応じて次のようになります。

  • (パソコン) BIOS
  • コアブート
  • (U)EFI
  • ieee1275 (オープンファームウェア)
  • u-boot

Ubuntu についてのあなたの言及は、上記の少なくとも 3 つの可能なオプションと一致しますが、私は退屈になり、x86_64/amd64 を意味すると仮定します。QEMU の下で GRUB を実行するため、物理コンピューターが 2 つのプラットフォーム (「pc」または「efi」) のどちらを実行しているかは問題ではありません。それでは、少し生きて、(U)EFI バリアントに行きましょう。

構成およびビルドの前に、いくつかの前提条件をインストールする必要があります。

$ sudo apt-get install build-essential autoconf automake
$ sudo apt-get build-dep grub-efi-amd64

したがって、実際のビルドは次のようになります。

$ # Next command is optionnal (languages):
$ ./linguas.sh
$ ./autogen.sh
$ # Next parameters are optionnal:
$ ./configure --prefix=$HOME/local --platform=efi
$ make
$ # Next command is optionnal:
$ make check
$ make install

機能する GRUB イメージを取得する最も簡単な方法は、おそらく次のgrub-mkstandaloneコマンドを使用することです。

$ $HOME/local/bin/grub-mkstandalone -O x86_64-efi -o mygrub.efi

/dev/sda注: GRUB を(QEMU の代わりに) ディスクにインストールするには、次を使用します。

$ sudo grub-install /dev/sda

注: 起動時に GRUB メニューが表示されない場合は、この質問を確認してください。Shift起動時または編集時/etc/default/grubにコメントを押す必要がありますGRUB_HIDDEN_TIMEOUT

次に、QEMU で実行する UEFI イメージが必要です。x86 のデフォルトの選択肢は OVMF と呼ばれ、UEFI のデファクト オープン ソース実装であるTianocore EDK2の一部です。FAT ファイルシステム ドライバーの再配布に関する法的技術により、多くの Linux ディストリビューション (Ubuntu を含む) にはビルド済みのドライバーが含まれていません。しかし、恐れる必要はありません。自分で作成するのは非常に簡単です。

ただし、この回答をこれまで以上に話題から外すつもりはありません。そのため、OVMF READMEを読み、それに関するわずかに古いブログ記事を1つか2 つ確認するだけでいいと思います。

于 2015-08-11T19:34:53.540 に答える