2016-10-28 3 views
0

私はLinux上のブロックデバイス(/ dev/sdaなど)のパーティションを編集するプログラムを書いています。私は非常にうまく動作するプログラムを持っています。私はコードをモック(previous question of mineで作業しています)を使ってテストしました。実際のデバイスで自分のコードをテストしたいと思います。偽の現実を作る:仮想ブロックデバイスを使ったテスト

コードはパーティションテーブルをあるドライブから別のドライブにコピーします。必要に応じてパーティションテーブルを縮小する可能性があります。その後、あるドライブから別のドライブにファイルをコピーします。だから私はさまざまなサイズのドライブを使ってドライブをテストしたい。最後に、新しいドライブを起動可能にし、本質的にデバイスをクローンします。残念ながら、妥当な時間内にこのプログラムをテストするのに正しいサイズの物理ドライブはありません。私はプログラムを書くためにPythonを使用しています。

ファイルとさまざまなツールを使って.img(.ddを使って作成)を使ってテストしましたが、明らかにVirtualBoxはVMでこれらを実行できないため、実際に起動するかどうかはテストできません。また、qemu-nbdを使って.vdiファイルをマウントしようとしましたが、sgdiskなどのツールでそれらのパーティションを編集できます。私はさらに.imgファイルをマウントし、その方法でマウントしようとするとconvertfromrawコマンドを使用しようとしました。しかし、grubは正常に起動せず、ハードドライブ上のファイルシステムを読み取ることができませんでした。 (ls (hd0)No such filesystem...に返されました)

私は自分のLinuxシステムで編集してから仮想ボックスから起動できる(実質的に)任意のサイズの仮想ディスクを作るのに何が使えますか?

私はユニットテストをしていないことに注意してください。これらは自動テストを意図したものではありませんので、コンピュータが簡単に行うことができるものである必要はありません。

答えて

0

最後に.imgファイルを使用すると効果的でした。あなたのimgファイルを作成するには、ddを使用してください。

dd if=/dev/zero of=my-test.img bs=1M count=500 #Creates a 500 MB image file 

マウントファイルlosetupを

sudo losetup /dev/loop0 my-test.img #Mounts on loop device loop0 
sudo partprobe /dev/loop0 #creates block files for any partitions on the image 

を使用して、あなたが希望のコマンドを何でも適用されます。 sgdiskでパーティションを編集したり、パーティションをマウントしてデータを編集したりすることもできます。テストドライブを起動可能にするには、適切なブートローダコマンド(grub-installなど)を適用してください。次に、VirtualBoxで使用できるようにするには、次のコマンドを使用します。

VBoxManage convertdd my-test.img my-test.vdi 

これは、ファイルをVirtualBoxで使用可能なものに変換します。ファイルがddによって作成されていない場合は、他のVBoxManageコマンドを使用して、raw形式に変換する必要があります。

最後に、.vdiファイルを使用してVirtualBoxで仮想マシンを作成し、心臓の内容をテストします。

関連する問題