スキップしてメイン コンテンツに移動

セキュアブート可能な Debian usb removable drive を作成する

USB ドライブにセキュアブート可能なインストールをすることは、通常のローカルドライブにインストールするのと同じ手順で行けるのですが、すくなくとも Debian 12 の場合だと、efiboot のエントリーがインストールしたマシンの NVRAM に登録されますが、リムーバブルのターゲットドライブを他のマシンで使おうとすると、セキュアブートバイオレーションエラーがでて起動できませんし、NVRAM に自動的にエントリが入っていしまいます。
しかし、インストーラの USB ドライブは当然ながらセキュアブートが有効になっているマシンならどれでも起動できる上、NVRAM にはエントリが残らないので、多分行けるだろうと思い、インストーラの EFI ディレクトリをターゲットにコピーし、debian/grub.cfg だけ USB ターゲットドライブのものに差し替えた所、うまく行ったので備忘録として挙げておくことにしました。
以下シリアル/テキストモードでの手順です。
############ 1. 通常通りターゲットドライブにインストール (ここは、グラフィックインストールでもOK)

############ 2. インストーラをレスキューモードで再起動し、ターゲットの USB Drive に chroot して作業を行う
cd /boot/efi/EFI
mv debian /root/xx-debian
mv BOOT /root/xx-BOOT

cd /boot/efi/EFI
mkdir debian
cp -a /root/xx-debian/grub.cfg debian/

## インストーラのシェルを切替: 
# シリアルの場合: press ctrl + a then press 2 
# テキストの場合: press ctrl + alt + F2

mkdir -p /target/boot/efi/EFI/BOOT
cp -a /cdrom/EFI/boot/bootx64.efi /target/boot/efi/EFI/BOOT/
cp -a /cdrom/EFI/boot/grubx64.efi /target/boot/efi/EFI/BOOT/

############ 3. efi ブートエントリーを efibootmgrを使ってクリーンアップ
# chrootのシェルに戻る: 
# シリアルの場合: press ctrl + a then press 1 
# テキストの場合: press ctrl + alt + F1

modprobe -av efivarfs
mount -t efivarfs none /sys/firmware/efi/efivars

# 以下例です. UEFI OS(エントリ0001) がインストーラ USB ドライブです。
efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0002,0000,0001
Boot0000* debian        HD(1,GPT,XXXXXXXX-601c-495f-a30f-03abd9e8481e,0x800,0x100000)/File(\EFI\DEBIAN\SHIMX64.EFI)
Boot0001* UEFI OS       HD(1,MBR,0xXXXXXXXX,0x800,0x1cc7c8)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0002* debian        HD(1,GPT,XXXXXXXX-601c-495f-a30f-03abd9e8481e,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO

# エントリ0000を削除
efibootmgr -b 0000 -A
efibootmgr -b 0000 -B

# エントリ0002を削除
efibootmgr -b 0002 -A
efibootmgr -b 0002 -B

# 確認
efibootmgr -v
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001
Boot0001* UEFI OS       HD(1,MBR,0xXXXXXXXX,0x800,0x1cc7c8)/File(\EFI\BOOT\BOOTX64.EFI)..BO

# chrootから抜けて再起動
exit

######## 4. ターゲット usb ドライブ で再起動し、確認

efibootmgr -v

BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0001
Boot0001* UEFI OS	HD(1,MBR,0xXXXXXXXX,0x800,0x1cc7c8)/File(\EFI\BOOT\BOOTX64.EFI)..BO
Boot0002* UEFI OS	HD(1,GPT,XXXXXXXX-601c-495f-a30f-03abd9e8481e,0x800,0x100000)/File(\EFI\BOOT\BOOTX64.EFI)..BO
usb インストーラのレスキューモードも便利なのですが、こんな方法もあるよというお話でした。
今回は以上です。それでは。

コメント