u-ryo's blog

various information for coding...

Category: Self-signed cert

Secure Boot 2 (using Self-signed Cert)

| Comments

訂正

/EFI/ubuntu/... ではブート時に読み込まない、 と前回下記ましたが、efibootmgrで変更出来そうです。 が、今回はUSBメモリからのブートが要件なので、 efibootmgrは使えません。

手法2

「loopbackモジュールを含めたgrubを自力で署名する」 手法が漸くわかりました

  1. efitoolsをapt-get installしておきます
  2. 自己署名証明書(pem形式とder形式)を作成します
  3. 必要なモジュールを含めたgrubを作ります (ここまでモジュール入れないとうまく行きませんでした。 iso9660cpioくらいでいいような気はしますが下限は試してません)
    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
    
  4. 出来たBOOTx64に自己署名証明書で署名します
    1
    
    $ sbsign --key /etc/secureboot/key-material/test-key.rsa --cert /etc/secureboot/key-material/test-cert.pem BOOTx64.EFI
    
  5. 上記で出来るBOOTx64.EFI.signedを、USBメモリの/EFI/BOOT/BOOTx64.EFIとしてコピーします
  6. 自己署名証明書(der形式)をUSBメモにコピーします
  7. PCでUSBブートし、BIOSメニューから、自己署名証明書を読み込ませます

これでUSBメモリ内のisoファイルから立ち上がるようになりました。

ただ、BIOSメニューに自己署名証明書を読み込ませるUIのない場合、 実機が今はないので試せないこともあり、どうするのかはよくわかりません。

cf.