QEMUの物理(UEFI)ディスクイメージから起動

QEMUの物理(UEFI)ディスクイメージから起動
要約:

Ubuntuを実行している実際のマシンで作成したディスクイメージを使用してQEMUを起動したいです。イメージを作成してQEMUを実行しようとすると、VMは「ハードディスクから起動」状態で中断されます。

詳細説明

標準のUbuntu 20.04.3がインストールされているx86_64デスクトップコンピュータがあります。デフォルトでは、GRUBも1TiB HDDのブートローダとしてインストールされます。ディスクには、GPT、EFIパーティション、およびext4パーティション(〜50GiB)があります。システムが稼働して稼働しており、完全に動作します。ライブUSB経由で実行しながら、ブートディスク全体の生の画像を作成しました。 imageを呼び出してみましょうae.img

リモートコンピュータで以下を実行して画像を作成しました。

ssh root@<IP> "dd if=/dev/sda bs=100M status=progress | xz -T 8 -1" | unxz | cp --sparse=always /proc/self/fd/0 ae.img

ネットワーク経由でデータを圧縮する/を無視すると、xz実際にディスク全体を読み取り、ネットワーク経由で転送してスパースファイルに書き込みます。実行中のライブUSBの場合はHDDです。私はイメージのパーティションテーブルを確認し、実際のext4パーティションをループバックデバイスとしてマウントしてデータを確認しました。unxzddae.imgcp/dev/sdafdisk

挑戦:

QEMUを使用する他の(ほぼ同じ)システムでこのディスクイメージで仮想マシンを実行したいと思います。このイメージをQEMUのドライブとして指定すると、そのイメージから起動しようとした後にGRUBブートローダーを起動するなどの操作が実行されることがあります。同じままにするためにビデオ出力として実行してみました。私が使用するコマンドは次のとおりです。

  -m 4G \
  -machine type=q35,accel=kvm \
  -smp 4 \
  -drive format=raw,file=ae.img \
  -cpu host \
  -display default \
  -vga virtio \
  -show-cursor

画像をドライブとして指定し、vgaディスプレイ、4GB RAM、4コアを提供しました。それだけで十分です。このコマンドを実行すると、以下のQEMUウィンドウが表示されます。ブートが続行され、もはや進行しません。htopレポートによると、QEMUはコアを100%消費しており、1つのバーは50%青(低優先順位プロセス)と50%赤(カーネル)です。

何が起こっているのか、どのように診断しますか?提案された修正はありますか?

QEMUスタートウィンドウ

ベストアンサー1

ちょうど調べました。

一般化する

QEMUはデフォルトでBIOSを使用して起動します。これは、UEFIを使用して起動する実際のシステムとは対照的です。 UEFIとBIOSには異なるディスク構成が必要です。 UEFIシステムのディスクイメージは、BIOSを使用して起動されたQEMUでは機能しません。

修正:追加オプション-bios /usr/share/ovmf/OVMF.fd

OVMFは正しいファームウェアを提供します。

より詳細な答え

から引用オペレーティングシステムの開発「レガシーBIOSは、ブートデバイスのMBRから物理アドレス7C00のメモリに512バイトのフラットバイナリブロブをロードし、その場所にジャンプします。」これには、実際のUEFIディスクにランダムなデータが含まれて停止することがあります。

おすすめ記事