web-dev-qa-db-ja.com

既存のインストールからQEMUブータブルカーネルを生成する

コンソール出力のみを提供するようにQEMUをセットアップしようとしています。これまでのところ、次のパラメータで成功しています:qemu-system -curses -hda debian.img、ここでdebian.imgは動作中のDebianインストールです。他のブート関連パラメーターは使用されません。 (N)Cursesは、この目的ではひどくバグがあり、遅いようですが、少なくともmacOSホストでは。

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

さて、-kernelパラメーターを使用してそのイメージ(または必要に応じて他の場所)から(抽出された)カーネルをqemuに渡しながら、完全に機能するOSで既存のdebian.imgファイルを使い続けることは可能ですか? (そしてinitrd.imgファイルについても同じ質問です)debian.imgファイルのゲストOSはDebianJessyです。

3
rien333

-kernel QEMUオプションを介して)直接カーネルブートを使用する場合は、ほぼ確実に-initrdも提供する必要があります。それらは、実行中のエミュレートされたシステムの/bootディレクトリからコピーできます。または、losetupkpartxを使用して、イメージファイルのパーティションをマウント可能にします(必ずアンマウントしてください)。エミュレートされたシステムを再度起動する前に)。通常、-append "root=/dev/sda2 console=ttyAMA0"なども行う必要があります。

別の方法は、必要なカーネルパラメーターをイメージのブートローダー構成に追加することです。柔軟性は劣りますが、実際には-appendのすべての柔軟性が必要なわけではありません。 consoleパラメータを実際のブートメニューに埋め込むには、update-grubなどを実行する必要がある場合があります。起動したシステムでcat /proc/cmdlineを実行して、実際に有効かどうかを確認します。

どちらの場合も-serial stdioが必要ですが、グラフィカルウィンドウが不要になったら、-nographicに置き換えてください。

1
Ferenc Wágner