web-dev-qa-db-ja.com

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

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

qEMUだけでまったく可能ですか?またはサードパーティのツール(仮想ディスクイメージエミュレーターなど)

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

4
e.jahandar

Rootfsが大きすぎない場合は、initdを使用できます。 qemuに-initrdオプションを使用して、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

いいことに、これにはrootやSudoは必要ありません。

1
lgekman

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

それをGRUBのカーネルオプションでルートファイルシステムとしてマウントするより

  1. 仮想マシンでブートメニューをアクティブ化
  2. カーネルを含むファイルシステムが存在する外部ドライブを接続します。
  3. ファイルシステムにカーネルとグラブがある場合は、それで問題ありません。または、仮想マシンにLinuxライブ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にパーティションがない場合)

0
Abhik Bose