Ubuntu 22.04 を USB ディスクから UEFI secure boot する

はじめに

USB ディスクから UEFI secure boot 可能な Ubuntu 22.04 環境を作る方法を述べる。自分用の備忘録なので、自分が解り切っていることは一々書かない。

VirtualBox 仮想マシンの準備

USB ディスクの作成は仮想マシンを使って行う。次の理由から実機は使わない。

  1. Live CD に付属のインストーラが GRUB をインストールする際に、インストーラの不具合で内蔵ディスクの EFI パーティションにインストールすることがある()。

上記で説明されたリスクを回避できる、または受容できる実機を持っている人は仮想マシンを使わずに実機でやればよい。

VirtualBox の「設定」>「システム」>「EFI を有効化」および「セキュアブートを有効化」に✓を入れる。

「設定」>「USB」>「USB コントローラを有効化」に✓を入れ、「USB デバイスフィルター」にターゲットの USB ディスクを登録する。これで VirtualBox からそのディスクに直接アクセスできる。

仮想 CD ドライブには Ubuntu の Live CD の ISO イメージ・ファイルをセットすることは言うまでもない。

パーティション作成

自分はシンプルに次の 3 つの構成とした。パーティション編集には GParted を使った。

  1. EFI システム・パーティション
    256 MiB で十分。ファイル・システムは FAT32 。ラベル名は ESP 。 boot と esp のフラグを立てておくこと。
  2. ルート・ディレクトリのマウント・ポイントのためのパーティション
    ファイル・システムを ext4 とした。
  3. swap 領域
    運用予定のマシンの RAM 容量の 2 倍が推奨らしい。自分の場合にそのルールを真面目に守ると 32 GiB 必要だが、基本的にメモリ不足起因のスワップ・アウトを起こさない運用を想定しているので 8 GiB とした。

インストール

前述のパーティションの意図通りに配置されるように、手動で用途を割り当てるモードでインストール・ウィザード(Ubiquity)を進める。

ブート・ローダ (GRUB) のインストール先はターゲットの USB ディスク(典型的には /dev/sda)を指定する。

この時点では GRUB が正しくインストールされておらず、ISO イメージに含まれている shim64.efi を参照する奇妙な形になっている。

インストール・ウィザードが最後まで進んだら、シャットダウンする。

GRUB の再インストール

ISO イメージを仮想 CD ドライブにセットしたまま起動する。もし ISO イメージを仮想 CD ドライブから外して起動すると、前述の GRUB の問題から shimx64.efi が見つからない旨のエラーが生じて起動できない。

起動後、Ubuntu から仮想 CD ドライブの CD をアンマウントする。

次のコマンドを実行する。

grub-install /dev/sda # ドライブ・レターは読者の環境に依る
update-grub

完了したらシャットダウンする。仮想 CD ドライブから ISO イメージを外して実機で起動できるはず。

運用上の注意

内蔵ディスクを有するマシンに於いて、本 SSD から Ubuntu を起動した状態では、カーネル・イメージの更新のような、update-grub が行われるような操作は避けるべきであろう。UEFI のブート・エントリに、内蔵ディスク上の UEFI 対応 OS が紛れ込むかもしれない。あるいは逆に内蔵ディスクに GRUB がインストールされてしまうかもしれない。

投稿者: motchy

An embedded software and FPGA engineer for measuring instrument.

コメントを残す