Uefi

在 Mac 上使用 uefi 韌體在 qemu 下從 dvd 引導 Centos 7

  • November 23, 2020

所以,我正在嘗試製作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 檢測快閃記憶體”

並永遠停在那裡。

閃光燈顯然是一條紅鯡魚。這是一個打包程序文件,它將成功獲取 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 文件。

引用自:https://unix.stackexchange.com/questions/610673