2026年8月26日

クアッドブート with rEFInd (その 3/5): Zerin OS と rEFInd のインストール

Linux ×2、FreeBSD ×2 クアッドブート (with rEFInd) の第 3 回です。3 回目にしてようやく最初の OS である Zorin OS をインストールします。それから rEFInd ブートマネージャーもインストールします。

なお本稿ではクアッドブートを実現することが目的なので、OS のインストールは最小限にとどめ、より進んだ設定などは別の機会にやりたいと思います。

前回までのおさらい

Zorin OS、Artix Linux、FreeBSD (×2) のうち、まず Zorin OS からインストールします。理由のひとつは Zorin OS が ESP (EFI System Partition) に GRUB を強制的にインストールしてしまうので、その前に rEFInd をインストールしても無駄になってしまうからです。もうひとつは Zorin OS は最初から何でもそろっているので、rEFInd のインストール作業が楽に進められるからです。

インストール先のパーティションは次の 2 ヵ所です:

パーティション用途ディスクラベルファイルシステム備考
/dev/nvme0n1p2

/boot

zorin-boot

ext4

暗号化しない

/dev/nvme0n1p3

/

zorin-root

ext4

LUKS 暗号化

/boot 用のパーティションは、暗号化してしまうと rEFInd から読み出せなくなってしまうので暗号化しません。また、スワップに関しては、スワップ用のパーティションは作らず、スワップファイルで対応しようと思います。

インストールメディアの作成方法はその 1 の記事を参照してください。

Zorin OS のインストール (パーティション設定の手前まで)

あらかじめ作っておいたインストールメディアでパソコンを起動するとメニューが表示されて「Try or Install Zorin OS」みたいな選択肢がいくつか表示されるので、そのまま 1 番上を選びます。で、雄大なアルプスかどこかの山々をバックにインストーラが起動したら、次の手順で進めます (スクショが見づらくてすみませんが、だいたいの感じで察してください)。

  1. ようこそ: 左のペインから目に優しい「日本語」を選択して、「Zorin OS をインストール」をクリックします (図 1(a))。
  2. キーボードレイアウト: は好きなレイアウトを選びます (図 1(b))。
  3. 無線: ネットワーク接続はあとでやるので、飛ばします (図 1(c))。
  4. アップデートと他のソフトウェア: 「グラフィックスと~」はそのまま ON にしました。加えて「国勢調査に参加しない」(ママ) も ON にしました (図 1(d))。
  5. インストールの種類: マルチブートにする場合は、「それ以外」を選びます (図 1(e))。

で、図 1(f) のような画面になって、パーティションごとにファイルシステムやマウントポイントを設定する画面になります。ここはちょっとややこしいので、いったん休憩です。

図 1
図 1

Zorin OS のインストール (パーティション設定)

  1. まず、画面の 1 番下に「ブートローダをインストールするデバイス」という欄があります。ここで /dev/nvme0n1p1 を選びます (図 2(a))。
    • 「nvme0n1」の部分は環境によって異なるかもしれないので、適当に読み替えてください。
    • 「p1」が 1 番目のパーティション (つまり [前回の記事] でパーティションを切ったときに ESP として作成したパーティション) になります。
    • ここに「ブートローダをインストールしない」という選択肢がほしい……
  2. 次に /boot 用パーティションです。/dev/nvme0n1p2 (パーティション 2) を選んだ状態で [変更] ボタンをクリックします (図 2(b))。
  3. 「パーティションを編集」という小さなダイアログが表示されたら、[利用方法] のプルダウンを開き、「ext4 ジャーナリングファイルシステム」を選択します (図 2(c))。
  4. [パーティションの初期化] にチェックを入れ、[マウントポイント] の欄に「/boot」と入力します (同)。
  5. 次にルートパーティション (/) です。手順 2 と同様にして /dev/nvme0n1p3 (パーティション 3) を選んで [変更] ボタンをクリックします (図 2(d))。
  6. [利用方法] のプルダウンから「暗号化の物理ボリューム」を選択します (図 2(e))。
  7. [セキュリティキー] の欄にパスワードを入力します (図 2(f))。OS 起動時などにルートパーティションをマウントする際、ここで入力したパスワードの入力を求められます。
  8. [OK] をクリックしてダイアログを閉じると、しばらくの間マウスカーソルがくるくるしますので、くるくるしなくなるまで待ちます。
  9. くるくるが終わると図 2(g) のような画面になり、/dev/mapper/nvme0n1p3_crypt が追加されます。
  10. その下にぶら下がっている「/dev/mapper/nvme0n1p3_crypt ext4」を選択して [変更] をクリックします (図 2(h))。
  11. 出てきたダイアログの [マウントポイント] の欄に「/」と入力します (図 2(i))。

これでパーティションの設定は終わりです。この時点で図 3 のように

  • /dev/mapper/nvme0n1p3_crypt が / にマウントされる
  • /dev/nvme0n1p2 が /boot にマウントされる
  • ブートローダが /dev/nvme0n1p1 にインストールされる

という設定になっていれば OK です。

図 2
図 2
図 3
図 3

Zorin OS のインストール (仕上げ)

  1. 「ディスクに変更を書き込みますか?」と表示されたら注意書きをよく読んでから [続ける] をクリックします (図 4(a))。
  2. 住んでいる地域を選択します (図 4(b))。
  3. 一般ユーザーのユーザー名やパスワードを入力します (図 4(c))。
  4. インストールが始まるので、しばらく待ちます。
  5. 「インストールが完了しました」と表示されたら、インストールメディアを抜いて、[今すぐ再起動する] をクリックします (図 4(d))。
図 4
図 4

スワップファイルの作成

上のほうにも書いたとおり、スワップパーティションの代わりにスワップファイルを作ります。

まずスワップとして確保したいサイズでダミーファイルを作成し、root のみ読み書きできるように権限を設定します。

# fallocate -l 8g /mnt/8GiB.swap
# chmod 600 /mnt/8GiB.swap

そのファイルをスワップとして初期化し、スワップ領域として追加します。

# mkswap /mnt/8GiB.swap
# swapon /mnt/8GiB.swap

/proc/swaps を見れば、スワップファイルがちゃんと追加されたかがわかります。

$ cat /proc/swaps
Filename                                Type            Size            Used            Priority
/mnt/8GiB.swap                          file            8388604         0               -1

OS が起動したら自動的にスワップファイルが利用可能となるように設定します。

# echo '/mnt/8GiB.swap swap swap defaults 0 0' | tee -a /etc/fstab

OS を再起動後、スワップファイルが利用可能になっているか確認します。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           30Gi       2.1Gi        27Gi       404Mi       1.5Gi        28Gi
Swap:         8.0Gi          0B       8.0Gi

rEFInd のインストール

Zorin OS が起動したら、rEFInd をインストール・設定します。こんな感じになるようにしようと思います:

図 5
図 5

基本的には公式サイトの Installing rEFInd Manually Using Linux に書かれている手順で進めます:

  • インターネットに接続する
  • rEFInd をダウンロードして適当なディレクトリに展開する
  • ESP を /boot/efi にマウントする
  • rEFInd を ESP にコピーする
  • rEFInd の設定ファイルを書く
  • (環境によっては) UEFI のブートエントリーを編集する

インターネット接続と rEFInd のダウンロード

まずは何らかの手段でインターネットに接続しましょう。Zorin OS ならスタートボタン > [設定] > [Wi-Fi] で Wi-Fi 接続も簡単です。

接続できたら、スタートボタン > [ユーティリティ] > [端末] でターミナルソフトを開いて、rEFInd の ZIP ファイルをゲットし、適当なディレクトリに展開します。

$ wget https://sourceforge.net/projects/refind/files/0.14.2/refind-bin-0.14.2.zip
$ unzip refind-bin-0.14.2.zip

ESP のマウントと rEFInd のインストール

ここからはルート権限で実行します。まず、ESP を適当なマウントポイントにマウントする必要がある…んですが、Zorin OS の場合はすでに /boot/efi にマウントされているようです。そこに rEFInd 本体 (unzip したデータの中の refind ディレクトリ) をコピーします。

# cp -r refind-bin-0.14.2/refind/ /boot/efi/EFI/refind/

コピー先のディレクトリに移動して、自分が使用するアーキテクチャ以外のディレクトリとファイルを削除します。下の例では x64 以外を削除しています。

# cd /boot/efi/EFI/refind/
# rm -rf drivers_aa64/ drivers_ia32/ refind_aa64.efi refind_ia32.efi tools_aa64/ tools_ia32/

drivers_x64 ディレクトリ内にある不要なドライバを削除します。公式サイトによれば、これは「強く推奨する」とのことです。基本的には Linux カーネルが格納されているファイルシステムが読めればいいみたいなので、今回は ext4_x64.efi 以外の .efi ファイルを削除しました。

# rm drivers_x64/btrfs_x64.efi drivers_x64/ext2_x64.efi drivers_x64/hfs_x64.efi drivers_x64/iso9660_x64.efi drivers_x64/reiserfs_x64.efi

起動メニューのカスタマイズ

/boot/efi/EFI/refind/refind.conf を新規作成します。

/boot/efi/EFI/refind/refind.conf
timeout 0
textonly
scanfor manual

menuentry "Zorin OS" {
    volume zorin-boot
    loader /vmlinuz
    initrd /initrd.img
    options "root=/dev/mapper/nvme0n1p3_crypt rw quiet video=efifb:off"
}
  • 1 行目:  OS 選択画面でのタイムアウト設定。0 はタイムアウトなし。
  • 2 行目:  OS 選択画面をテキストベースの質素な佇まいにする。
  • 3 行目:  ブートローダの検索方法を指定する。"manual" にすると、この設定ファイルに記述されたスタンザ (menuentry で定義される個々のエントリー) にしたがう。
  • 5 行目:  Zorin OS 用のエントリー。
  • 6 行目:  Zorin OS 用の /boot 用に作成したパーティションのディスクラベル (gpart コマンドでパーティションを作ったときに設定した)。
  • 7 行目:  Linux カーネルへのパス。Zorin OS から見ると /boot/vmlinuz なんだけど、これを 6 行目で指定した実パーティションから見ると /vmlinuz になる。と思う。
  • 8 行目:  LUKS 復号化のための設定。※
  • 9 行目:  カーネルに渡すオプションの指定。暗号化されたルートパーティションをマウントするのに必要な設定。

※ LUKS を復号するのはカーネルでなく、一時的に読み込まれる初期 RAM ディスク内のスクリプトだそうです。そのあたりのしくみがディストリビューションによって異なるらしく、Zorin OS ではそれが initramfs-tools とのこと。次回インストールする Artix Linux では mkinitcpio がそれにあたり、カーネルに渡すオプションなど、refind.conf の書きかたも変わってきます。

後始末など

Zorin OS が ESP にインストールした GRUB 関係のディレクトリやファイルは不要になったので、削除します。

# cd /boot/efi/EFI/
# rm -rf BOOT/*.efi BOOT/*.EFI ubuntu/

rEFInd をデフォルト/フォールバックブートパス (EFI/BOOT/) にもインストールします。

# cp refind/refind_x64.efi BOOT/bootx64.efi

参考: Arch Wiki

基本的にはこれで作業完了だと思います。問題なく rEFInd から OS を起動できるようなら、次の節は飛ばしてください。

UEFI のブートエントリーを編集する

環境によっては不要かもしれませんが、私の環境では UEFI のブートエントリーを編集する必要があったので、それを書いておきます。

Zenbook にインストールされている American Megatrends 製の UEFI の場合、デフォルトでは「UEFI OS」というエントリーだけが登録されており、これを選ぶと /EFI/BOOT/bootx64.efi が起動するようになっているみたいです。

上のほうでの作業したとおりなら、bootx64.efi の実体はコピー元である refind_x64.efi になっています。その結果どうなるかというと、まず /EFI/BOOT/bootx64.efi の rEFInd が起動して、メニューに

Boot EFI\refind\refind_x64.efi from 510 MiB FAT volume

というエントリーが現れます。で、このエントリーを選択すると、今度は /EFI/refind/refind_x64.efi が起動して、ようやく

Boot Zorin OS from zorin-boot

という (当初想定していたとおりの) エントリーが表示されます。つまり rEFInd が 2 段階で起動してしまっています。

これを解決するために、UEFI を起動して、refind_x64.efi を直接起動するエントリーを自分で追加しました。 American Megatrends 製の UEFI の場合、手順は次のようになります。

  1. パソコン起動時に ESC キーを押してセットアップメニューに入ります。
  2. F7 キーを押して Advanced Settings 画面に切り替えます。
  3. [Boot] タブを選択します (図 6(a))。
  4. [Add New Boot Option] (図 6(b))。
  5. [Path for boot option] (図 6(c))。
  6. [<DIR>EFI] をクリックすると EFI ディレクトリの中身が展開されます。この操作を繰り返して /EFI/refind/ まで降りていって、refind_x64.efi を選択します (図 6(d), (e))。
  7. [Add boot option] の欄にエントリーの名前をわかりやすいように入力します。「rEFInd Boot Manager」とか (図 6(f))。
  8. [Create] をクリックすると、エントリーが作成されます (図 6(g))。
  9. [Boot] タブのメイン画面に戻って、[Boot Option #1] に手順 7 で作成した rEFInd のエントリーをセットします (図 6(h))。
  10. 手順 9 により、ブートオーダーが自動的に rEFInd → UEFI OS の順になります (図 6(i))。
  11. 設定を保存して UEFI を終了させます。
図 6
図 6

こうして得られたスクリーンショットが前出の図 5 です。ちゃんと Zorin OS が起動するか確認しましょう。よさそうならこれで Zorin OS は完了です、お疲れさまでした。次は Artix Linux です。

おまけ: Zorin OS の起動が激遅な場合の対策? (効果不明)

無事にインストールできたと思ったのもつかの間、なんだか Zorin OS の起動が異常に遅い気がする……ということでちょっとだけ調べた顛末をメモしておきます。一応改善したような気はします。でもいいときもあれば悪いときもあるようで、正直効果のほどはよくわかりません。あと ChatGPT & Gemini にこうしろといわれたとおりにやってみたってだけで、意味とかはよくわかってません。いずれ本腰を入れて取り組むことにして、今はとにかく早く記事を終わらせたいです(笑)

まず systemd-analyze blame コマンドで初期化に時間がかかったサービスを確認したところ、plymouth-quit-wait.service というのが最遅でした。どうも OS 起動時の画面をちょっとおしゃれにするサービスらしい。ちょっとでも速くなるならおしゃれじゃなくてもいいので、refind.conf を次のように変更しました。

refind.conf 差分
 menuentry "Zorin OS" {
     volume zorin-boot
     loader /vmlinuz
     initrd /initrd.img
-    options "root=/dev/mapper/nvme0n1p3_crypt rw quiet splash"
+    options "root=/dev/mapper/nvme0n1p3_crypt rw quiet video=efifb:off"
 }

次に systemd-analyze time コマンドを確認したところ、kernel、userspace でそれぞれ 40 秒近くかかっているとのこと。

# systemd-analyze time
Startup finished in 6.782s (firmware) + 3.163s (loader) + 41.297s (kernel) + 39.404s (userspace) = 1min 30.648s graphical.target reached after 39.289s in userspace.

で、dmesg で怪しそうなところを探ったらこんなんなって、

# dmesg --ctime | grep -Ei 'timed out|timeout|failed|error|firmware|waiting|blocked'
...
[ 8月23日(日) 01:50:02 2026] nvme nvme0: I/O tag 541 (621d) QID 3 timeout, completion polled
[ 8月23日(日) 01:50:02 2026] nvme nvme0: I/O tag 498 (e1f2) QID 1 timeout, completion polled
[ 8月23日(日) 01:50:34 2026] nvme nvme0: I/O tag 559 (922f) QID 3 timeout, completion polled
[ 8月23日(日) 01:51:33 2026] nvme nvme0: I/O tag 329 (7149) QID 2 timeout, completion polled
...

現状、default_ps_max_latency_us の値が 100 ms に設定されているのが待ち過ぎだということらしく、

# cat /sys/module/nvme_core/parameters/default_ps_max_latency_us
100000

これを 0 ms に設定すべく、refind.conf をさらに修正。

refind.conf 差分
 menuentry "Zorin OS" {
     volume zorin-boot
     loader /vmlinuz
     initrd /initrd.img
-    options "root=/dev/mapper/nvme0n1p3_crypt rw quiet video=efifb:off"
+    options "root=/dev/mapper/nvme0n1p3_crypt rw quiet video=efifb:off nvme_core.default_ps_max_latency_us=0"
 }

これでまあ速くなったような気もするのだけど、劇的に改善したってわけでもないみたいです。

関連記事

広告