月別アーカイブ: 2021年2月

bhyve を試す。 #3 Windows10 インストール編

#1 下準備編#2 Ubuntu 20.04 インストール編の続き。#2 に書いた内容は説明を省きます。

VM作成とインストーラー起動

isoイメージは vm_dir/.iso/Windows10.iso に配置済みとする。VM名はwindows10、テンプレートwindows。ディスク容量は64GB。

# vm create -t windows -s 64G windows10
# vm install windows10 Windows10.iso

Ubuntuと違いデフォルトでvncの設定がされているので vm list コマンドで確認してVNCで接続してWindowsのインストール作業を行う。

VMに与えるCPU数を変更する

ホスト側の仮想CPUのトポロジに関する設定変更と再起動が必要。Core i3(2コア+HT)なのでパッケージあたりのコア数が2、コアあたりのスレッド数も2に設定。

# vi /boot/loader.conf
--- (追加する)
hw.vmm.topology.cores_per_package=2
hw.vmm.topology.threads_per_core=2
---
# reboot

VMの方の設定変更。cpu = cpu_sockets * cpu_cores * cpu_threads になるようにする。

# vm configure windows10
--- (追加・変更する)
cpu=4
cpu_sockets=1
cpu_cores=2
cpu_threads=2
---

以上でVMを起動すると仮想プロセッサが4つある状態で起動する。

仮想NICをvirtioドライバに変更する

標準のe1000のままだとなぜかWindows Update中にフリーズしたため対応。
virtioのドライバーは別途下記からダウンロードして、vm_dir/.iso に展開しておく。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/

# vm configure windows10
--- (追加する)
disk1_type="ahci-cd"
disk1_dev="custom"
disk1_name="/vm/.iso/virtio-win-0.1.190.iso"
---
# vm start windows10

上記にてvirtioのドライバーディスクをマウントされた状態でVMを起動し、virtioドライバーのインストールを行ったあとシャットダウンしてドライバーを変更する。

# vm configure windows10
--- (変更・削除する)
network0_type="virtio-net"
#disk1_type="ahci-cd"
#disk1_dev="custom"
#disk1_name="/vm/.iso/virtio-win-0.1.190.iso"
---

以上で仮想NICがe1000からvirtioに変わる。(VM上のデバイスが変わるので、VMのIPアドレス等は再設定の必要がある)

bhyve を試す。 #2 Ubuntu 20.04 インストール編

#1 下準備編の続き。

インストーラーの準備

vm_dir/.iso にisoイメージを配置するだけで良いが、vm iso コマンドでダウンロードさせてもよい。

# vm iso http://ftp.jaist.ac.jp/pub/Linux/ubuntu-releases/20.04/ubuntu-20.04.1-live-server-amd64.iso

VM作成 / 設定変更

テンプレートubuntu を使い、ディスクサイズ30G、ubuntu という名前のVMを作成する。
※-t で指定できるテンプレートは、vm_dir/.templates 以下の*.confファイル

# vm create -t ubuntu -s 30G ubuntu

デフォルトだとVNC接続に対応していないのと、メモリが512MBだったので変更。

# vm configure ubuntu
---
loader="uefi"
cpu=1
memory=1G
network0_type="virtio-net"
network0_switch="public"
disk0_type="virtio-blk"
disk0_name="disk0.img"
uuid="XXXXXXXX-XXXXXXXXX-XXXX-XXXXXXXXXXXX"
network0_mac="58:9c:fc:XX:XX:XX"
graphics="yes"
graphics_res="1280x720"
xhci_mouse="yes"
---

赤字:変更箇所青字:追加箇所

VMとUbuntu 20.04のインストーラーを起動

vm install コマンドで起動する。通常のVM起動(vm start)と違い、指定したisoイメージをマウントした状態になるのと、VNC接続までは起動を待機する点が違うそう。

# vm install ubuntu ubuntu-20.04.1-live-server-amd64.iso
# vm list
NAME    DATASTORE  LOADER  CPU  MEMORY  VNC           AUTOSTART  STATE
ubuntu  default    uefi    1    1G      0.0.0.0:5900  No         Locked (bhyve.local)

server:5900 でVNCが起動しているので適当なビューアーで接続する。インストーラーに従ってインストールが終了した後の起動は

# vm start ubuntu

で起動可能。(自動起動の方法は後述)

余談

VMを自動起動する

vm_listに起動したいVM名(今回の例だと “ubuntu”)、vm_delayに自動起動する間隔(man vmによると短すぎると問題があるらしい)を指定する。

# vi /etc/rc.conf
---
vm_list="ubuntu"
vm_delay="5"
---

FreeBSD jailとの共存

FreeBSDの仮想化といえば古くからjailがあり、KVMやbhyveほどヘビーじゃないので手元の環境でも使っているので、共存ができるのか確認したところ、とくに問題なく共存できた。(まあそりゃそうか)
この環境だと物理NICのem0にIPアドレスのエイリアスを設定してそのIPアドレスをもつjailを作成し、別ホストからjail内にssh接続ができた。

bhyveのVNCが重たい?

macOSには標準でVNCビューアーが入ってる(標準の画面共有がVNC)けどそちらで接続ができなかったので、TigerVNC Viewer 1.10.0でVMのインストーラーを操作したところ手元の環境だけかもしれないが、反応が非常に遅かった。インストールさえ終わればsshなどで利用できるので些細なことではあるけどちょっと気になったので記録する。(macOSの画面共有で接続できないのは仕方ないとして他のVNCビューアーを使えばマシになるのかそのうち試す)

bhyve を試す。 #1 下準備編

FreeBSD における Linux KVM に相当する仮想化ハイパーバイザー bhyve を試してみる。

環境

ホスト
Core i3 2.4GHz、メモリ4GB、SSD 320GB なノートPC
バージョン
FreeBSD 12.2-RELEASE-p3 / bhyve 1.4.2

必要パッケージのインストール

# pkg install vm-bhyve grub2-bhyve bhyve-firmware

仮想マシン置き場を用意する

既存のzfs領域(FreeBSDのインストーラーで作った zroot)に新たに “vm” という領域を作成し、/vm にマウントした。

# zfs create zroot/vm
# zfs set mountpoint=/vm zroot/vm

自動起動設定

# vi /etc/rc.conf
--- (追加)
# bhyve
vm_enable="YES"
vm_dir="zfs:zroot/vm"
---

bhyve 初期設定

vm_dir(/vm) 以下に必要なディレクトリ等を展開する。

# vm init

続いて、仮想マシン作成時のテンプレートをテンプレートディレクトリ(vm_dir/.templates)にコピーしておく。

# cp /usr/local/share/examples/vm-bhyve/* /vm/.templates/

仮想ネットワーク(スイッチ)作成

public という名前でスイッチを作成、物理I/Fのem0をpublicに追加する。
※テンプレートのデフォルトでNICの接続先がpublicになっている

# vm switch create public
# vm switch add public em0

以上で下準備が完了。#2 Ubuntu 20.04 インストール編に続く。