我正在尝试使用打包程序构建 Ubuntu 19.04 服务器映像。我已成功启动并运行安装,经过一个小时的更改后,Qemu 显示安装已完成,有时SIGINT
会SIGKILL
发送和,并请求重新启动,但最终打包程序超时,因为 Qemu 从不重新启动操作系统以让打包程序 SSH 进入并完成其工作。我尝试了一些方法让 Qemu 输出有关其无法重新启动的原因的信息:
-serial stdio
-serial mon:stdio
-serial telnet:127.0.0.1:4444,server,nowait
一切都无济于事。我没有从 Qemu 得到任何反馈。我还尝试找到配置跟踪和-append console=ttyS0
内核的好例子。我是 Qemu 和 Packer 新手,所以如果我遗漏了一些显而易见的东西,请原谅我。我做了很多搜索,试图找到调试 qemu 的方法,以找出它在重启时挂起的原因。
Ubuntu 19.04 桌面版本:
打包程序:1.4.1
Qemu:3.1.0(apt 安装)
macOS 10.14.5 构建环境:
打包程序:1.4.0
Qemu:4.0.0(brew 安装)
在这两种环境中,qemu 似乎在重启时挂起。我说似乎,因为虽然我确实-display gtk
在 Ubuntu 桌面上看到它挂起的位置,但有一个错误(?)并且-display sdl
在 Mac 上损坏,并且 gtk 不起作用。我也在 Mac 上尝试了 curses,但那也不起作用。所以据我所知,两者都在同一个地方中断。如果需要,我可以提供我的 preseed.cfg。
这是我的ubuntu.json
:
{
"builders": [
{
"type": "qemu",
"boot_command": [
"<enter><wait2><esc><wait2><enter>",
"<wait>",
"/install/vmlinuz",
" initrd=/install/initrd.gz quiet",
" vga=788",
" auto=true",
" priority=critical",
" reboot=pci",
" url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg",
" --- <enter>"
],
"qemuargs": [
["-display", "gtk"],
["-serial", "stdio"]
],
"boot_wait": "5s",
"disk_size": 20000,
"headless": false,
"http_directory": "http",
"iso_url": "http://cdimage.ubuntu.com/releases/19.04/release/ubuntu-19.04-server-amd64.iso",
"iso_checksum_type": "sha256",
"iso_checksum_url": "http://cdimage.ubuntu.com/releases/19.04/release/SHA256SUMS",
"communicator": "ssh",
"ssh_username": "ubuntu",
"ssh_password": "ubuntu",
"ssh_port": 22,
"ssh_wait_timeout": "120m",
"shutdown_command": "echo 'ubuntu' | sudo shutdown -P now",
"vm_name": "ubuntu-19.04-amd64.qcow2"
}
]
}
答案1
看起来我受到竞争条件的影响。在 Qemu 4 上构建解决了这个问题,一旦我修复了 macOS 上的配置文件,我就可以进行构建了。