DEV Community

Shige Fukushima
Shige Fukushima

Posted on

Ubuntu VM のセキュアブートの有効化

はじめに

この記事では、記事: Ubuntu VM の移行 (VMware から Hyper-V へ)
で説明した以下の移行手順の ステップ 4 について説明します。

  1. VMDK 形式の仮想ディスクを VHD/VHDX 形式への変換
  2. 新しい仮想マシンを作成 (変換した仮想ディスクをアタッチする)
  3. open-vm-tools のアンインストール
  4. (オプション) 第2世代 Hyper-V 仮想マシン用の仮想ディスクへ変換
  5. (オプション) Secure Boot の有効化
  6. Hyper-V 統合サービスのインストール

セキュアブートの有効化

第 2 世代 Hyper-V 仮想マシンの Ubuntu Linux でセキュアブートを有効にするには、
セキュアブートに対応したカーネルと Grub ブートローダーをインストールする必要があります。

EFIブート対応済みの仮想マシンで起動して、以下の手順を実行します。

1) Grub EFI パッケージの取得

以下のコマンドを実行し、Grub EFI パッケージをネットワーク経由でダウンロードしインストールします。

VMware 仮想マシンから移行した場合、ネットワーク接続が可能となるように構成変更するのを忘れないでください。

sudo apt update
sudo apt install grub-efi-amd64 grub-efi-amd64-signed shim-signed -y
Enter fullscreen mode Exit fullscreen mode

2) Grub EFI のインストール

以下のコマンドを実行し、起動ディスクに Grub EFI をインストールします。

[更新:2023/03/25]

Grub EFI パッケージのインストーラーにより、
自動的に Grub ブートローダーの更新が実行されるため、以下のコマンドの実行は不要です。

sudo grub-install --target=x86_64-efi --uefi-secure-boot /dev/sda
sudo grub-install --recheck --uefi-secure-boot /dev/sda
sudo update-grub2
Enter fullscreen mode Exit fullscreen mode

3) セキュアブートの有効化

セキュアブート対応の Grub EFI ブートローダーのインストールが完了したら、
ライブサーバーをシャットダウンして、仮想マシンの設定を変更します。

仮想マシンの設定から、[セキュリティ] -> [セキュアブートを有効にする] のチェックボックスを有効にし、
テンプレートに [Microsoft UEFI 証明機関] を選択します。

また、仮想マシンの設定の[ファームウェア]の項目で
grubx64.efi の代わりに shimx64.efi ファイルがブートローダーとして設定されていることを確認します。

正常に起動しない場合

bad shim signature というメッセージが表示される場合、kernel が最新でないケースが考えられます。

以下のコマンドを実行して、kernel を含む更新を最新の状態にアップグレードすると正常に起動するでしょう。

apt upgrade -y
Enter fullscreen mode Exit fullscreen mode

セキュアブートが有効になっているかどうかの確認方法

以下のコマンドを実行して、セキュアブートが有効になっているかどうかを確認できます。

sudo dmesg | grep secureboot
Enter fullscreen mode Exit fullscreen mode

"Secure boot enabled" というログが表示されていれば、セキュアブートが有効になっています。

最後に

この記事では、第 2 世代の Hyper-V 仮想マシンで Ubuntu Linux のセキュアブートを有効にする方法を説明しました。

Ubuntu Linux 上のサービスでセキュアブートを有効にすると、署名のないドライバーなどを使うことができなくなります。
セキュアな環境を構築できる一方で、セキュリティの考慮がないドライバーなどの利用の際に思わぬ問題に遭遇する場合もあります。
その際には、セキュアブートを無効にして動作を確認することで、問題の切り分けができます。

Top comments (0)