KVMの上でBitVisorを動かしたい
動かしたい。
ということで最終的に動くところまで到達していないのですが、起動してpanicで落ちるところまで試したのでメモ。前回の記事でNested SVM環境を構築したところからスタートしています。
依存ライブラリのインストール
sudo apt-get install libssl-dev libusb-dev
コンパイル
今回はとりあえず動作確認がしたいのでシンプルなパスワード認証を行うような環境を構築します。
wget http://downloads.sourceforge.net/bitvisor/bitvisor-1.1.1.tar.gztar vzxf bitvisor-1.1.1.tar.gzcd bitvisor-1.1.1make config
make configの設定でTTY_SERIALを有効にし、qemu-system-x86_64の起動オプションに-serial stdioを追加すると、BitVisorのメッセージをホストOSの標準入出力で見ることができるようになり便利です。
makesudo cp bitvisor.elf /bootcd boot/login-simplecp bitvisor.conf.tmpl bitvisor.confvi Makefilemakesudo cp module*.bin /boot
64bit環境でそのままmakeするとasm.sのところでコンパイルエラーになっていたのでMakefileを書き換え。とりあえずエラーを潰しただけなのでこれでいいのか分かりません。
module1.bin : asm.s main.c $(INC)gcc -m32 -Wall -s -Wl,-Ttext,0x8000 -nostdlib -nostdinc -idirafter ../../include -o module1.bin asm.s main.c
GRUBの設定
ここではGRUB2向けの設定を示します。set rootのところは構成によって変わると思うので、マシンの構成や/etc/grub.d以下の他のファイルを参考にして書き換えてください。
sudo vi /etc/grub.d/11_bitvisorsudo update-grub
#!/bin/sh
echo "Found BitVisor-1.1.1" >&2
cat <<EOFmenuentry "BitVisor-1.1.1" { insmod part_msdos insmod ext2 set root='(hd0,msdos1)' multiboot /bitvisor.elf module /module1.bin module /module2.bin}EOF
起動
起動してみると無事BitVisorが立ち上がり、パスワード入力画面が表示されました!
しかし、パスワードを入力するとその直後に以下のようなpanicが発生してしまいます。
Starting BitVisor...Copyright (c) 2007, 2008 University of TsukubaAll rights reserved.1073333248 bytes (1023 MiB) RAM available.VMM will use 0x37C00000-0x3FC00000 (128 MiB).ACPI DMAR not found.OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOODisable ACPI S3Disable \_SB_.PCI0.ISA_.COM2._DISDisable \_SB_.PCI0.ISA_.COM1._DISIniting Virtual Ethernet (VE) for VPN Client Module...Virtual Ethernet (VE): Ok.Processor 0 (BSP)VMX operation is not supported.Processor 0 2900016541 HzStarting a virtual machine.Loading drivers.AES/AES-XTS Encryption Engine initialized (AES=openssl)Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.PCI: finding devices ...... 6 devices foundpanic: unsupported exitcodeHypervisor registers of cpu 0 -----------------RAX 00000030 RCX 000003F8 RDX 00000000 RBX 00000001RSP 40A4FD34 RBP 40A4FDBC RSI 00000000 RDI 40A4FDF8R8 00000000 R9 00000000 R10 00000000 R11 00000000R12 00000000 R13 00000000 R14 00000000 R15 00000000CR0 80000019 CR2 00000000 CR3 38622000 CR4 000000A0RFLAGS 00200006 GDTR 409AA2A0+000000FF IDTR 408C1FA0+00000800backtrace<-0x4012166C<-0x40121E13<-0x4012687F<-0x4011C3FF<-0x401198A1<-0x4011BE0B<-0x4010D2F5<-0x0<-bad.------------------------------------------------Guest state and registers of cpu 0 ------------RAX 00008230 RCX 00000101 RDX 00008503 RBX 00000FFERSP 00000001 RBP 00000000 RSI 00007C05 RDI 00000000R8 00000000 R9 00000000 R10 00000000 R11 00000000R12 00000000 R13 00000000 R14 00000000 R15 00000000CR0 00000010 CR2 00000000 CR3 00000000 CR4 00000000ACR ES 00000093 CS 0000009B SS 00000093 DS 00000093 FS 00000093 GS 00000093LIMIT ES 0000FFFF CS 0000FFFF SS 0000FFFF DS 0000FFFF FS 0000FFFF GS 0000FFFFBASE ES 00000000 CS 00000000 SS 00000000 DS 00000000 FS 00000000 GS 00000000SEL ES 00000000 CS 00000000 SS 00000000 DS 00000000 FS 00000000 GS 00000000RIP 0000823E RFLAGS 00000216 GDTR 00000000+0000FFFF IDTR 00000000+000003FFEFER 00001000VMCB 0x40a66000 (phys 38666000)EXITCODE: 127=0x7F (VMEXIT_SHUTDOWN)EXITINFO1 00000000 EXITINFO2 00000000 EXITINTINFO 80000308------------------------------------------------panic: unsupported exitcodeUnrecoverable error.
vmexitでゲストからホストに制御が戻る時の戻り値が想定しない値(VMEXIT_SHUTDOWN)になっているようですが、詳しいことはわからずここで断念。仮想マシンは難しい。