Windows11, AlmaLinux9.2, Ubuntu22.04をマルチブート(GRUB設定編)
こんにちは、よちゅばです。
この記事では、Windows11、AlmaLinux9.2、Ubuntu22.04によるマルチブートの際のGRUB設定方法について説明します。(UEFI対応環境を前提としています。)
各LinuxOSのインストール方法については、前の記事(インストール編)をご覧ください。
なお、GPUを搭載したPCを使用している場合、GPUのドライバが正常にインストールされていないとOSが起動できない場合があります。次の記事(GPUドライバ編)で各LinuxOSへNVIDIA GPUドライバのインストール方法を説明していますので、こちらも併せてご覧ください。
GRUB設定の方針
AlmaLinux9.2、Ubuntu22.04は、いずれもインストールするとGRUBも同時にインストールされ、デフォルトで有効になっているos-prober機能によって、インストール済の他のOSもメニューへ登録されます。
そのため、最後にインストールしたOSのGRUBを使えば、特に設定を行わなくてもすべてのOSを起動することが可能です。しかし、以下のような理由から、GRUBの設定を行うことを推奨します。
Ubuntuを最後にインストールした場合の欠点
AlmaLinuxのデフォルトのカーネルイメージがrescueモードであり、毎回サブメニューを開いて適切なカーネルイメージを選択する必要がある。
文字が小さい。
AlmaLinuxを最後にインストールした場合の欠点
Ubuntuのメニューが大量に羅列される。(実際は各メニューでカーネルイメージが異なるが、メニュー名のみでは識別できない)
解像度が低い。
GRUBの設定をする上で、どのOSのブートローダを使用するかという問題もありますが、私はUbuntuのGRUBを採用しました。理由は、AlmaLinuxのGRUBだと何故か背景画像を設定しても反映されなかったからです。(諦めんなよ!)
ちなみに、私の最終的なGRUB画面は以下の図のようになりました。
それでは、魔改造していきましょう!!!
GRUB設定(AlmaLinux)
OSインストール直後の場合は、パッケージ・カーネルの更新を行います。
$ sudo dnf upgrade
$ sudo reboot
次に、/etc/default/grubを開き、以下の部分を修正します。
GRUB_ENABLE_BLSCFG=false
GRUB_ENABLE_BLSCFGを無効にすることで、UbuntuのGRUBを使用する場合に、AlmaLinuxのデフォルトのカーネルイメージが通常起動モードのイメージとなります。
修正後は、以下のコマンドを実行します。
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
これで、AlmaLinux側のGRUB設定は完了です。
GRUB設定(Ubuntu)
パッケージ・カーネルの更新
OSインストール直後の場合は、パッケージ・カーネルの更新を行います。
$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
画像・フォントの設定
背景に設定したい任意の画像を、サイズ1920×1080、png拡張子で用意してください。用意した画像は、Ubuntu上の/boot/grub/配下に配置します。
次に、使用したいフォント(ttf拡張子)を用意してください。用意したフォントは、Ubuntu上の任意の場所に配置し、次のコマンドを実行してpf2ファイルへ変換します。
$ sudo grub-mkfont {フォントのパス} -s {フォントサイズ} -o /boot/grub/{フォント名}.pf2
このとき、フォントサイズは整数で指定します。だいたい20~50くらいの間で好きな大きさに設定してください。
画像とフォントが用意できたら、/etc/default/grubを開き、以下を追記します。
GRUB_GFXMODE=1920x1080
GRUB_BACKGROUND="/boot/grub/{画像ファイル名}.png"
GRUB_FONT="/boot/grub/{フォント名}.pf2"
文字・背景色の設定
GRUBの色の設定も/etc/default/grubから設定できるはずなのですが、編集しても何故か変わらなかったので、/etc/grub.d/の中に色を変更する設定ファイルを配置します。
/etc/grub.d/40_color-fixというファイルを作成し、以下を記述します。
#!/bin/sh
GRUB_COLOR_NORMAL="{文字色}/{背景色}"
GRUB_COLOR_HIGHLIGHT="{文字色}/{背景色}"
cat << EOF
set color_normal=$GRUB_COLOR_NORMAL
set color_highlight=$GRUB_COLOR_HIGHLIGHT
set menu_color_normal=$GRUB_COLOR_NORMAL
set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT
EOF
このとき、GRUB_COLOR_NORMALは通常時の色、GRUB_COLOR_HIGHLIGHTはメニューが選択されてハイライトされた状態のときの色を表しています。それぞれに対して、文字の色と背景の色を設定することができます。
入力可能な色は、以下のリンク先から確認できます。
なお、背景画像を表示する場合は、GRUB_COLOR_NORMALの背景色を必ずblackにしてください。(背景画像が設定されている場合、blackの背景色は透過されます。)
ちなみに、私は以下の色に設定しています。
GRUB_COLOR_NORMAL="white/black"
GRUB_COLOR_HIGHLIGHT="white/magenta"
デフォルトOSの設定
今回は、GRUBの初期選択位置をWindowsに設定する例を紹介します。
まず、以下のコマンドを実行してください。
$ less /boot/grub/grub.cfg | grep -i windows
すると、
menuentry 'Windows Boot Manager (on /dev/XXXXXXX)' ...
のように、Windowsブートマネージャーのmenuentryが表示されると思いますので、シングルクォーテーションで囲われている部分をコピーしてください。※
その後、/etc/default/grubを開き、以下の部分を修正します。
GRUB_DEFAULT='Windows Boot Manager (on /dev/XXXXXXX)'
※Windowsブートマネージャーのmenuentryが表示されない場合は、以下の手順を先に実行してください。
1./etc/default/grubを開き、以下の部分を修正します。
GRUB_DISABLE_OS_PROBER=false
2.以下のコマンドを実行します。
$ sudo update-grub
設定の反映
以下のコマンドを実行します。
$ sudo update-grub
その後、再起動して設定が反映されていることを確認してください。
参考記事
/etc/default/grub の GRUB_ENABLE_BLSCFG とは何ですか? - Red Hat Customer Portal
update-grub ignores GRUB_COLOR_NORMAL and GRUB_COLOR_HIGHLIGHT - Launchpad Bugs
おわりに
これで、GRUBの設定が完了しました。
次の記事(GPUドライバ編)では、両OSに対してGPUドライバ(NVIDIA)の設定を行っていきます。