選項 B:建立一個包含預先填寫的變數存放區的二進位 blob
建立三個金鑰對之後,您可以建立一個包含預先填寫的變數存放區 (包含 UEFI 安全開機金鑰) 的二進位 blob。
警告
您必須在註冊金鑰之前簽署開機映像,否則您將無法啟動執行個體。
步驟 1:建立新的變數存放區或更新現有變數存放區
您可以使用 python-uefivars 工具,在沒有執行個體執行的情況下離線建立變數存放區。該工具可以從您的金鑰建立一個新的變數存放區。指令碼目前支援 EDK2 格式、AWS 格式,以及能更容易用更高級的工具編輯的 JSON 表示法。
在沒有執行個體執行的情況下離線建立變數存放區
-
在下列連結下載該工具。
https://github.com/awslabs/python-uefivars
-
通過執行下列命令從您的金鑰建立新的變數存放區。這將在
your_binary_blob
.bin 中建立 base64 編碼二進位 blob。該工具還支援透過-I
參數更新二進位 blob。./uefivars.py -i none -o aws -O
your_binary_blob
.bin -P PK.esl -K KEK.esl --db db.esl --dbx dbx.esl
步驟 2:在建立 AMI 時上傳二進位 blob
使用 register-image 傳遞您的 UEFI 變數存放區資料。對於 --uefi-data
參數,請指定您的二進位 blob,而對於 --boot-mode
參數,則指定 uefi
。
aws ec2 register-image \ --name uefi_sb_tpm_register_image_test \ --uefi-data $(cat
your_binary_blob
.bin) \ --block-device-mappings "DeviceName=/dev/sda1,Ebs= {SnapshotId=snap-0123456789example
,DeleteOnTermination=true}" \ --architecture x86_64 --root-device-name /dev/sda1 --virtualization-type hvm —ena-support \ --boot-mode uefi