4. QEMU での動作確認
x86_64 での QEMU 起動
loadvmm.efi と bitvisor.elf を ~/x86_test/ などのディレクトリに置き、
以下のコマンドで QEMU を起動します。
qemu-system-x86_64 \
-cpu host -enable-kvm \
-bios /path/to/OVMF.fd \
-drive file=fat:rw:~/x86_test/,format=raw \
-cdrom /path/to/bootable.iso \
-nic user,model=e1000e \
-M q35 -m 4096
-bios /path/to/OVMF.fd— UEFI ファームウェア(OVMF)を指定-nic user,model=e1000e— e1000e は Intel NIC のエミュレーションなのでNET_PRO1000を有効化-boot menu=onを追加すると起動時に ESC キーを入力しやすくなる
起動後、ESC キーを繰り返し押してセットアップメニューに入り、EFI Shell を起動します。
Shell で fs0: などに切り替え、BitVisor を起動してください。
KVM 使用時の注意事項
最近の Intel CPU では、KVM の APICv が有効なまま BitVisor を起動すると タイマーチェックパニックや SMP ブリングアップのストールが発生することがあります。
現在の値を確認:
cat /sys/module/kvm_intel/parameters/enable_apicv
一時的に無効化:
sudo modprobe -r kvm-intel && sudo modprobe kvm-intel enable_apicv=N
永続化するには modprobe の設定ファイル(/etc/modprobe.d/kvm_intel.conf など)で
options kvm-intel enable_apicv=N と記述してください。
SMP に関する注意
Linux ゲストの SMP ブリングアップは INIT と SIPI のタイミング問題から不安定になることがあります。
defconfig で .localapic_intercept = 1 を設定することで、BitVisor が INIT-SIPI エミュレーションや
APIC アクセスエミュレーションを行うようになり、QEMU + KVM 上での動作が安定します。
AArch64 での QEMU 起動
AArch64 向けにビルドした bitvisor.elf と loadvmm.efi を同一フォルダに置き、
以下のコマンドを実行します。
qemu-system-aarch64 \
-m 8G \
-M virt,gic-version=3,virtualization=true \
-cpu neoverse-n1 \
-bios /path/to/aarch64/qemu_efi.fd \
-drive file=fat:rw:/path/to/bitvisor_dir/,format=raw \
-cdrom /path/to/aarch64/linux.iso \
-nic user,model=e1000e \
-serial vc:1024x768 \
-smp 4
-cpu neoverse-n1または-cpu a64fxが動作確認済みです-cpu maxは現時点では未対応の機能が含まれるため使用しないでください- devicetree でデバイス検出を行う場合は
-M virt,...,acpi=offを追加し、 Kconfig でCONFIG_DEVICETREE=yを有効化してください
起動後は x86_64 と同様に、ESC キーで設定メニューに入り EFI Shell から BitVisor を起動します。
AArch64 BitVisor は現時点では実験的な実装です。 virtio_net 経由のネットワーク接続を持つ Linux カーネルの起動が確認されています。