ディスクイメージの代わりにルートファイルシステムディレクトリを使用してQEMUを実行する

ディスクイメージの代わりにルートファイルシステムディレクトリを使用してQEMUを実行する

ルートファイルシステムをテストするには、生成されたディスクイメージをルートファイルシステムとして使用してQEMUを実行する必要があります。 QEMUは、ルートファイルシステム内に展開せずにカーネルを直接指定するために使用できる-kernelを許可しますが、ルートなどの機能が必要です。ディスクイメージを作成し、それを-hdaまたは-usbdiskオプションと共に使用する代わりに、抽出されたルートファイルシステムへのパスを指定するには、ファイルシステムを使用します。

QEMUのみを単独で使用できますか? !または、サードパーティ製のツール(仮想ディスクイメージエミュレータなど)を使用してください。

私の目標は、ディスクイメージを作成せずにルートファイルシステムのtarアーカイブをテストすることです。

答え1

rootfsが大きすぎない場合は、initdを使用できます。-initrdqemuオプションを使用し、rootfsで(圧縮された)cpioファイルを提供します。したがって、tarファイルがある場合は、解凍してcpioを作成する必要があります。 cpio形式を使用する必要があります-H newc。はい。

mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio

1つの良いことは、これを行うためにルートやsudoが必要ないことです。

答え2

ファイルシステムをUSBドライブに書き込み、それをQEMU仮想マシンに接続できます。

次に、GRUBのカーネルオプションを使用してルートファイルシステムにマウントします。

  1. 仮想マシンで起動メニューを有効にする
  2. カーネルを含むファイルシステムを含む外部ドライブを接続します。
  3. ファイルシステムにカーネルとグラブがある場合、問題はありません。また、すべてのLinux Live CDを仮想マシンに接続できます。 GRUBコマンドラインを編集し、カーネルとルートファイルシステムを使用します。

ペンドライブが/dev/sdB(ハードドライブイメージも接続されていること、つまり/dev/sdAとにかく見つけることができることを考慮して)、grubコマンドは次のようになります。

kernel (hd1,gpt0)/location_of-kernel root=/dev/sdB
initramfs mention_if_you_have
boot

gpt0正しいパーティションと/dev/sdB正しい文字で置き換えてください/dev/sdb1。または/dev/sdb(USBにパーティションがない場合)

関連情報