1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BitVisorAdvent Calendar 2020

Day 7

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

Posted at

以下の記事で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

1
0
0

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
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?