既存のインストールでQEMUブータブルカーネルを作成する

既存のインストールでQEMUブータブルカーネルを作成する

コンソール出力のみを提供するようにQEMUを設定しようとしました。これまで、私は次のパラメータをうまく使用しました:qemu-system -curses -hda debian.imgここでdebian.imgは有効なDebianインストールです。他の起動関連パラメータは使用されません。しかし、(N)Cursesは少なくともmacOSホストではバグが多く遅いようです。

-serial stdio -append "console=ttyAMA0"代わりに、qemuが起動する端末の非GUI出力をコンソールに取得するより良い方法があることを発見しました-curses-kernelただし、このオプションを使用するには、引数を使用してカーネルを指定する必要があります。既存のDebianインストールから起動可能なカーネルを抽出してqemuに提供する方法はありますか?私はvmlinuxをコピーしようとしましたが、/bootまた従いました。このガイドカーネルはオペレーティングシステムから抽出されますが、既存のdebian.imgファイルを使用してQEMUから起動することはできません。私のOSでqemuとしてinitrd.imgを提供する必要があるかもしれないと思います。

-kernelこのパラメータを使用して、そのイメージ(または必要に応じて他の場所)から(抽出された)カーネルをqemuに渡しながら、完全に動作するオペレーティングシステムで既存のdebian.imgファイルを引き続き使用できますか? (initrd.imgファイルでも同じ問題)debian.imgファイルのゲストOSはDebian Jessyです。

答え1

直接カーネルブート(QEMUオプション経由)を使用している場合は、ほぼ確実に-kernelこの機能も提供したいと思います。実行中のエミュレートされたシステムのディレクトリからコピーできます-initrd。あるいは、イメージファイルのパーティションを使用してマウント可能にすることもできます(エミュレートされたシステムを再起動する前に必ずアンマウントする必要があります)。一般に、あなたも同様であるか、類似する必要があります。/bootlosetupkpartx-append "root=/dev/sda2 console=ttyAMA0"

別のアプローチは、必要なカーネルパラメータをイメージのブートローダ設定に追加することです。柔軟性は低下しますが、実際には必要ありません。パラメータを実際の起動メニューに含めるには、-append実行する必要があります。起動したシステムで実行して、実際に適用されていることを確認してください。update-grubconsolecat /proc/cmdline

どちらの場合も必要ですが、-serial stdioもはや必要ない場合は、グラフィックウィンドウを交換してください。-nographic

関連情報