ベアメタルプログラミングを学び、シンプルな卓球ゲームを作りました。
私のLinuxは/ dev / sdaドライブにあります。 pongの.efiファイルを/ dev / sdbドライブに配置し、そのドライブにefi / boot / bootx64.efiを配置しました。
適切なブートデバイスを選択してそれにアクセスし、卓球を打つことができます(ブート時にdelを押してブートメニューに移動します。grubで起動する最初のドライブを選択してLinuxを選択します。2番目のドライブを選択を選択すると、卓球ゲームが必要です)
これで、/dev/sdaから起動し、grubを表示し、linuxまたはpongを選択できるように、この起動オプションをgrubに通知するにはどうすればよいですか?
update-grub
卓球ゲームを検出しません。 (ただし、/dev/sdcでWindowsブートローダを検出します。)
答え1
Grub構成を変更する必要があります。 /boot/grub/grub.confに移動します。
/dev/hdc の Windows 部分を探し、/dev/hdb のように進みます。
# You should have already something like
title Windows
set root=(hd2,0)
chainloader +1
# Add
title Game
set root=(hd1,0)
chainloader +1
root
使用するドライブとドライブのパーティションをgrubに伝えます。
chainloader
grubにドライブの実際のMBRに直接移動するように指示します。 BIOSローダーを使用してドライブから起動できるため、MBRは正しく設定されています。
答え2
既存のgrubファイルからインスピレーションを得て/boot/grub/grub.cfg
アイテムを作成しました。結果は次のとおりです。
menuentry 'Pong' $menuentry_id_option 'play pong' {
insmod part_gpt
insmod ntfs
search --no-floppy --fs-uuid --set=root 7a844a6a-9734-49a4-881d-662251c39cc3
chainloader /my/custom/path/Pong.efi
}
ここpart_gpt
で、とはntfs
それぞれパーティションテーブルタイプとファイル形式です。search
指定されたUUIDを持つドライブを探します。chainloader
そのドライブから起動する.efiファイルを選択します。
grub.cfg
最後に、/etc/grub.d/40_custom
同様のプログラムがupdate_grub
この設定を維持するようにこのエントリを追加しました。 (注:Linux Mint 21から)