見出し画像

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

それでは、魔改造していきましょう!!!

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

その後、再起動して設定が反映されていることを確認してください。

参考記事

おわりに

これで、GRUBの設定が完了しました。
次の記事(GPUドライバ編)では、両OSに対してGPUドライバ(NVIDIA)の設定を行っていきます。

この記事が気に入ったらサポートをしてみませんか?