訂正
/EFI/ubuntu/... ではブート時に読み込まない、 と前回下記ましたが、efibootmgrで変更出来そうです。 が、今回はUSBメモリからのブートが要件なので、 efibootmgrは使えません。
手法2
「loopbackモジュールを含めたgrubを自力で署名する」 手法が漸くわかりました
efitools
をapt-get installしておきます- 自己署名証明書(pem形式とder形式)を作成します
- 必要なモジュールを含めた
grub
を作ります (ここまでモジュール入れないとうまく行きませんでした。iso9660
とcpio
くらいでいいような気はしますが下限は試してません)1
$ grub-mkimage -d /usr/lib/grub/x86_64-efi -o BOOTx64.EFI -O x86_64-efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot efi_gop loopback linuxefi affs afs bfs btrfs cbfs cpio cpio_be exfat hfs iso9660 jf
- 出来たBOOTx64に自己署名証明書で署名します
1
$ sbsign --key /etc/secureboot/key-material/test-key.rsa --cert /etc/secureboot/key-material/test-cert.pem BOOTx64.EFI
- 上記で出来る
BOOTx64.EFI.signed
を、USBメモリの/EFI/BOOT/BOOTx64.EFI
としてコピーします - 自己署名証明書(der形式)をUSBメモにコピーします
- PCでUSBブートし、BIOSメニューから、自己署名証明書を読み込ませます
これでUSBメモリ内のisoファイルから立ち上がるようになりました。
ただ、BIOSメニューに自己署名証明書を読み込ませるUIのない場合、 実機が今はないので試せないこともあり、どうするのかはよくわかりません。
cf.