选项 B:创建一个包含预填充变量存储的二进制 blob
创建了三个密钥对后,您可以创建一个二进制 blob,其中包含含有 UEFI 安全启动密钥的预填充变量存储。
警告
您必须先签署您的启动映像,然后才能注册密钥,否则您将无法启动实例。
步骤 1:创建新的变量存储或更新现有变量存储
您可以使用 python-uefivars 工具离线创建变量存储,而不需要正在运行的实例。该工具可以从您的密钥中创建一个新的变量存储。该脚本目前支持 EDK2 格式、Amazon 格式,以及使用更高级别的工具更容易编辑的 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