ルートファイルシステムをテストするには、生成されたディスクイメージをルートファイルシステムとして使用してQEMUを実行する必要があります。 QEMUは、ルートファイルシステム内に展開せずにカーネルを直接指定するために使用できる-kernelを許可しますが、ルートなどの機能が必要です。ディスクイメージを作成し、それを-hdaまたは-usbdiskオプションと共に使用する代わりに、抽出されたルートファイルシステムへのパスを指定するには、ファイルシステムを使用します。
QEMUのみを単独で使用できますか? !または、サードパーティ製のツール(仮想ディスクイメージエミュレータなど)を使用してください。
私の目標は、ディスクイメージを作成せずにルートファイルシステムのtarアーカイブをテストすることです。
答え1
rootfsが大きすぎない場合は、initdを使用できます。-initrd
qemuオプションを使用し、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のカーネルオプションを使用してルートファイルシステムにマウントします。
- 仮想マシンで起動メニューを有効にする
- カーネルを含むファイルシステムを含む外部ドライブを接続します。
- ファイルシステムにカーネルとグラブがある場合、問題はありません。また、すべての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にパーティションがない場合)