选项 B:创建一个包含预填充变量存储的二进制 blob - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

选项 B:创建一个包含预填充变量存储的二进制 blob

创建了三个密钥对后,您可以创建一个二进制 blob,其中包含含有 UEFI 安全启动密钥的预填充变量存储。

警告

您必须先签署您的启动映像,然后才能注册密钥,否则您将无法启动实例。

步骤 1:创建新的变量存储或更新现有变量存储

您可以使用 python-uefivars 工具离线创建变量存储,而不需要正在运行的实例。该工具可以从您的密钥中创建一个新的变量存储。该脚本目前支持 EDK2 格式、Amazon 格式,以及使用更高级别的工具更容易编辑的 JSON 表示法。

在没有运行实例的情况下离线创建变量存储
  1. 通过以下链接下载该工具。

    https://github.com/awslabs/python-uefivars
  2. 通过运行以下命令从密钥创建新的变量存储。这将在 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