search
LoginSignup
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

BitVisor Advent Calendar 2020 Day 7

posted at

BitVisorのSQLite機能を試してみる(storage_io編)

以下の記事でBitVisorに組み込まれたSQLiteを有効にしてビルドして動かす方法が紹介されていました:
https://qiita.com/mmi/items/613bef0fdc6f41d3cb6b

ここではmemoryではなくてstorage_ioのほうを使ってみることにします。QEMUとLinux KVMを使って試します。

defconfig

ここではconfig.vmm.driver.pciを以下のように設定しておきます:

.pci = "driver=ata",

ビルド

これでbitvisor.elfの他、loadvmm.efiとdbgsh*.efiをビルドしておきます。

$ make
$ make -C boot/uefi-loader
$ make -C tools/dbgsh-uefi

準備

適当なディレクトリ(ここでは/tmp)にいくつかファイルを準備しておきます:

$ mkdir /tmp/hoge
$ cp bitvisor.elf boot/uefi-loader/loadvmm.efi tools/dbgsh-uefi/*.efi /tmp/hoge
$ dd if=/dev/zero of=/tmp/db count=8192

実行

$ qemu-system-x86_64 -enable-kvm -cpu host -m 1024 -bios OVMF.fd -net none -drive file=fat:/tmp/hoge,snapshot=on -drive file=/tmp/db,format=raw

これで、ATAのprimary masterに/tmp/hogeをFATパーティション化したものが見え、primary slaveにraw imageの/tmp/dbが見える形になります。

EFI Shellが起動したらまずloadvmmを実行します:

20201208-2.png

次にdbgsh-a(for AMD)またはdbgsh-i(for Intel)を実行し、sqliteexampleを実行してデータベースに何か書き込んでみます:

20201208-1.png

Device numberはprimary masterが0, primary slaveが1となりますので、1を指定しています。また、8192セクターのディスク全体を使用することにしたので、Start LBAを0, End LBAを8191としています。Storage sizeは正しく検出されていませんが、気にせず進めます。

そして簡単なSQLにより1から100までの数字が入った簡単なテーブルを作成します。

次に、一度QEMUを終了し、もう一度起動して、中身が残っているかを確認してみます:

20201208-3.png

大丈夫そうです。QEMUを終了して、disk imageを直接見てみると、以下のようにSQLiteのデータベースらしきものが入っていることがわかります:

20201208-4.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0
Help us understand the problem. What are the problem?