所以,我正在尝试制作 google 所说的屏蔽映像,基本上您提供 uefi 启动过程的密钥,并对它们进行签名。第一部分是构建一个使用 uefi 而不是 BIOS 启动的映像。
我开始改编一个完美工作的脚本,使用标准 BIOS 构建我们的图像,并将其精简为:
/usr/local/bin/qemu-system-x86_64 -display cocoa \
-name disk.raw \
-drive file=output_centos/disk.raw,if=virtio,cache=writeback,discard=ignore,format=raw \
-L ./bios \
-bios bios.bin \
-cdrom /Users/ron.jarrell/newwork/infra-centos/packer_cache/5a03ac2db9b9f47812a1c314ada462d469e94d91.iso \
-netdev user,id=user.0 \
-device virtio-net,netdev=user.0 \
-boot once=d
tianocore uefi bios 加载正常,并启动了 dvd,但是当我尝试安装时,出现“错误:无法分配内核”和“错误:您需要先加载内核”。
最终这将被回滚到加壳器中,这是我删除这个命令进行测试的地方。
原始配置还有一个“-machine type=pc,accel=hvf”,这导致启动停止:
“QEMU 闪存:尝试在 FFE00010 处检测闪存”
并永远停在那里。
答案1
闪光显然是为了转移注意力。这是一个打包文件将要成功获取centos7 DVD并以GCP将其识别为能够标记为“屏蔽”并启用“vtpm”的方式加载它。为了安全和保密,需要做更多的工作。
{
"builders": [
{
"accelerator": "hvf",
"boot_command": [
"<tab> console=ttyS0,115200n8 nomodeset text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/centos7.ks<enter><wait>"
],
"boot_key_interval": "10ms",
"boot_wait": "1s",
"communicator": "none",
"disk_interface": "virtio",
"disk_size": "4000",
"format": "raw",
"cpus": 4,
"memory": 8192,
"headless": false,
"http_directory": "http",
"iso_checksum": "sha256:101bc813d2af9ccf534d112cbe8670e6d900425b297d1a4d2529c5ad5f226372",
"iso_url": "http://Your Mirror Here/centos/7/isos/x86_64/CentOS-7-x86_64-NetInstall-2003.iso",
"net_device": "virtio-net",
"output_directory": "output_centos_tdhtest",
"qemu_binary": "/usr/local/bin/qemu-system-x86_64",
"qemuargs": [
["-L", "./bios.bin"],
["-chardev", "file,id=pts,path=serial.log"],
["-device", "isa-serial,chardev=pts"],
["-m", "8G"],
["-smp", "cpus=4"],
["-display", "cocoa"]
],
"shutdown_command": "",
"shutdown_timeout": "20m",
"skip_compaction": true,
"type": "qemu",
"vm_name": "disk.raw"
}
],
"post-processors": [
[
{
"output": "disk.raw.tar.gz",
"type": "compress"
},
{
"bucket": "{{user `env_name`}}-os-images",
"image_description": "CentOS 7 Server",
"image_family": "centos-7",
"image_name": "b1-centos7-server-{{timestamp}}",
"image_guest_os_features": "UEFI_COMPATIBLE",
"project_id": "{{user `gcp_project`}}",
"type": "googlecompute-import"
}
]
]
}
提供您自己的 kickstarter 文件。