![Packer と Qemu - SIGKILL 中に Qemu がハングアップ - 再起動が要求される](https://rvso.com/image/1592529/Packer%20%E3%81%A8%20Qemu%20-%20SIGKILL%20%E4%B8%AD%E3%81%AB%20Qemu%20%E3%81%8C%E3%83%8F%E3%83%B3%E3%82%B0%E3%82%A2%E3%83%83%E3%83%97%20-%20%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%8C%E8%A6%81%E6%B1%82%E3%81%95%E3%82%8C%E3%82%8B.png)
私は、packer を使用して Ubuntu 19.04 サーバー イメージを構築しようとしています。起動してインストールを実行すると、一見問題なく、1 時間ほど経つと、Qemu はインストールが完了したことを示し、 と がSIGINT
送信SIGKILL
され、再起動が要求されますが、Qemu は OS を再起動して packer が SSH で接続して作業を完了できないため、最終的に packer はタイムアウトします。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 で設定ファイルを修正したらビルドできるようになりました。