我正在尝试使用加壳器构建 Ubuntu 19.04 服务器映像。我让它启动并运行安装看起来很好,一个小时并更改后,Qemu 显示安装已完成,SIGINT
有时会SIGKILL
发送,并请求重新启动,但最终打包程序超时,因为 Qemu 从不重新启动操作系统让packer 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(易于安装)
macOS 10.14.5 构建环境:
封隔器:1.4.0
Qemu:4.0.0(酿造安装)
在这两种环境中,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"
}
]
}
看起来我被竞争条件咬了。在 Qemu 4 上构建修复了它,一旦我在 macOS 上修复了我的配置文件,我就能够得到一个构建。