セキュアブートすると当然ながらサインのないカーネルモジュールは読み込まれません。単純にはサインすればいいのですが、dkmsパッケージをつくるまでもないので直接サインできないものかと思い、mokutil と dkms、それと linux-kbuild に含まれる sign-file コマンドを使うと意外とあっさりモジュールにサインできたので、備忘録として挙げておくことにしました。 以下手順です。 sudo su KVER=$(uname -r | cut -d'-' -f1) apt-get install mokutil dkms linux-kbuild-${KVER} dkms generate_mok mokutil --import /var/lib/dkms/mok.pub input password: input password again: # 再起動 reboot enters MOK manager EFI utility: 1. press any key 2. enroll MOK, 3. continue 4. enroll the key(s)?: yes 5. enter password 6. reboot (再起動) mokutil --list-enrolled --snip X509v3 Subject Key Identifier: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:C3:96:14:01 --snip # verify your key is loaded sudo dmesg | grep cert | grep c3961401 [ 1.088300] integrity: Loaded X.509 cert 'DKMS module signing key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc3961401' # モジュールにサイン cd /lib/modules/${KEVER}-amd64/3rdPartyMods /usr/lib/linux-kbuild-${KEVER}/scripts/sign...
USB ドライブにセキュアブート可能なインストールをすることは、通常のローカルドライブにインストールするのと同じ手順で行けるのですが、すくなくとも Debian 12 の場合だと、efiboot のエントリーがインストールしたマシンの NVRAM に登録されますが、リムーバブルのターゲットドライブを他のマシンで使おうとすると、セキュアブートバイオレーションエラーがでて起動できませんし、NVRAM に自動的にエントリが入っていしまいます。 しかし、インストーラの USB ドライブは当然ながらセキュアブートが有効になっているマシンならどれでも起動できる上、NVRAM にはエントリが残らないので、多分行けるだろうと思い、インストーラの EFI ディレクトリをターゲットにコピーし、debian/grub.cfg だけ USB ターゲットドライブのものに差し替えた所、うまく行ったので備忘録として挙げておくことにしました。 以下手順です。 ############ 1. 通常通りターゲットドライブにインストール ############ 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 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 modprobe -av efivarfs mount ...