VirtualBoxでトラブル
VirtualBox を Host: Ubuntu Guest: Windows で使用していたが調子が悪い。
Ubuntu でアップデートするとトラブルが起こる。
建前ではカーネルモジュールを作り直せばいい。しかしながら以下のように起動しなくなったりすることが起こる。
なのでアップデートを行わないようにして運用しているが、そのような運用はいろいろと厳しい。
今回うっかりして自動アップデートがかかってしまって、一見動いているもののネットワークのパフォーマンスが著しく悪くなるのは難儀。
cf., https://www.reddit.com/r/virtualbox/comments/1n8gsdp/slow_bridged_network_access/
virtio-net を使えばいいかも ? しかしながら KVM/QEMU が良さそうなので乗り換えました。
環境
Host: Ubuntu 26.4LTS
Guest: Windows 10 Pro
Ubuntu26.04 LTS では環境が揃っているので設定が楽です。
設定前チェック
$ egrep -c '(vmx|svm)' /proc/cpuinfo
8
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
以下はクリーンインストールした Ubuntu 26.04 だと 筆頭ユーザは libvirt に入っています。
$ sudo adduser `id -un` libvirt
warn: The user `nanbuwks' is already a member of `libvirt'.
そうでなくても libvirt に加盟できればいいのですが、dist-upgrade したもの等で libvirt グループがない場合は qemu が入ってないので
$ sudo apt install qemu-system-x86
して(いらないかも)次のインストールを終えてからここに戻る。
はじめて libvirt グループに加盟したときには再起動。
adduser しますが virsh ではまだ権限がないとエラーが出ます。
$ sudo adduser `id -un` kvm
$ virsh list --all
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
以下のインストールすると virsh が通るようになります。
$ sudo apt install virt-top libguestfs-tools virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils
$ virsh list --all
Id 名前 状態
-------------------
仮想マシンファイルをコンバート
VirtualBox の ディスクファイルをコンバートします。
$ qemu-img convert -f vdi -O qcow2 sourcefilename.vdi distfilename.qcow2
仮想マシンマネジャを起動
仮想マシンを作成
ブリッジ接続に変更する
$ nmcli device
DEVICE TYPE STATE CONNECTION
enx9c69d366aa69 ethernet 接続済み 有線接続 1
eno1 ethernet 接続済み netplan-eno1
lo loopback 接続済み (外部) lo
virbr0 bridge 接続済み (外部) virbr0
$ brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.52540055b180 yes
$ nmcli connection add type bridge ifname br0
接続 'bridge-br0' (ded84910-a271-4aea-8a0c-992d9a38b03f) が正常に追加されました。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 yes
virbr0 8000.52540055b180 yes
$ nmcli connection show bridge-br0 | grep bridge.stp
bridge.stp: はい
$ nmcli connection modify bridge-br0 bridge.stp no
$ nmcli connection show bridge-br0 | grep bridge.stp
bridge.stp: いいえ
$ ip a
.
.
.
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 90:1b:0e:d9:80:c9 brd ff:ff:ff:ff:ff:ff
altname enp0s31f6
altname enx901b0ed980c9
inet 192.168.1.201/24 brd 192.168.1.255 scope global noprefixroute eno1
valid_lft forever preferred_lft forever
$ nmcli connection modify bridge-br0 ipv4.method manual ipv4.addresses "192.168.1.201/24"
$ nmcli connection add type bridge-slave ifname eno1 master bridge-br0
接続 'bridge-slave-eno1' (442037e2-c373-49d7-b56b-4dda6f33e075) が正常に追加されました。
$ nmcli connection show
NAME UUID TYPE DEVICE
有線接続 1 a827cf6e-312b-36c2-b7b3-ddb206577595 ethernet enx9c69d366aa69
netplan-eno1 10838d80-caeb-349e-ba73-08ed16d4d666 ethernet eno1
bridge-br0 ded84910-a271-4aea-8a0c-992d9a38b03f bridge br0
lo ecb1ad8f-46d2-4999-b349-43931db86fce loopback lo
virbr0 65228ed5-dc4a-46fe-a706-fbe1cc6b7914 bridge virbr0
bridge-slave-eno1 442037e2-c373-49d7-b56b-4dda6f33e075 ethernet --
$ nmcli connection delete netplan-eno1





