在 Mac 上使用 uefi 固件在 qemu 下从 DVD 启动 Centos 7

在 Mac 上使用 uefi 固件在 qemu 下从 DVD 启动 Centos 7

所以,我正在尝试制作 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 文件。

相关内容