質問: カーネルパニックで失敗してqemuを終了させることはできますか? qemuを継続的インテグレーションパイプラインに追加して、さまざまなinitrdアーティファクトをテストしようとしています。このようにqemuを実行できることはすでに発見しました。qemu-system-x86_64 \ -machine q35 \ -drive if=pflash,format=raw,file=ovmf_code.fd,readonly \ -drive if=pflash,format=raw,file=ovmf_vars.fd \ -kernel vmlinuz-4.4.0-121-generic \ -initrd my-initramfs.cpio.xz \ -nographic ...initスクリプトでこれを行うと、qemu-system-x86_64がステータス0で終了します。# poweroff -f これは、initスクリプトが終了しないため機能します-poweroff -fを呼び出し、「永久に」スリープするか、qemuが「パワーダウン」するまでスリープします。acpi: preparing to enter system sleep state s5 reboot: power down set -eu経由でエラー時にinitを強制することで、exitスクリプトの問題を検出できるようにしたいと思います。 initスクリプトを(正しく)終了すると、カーネルパニックが発生しますが、qemu-system-x86_64プロセスが永久にハングします。いつまでもハングアップしないようにするにはどうすればよいですか? qemuホストでqemuゲストのカーネルパニックを検出するにはどうすればよいですか?さらなる解明:私のアプリケーションの性質はセキュリティに敏感です。つまり、linuxカーネルの構成/コンパイルは「許可」されていますが、カーネルパラメータの受け渡しは許可されていません。細かい点を述べるために、 cmdline_override が有効になっています。
回答: 私は働いているものを持っています: config_pvpanic=yを使用してカーネルを構成(およびビルド)します。これにより、pvpanicデバイスのサポートがコンパイルされたカーネルが生成されます。 qemu-system-x86_64を-device pvpanicオプションで呼び出します。これは、カーネルパニックをキャッチ(および終了)するようにqemuに指示します。 カーネルパニックによりqemu-system-x86_64は正常に終了します(ステータス0を返します)が、少なくともハングしていません。私を正しい方向に向けてくれた@ dsstorefile1に感謝します。参照: https://cateee.net/lkddb/web-lkddb/pvpanic.html https://github.com/qemu/qemu/blob/master/docs/specs/pvpanic.txt