添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • Ubuntu 20.04.1 LTS (Focal Fossa)
  • Linux 4.19.128-microsoft-standard
  • カーネルパラメータ initrd=\initrd.img panic=-1 nr_cpus=4 swiotlb=force pty.legacy_count=0
  • QEMU emulator version 4.2.1 (Debian 1:4.2-3ubuntu6.7)
  • Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz
  • WSL2(Windows Subsystem for Linux 2)全体の設定 C:\Users\ユーザ名\.wslconfig に以下の設定を追加することで、 仮想化支援のネストを許可する。

    [wsl2]
    nestedVirtualization=true
    

    参考にしたブログ記事 2 では、WSL2上のゲストカーネルを再ビルドするような手順が紹介されているが、今回は必要なかった。 単純に nestedVirtualization=true とするだけで対応できた。

    動作確認 Part.1

    QEMU/KVM上でcirrosイメージを動かしてみる。

    # non-root ユーザからも KVM の利用を許可
    $ sudo chmod a+rw /dev/kvm
    $ kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
    # cloud-init を無効化した cirros イメージを取得
    $ wget https://github.com/eprasad/virt-cirros/raw/master/virt-cirros-0.3.4-x86_64-disk.img
    $ qemu-system-x86_64 -enable-kvm -hda ./virt-cirros-0.3.4-x86_64-disk.img -nographic -serial mon:stdio
    $ lsof -p $(pgrep qemu) | grep kvm
    qemu-syst 22812 bobuhiro11  mem       REG   0,12           13766 anon_inode:kvm-vcpu:0 (stat: No such file or directory)
    qemu-syst 22812 bobuhiro11    9u      CHR 10,232      0t0  13769 /dev/kvm
    qemu-syst 22812 bobuhiro11   11u  a_inode   0,12        0  13766 kvm-vm
    qemu-syst 22812 bobuhiro11   12u  a_inode   0,12        0  13766 kvm-vcpu:0
    

    動作確認 Part.2

    QEMU以外でも動作確認してみる。 例として最近気になっているrust-vmmのリファレンス実装 3 も動かしてみる。

    $ git clone https://github.com/rust-vmm/vmm-reference.git
    $ cd vmm-reference
    $ cargo build
    $ ./resources/kernel/make_busybox.sh
    $ pytest tests/test_run_reference_vmm.py
    ============================================================================================================ test session starts ============================================================================================================
    platform linux -- Python 3.8.5, pytest-6.1.2, py-1.9.0, pluggy-0.13.1
    rootdir: /home/bobuhiro11/vmm-reference
    collected 1 item
    tests/test_run_reference_vmm.py .                                                                                                                                                                                                     [100%]
    ============================================================================================================= 1 passed in 2.30s =============================================================================================================
    $ ./target/debug/vmm-reference --kernel path=./resources/kernel/vmlinux-hello-busybox,cmdline="console=ttyS0 pci=off",himem_start=1024 --memory mem_size_mib=1024 --vcpus num_vcpus=1
    $ lsof -p $(pgrep vmm-reference) | grep kvm
    vmm-refer 23670 bobuhiro11  mem       REG   0,12           13766 anon_inode:kvm-vcpu:0 (stat: No such file or directory)
    vmm-refer 23670 bobuhiro11    3u      CHR 10,232      0t0  13769 /dev/kvm
    vmm-refer 23670 bobuhiro11    4u  a_inode   0,12        0  13766 kvm-vm
    vmm-refer 23670 bobuhiro11    6u  a_inode   0,12        0  13766 kvm-vcpu:0
    

    話は脱線するが、もしmake_busybox.shを実行したときにリンクまわりでコケる場合にはbusyboxの一部のツールに対して、ビルドをスキップするとよい。

    $ git diff
    diff --git resources/kernel/busybox_static_config resources/kernel/busybox_static_config
    index eceb67f..6b14ed5 100644
    --- resources/kernel/busybox_static_config
    +++ resources/kernel/busybox_static_config
    @@ -196,10 +196,10 @@ CONFIG_COMM=y
     CONFIG_CP=y
     CONFIG_FEATURE_CP_LONG_OPTIONS=y
     CONFIG_CUT=y
    -CONFIG_DATE=y
    -CONFIG_FEATURE_DATE_ISOFMT=y
    +CONFIG_DATE=n
    +CONFIG_FEATURE_DATE_ISOFMT=n
     # CONFIG_FEATURE_DATE_NANO is not set
    -CONFIG_FEATURE_DATE_COMPAT=y
    +CONFIG_FEATURE_DATE_COMPAT=n
     CONFIG_DD=y
     CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
     CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
    @@ -630,7 +630,7 @@ CONFIG_FEATURE_MOUNT_OTHERTAB=y
     CONFIG_NSENTER=y
     CONFIG_FEATURE_NSENTER_LONG_OPTS=y
     CONFIG_PIVOT_ROOT=y
    -CONFIG_RDATE=y
    +CONFIG_RDATE=n
     CONFIG_RDEV=y
     CONFIG_READPROFILE=y
     CONFIG_REV=y
    @@ -873,7 +873,7 @@ CONFIG_NC_EXTRA=y
     CONFIG_NETSTAT=y
     CONFIG_FEATURE_NETSTAT_WIDE=y
     CONFIG_FEATURE_NETSTAT_PRG=y
    -CONFIG_NSLOOKUP=y
    +CONFIG_NSLOOKUP=n
     CONFIG_NTPD=y
     CONFIG_FEATURE_NTPD_SERVER=y
     CONFIG_FEATURE_NTPD_CONF=y