Minisforum NAB6にUbuntu Server 22.04 LTSを導入してKVM/QEMUで仮想マシンホストにした

新事務所で常時稼働させるサーバとして、Minisforum NAB6を買いました。

Minisforum NAB6

CPUは、Intel Core i7-12650H。ベアボーンで購入したので、そこに32GB×2で64GBのメモリと、2TBのm.2 SSDを入れて、なかなかの高性能マシンにしました。
最初はWindows 11 Proを入れて、Hyper-Vで仮想マシンホストにすれば良いかと思っていたのですが、11 Proはサーバ用OSではないので、考えを改めてUbuntu Serverにして、Windowsは仮想マシンのゲストにすることにしました。

Ubutnu Server 22.04 LTSは、公式サイトからISOファイルをダウンロードして、balenaEtcherでUSBメモリに焼いて普通に導入するのみ。設定を変えたのは、IPアドレスをDHCPではなく固定にしたくらいです。

CockpitとKVM/QEMU

CockpitとKVMについては、こちらの記事のとおりで問題ありませんでした。

LVの拡張

私の環境でも必要でした。

sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubutnu--lv

KVM/QEMUのインストール

sudo apt install qemu-kvm virt-manager libvirt-daemon-system virtinst libvirt-clients bridge-utils
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER

Cockpit

CockpitはUbuntuの設定をWeb GUIでできるツールですが、プラグインを入れると仮想マシンの画面をブラウザ上で操作できたりするので便利です。

Cockpitのインストール

sudo apt install cockpit
sudo systemctl enable cockpit
sudo systemctl start cockpit

Cockpitには、http://(IPアドレス):9090でアクセスできます。ログインに使うのはUbuntuのユーザー名とパスワードです。

NetworkManager

Cockpitでは、Ubuntu標準のnetplanではなく、NetworkManagerでネットワーク管理をするので、切り替えます。

/etc/netplan/00-installer-config.yamlを下記のようにします。(rendererの追加と、ethernets配下のコメントアウト)

# This is the network config written by 'subiquity'
network:
  renderer: NetworkManager
  #ethernets:
  #  enp2s0:
  #    addresses:
  #    - 172.16.1.1/16
  #    nameservers:
  #      addresses:
  #      - 172.16.0.1
  #      search: []
  #    routes:
  #    - to: default
  #      via: 172.16.0.1
  #  enp3s0:
  #    dhcp4: true
  version: 2

この設定を有効にします。

sudo netplan generate
sudo systemctl restart NetworkManager

ブリッジの追加

ゲストOS側をネットワークに接続するためブリッジを作成します。
Cockpitのネットワーキングの画面から、ブリッジを作成できます。

この画面はブリッジを作成後のものですが、「ブリッジの追加」をクリックして、表示される画面から接続先のポートを指定するだけです。NAB6の有線LANのポートを指定しました。(NAB6には有線LANポートが2つあるので、ちゃんとルーターにつながっている側にしましょう。LANケーブルの抜き挿しをするときも、同じポートに挿すようにしないと仮想マシンにネットワーク経由でつながらなくなります。)

仮想マシンのゲストOSとしてWindows 11を導入

最後にWindows 11 Proをインストールします。(もちろん、他にCentOSやらUbuntuも入れますが、それはあっという間に入るので。)
難関はインストール時に必要となるTPM2.0ですが、きちんとクリアする方法があります。

sudo apt install ovmf swtpm swtpm-tools

Cockpitのプラグインもインストールします。

sudo apt install cockpit-machines

ゲストOSのインストールはCockpitからもできるのですが、Windows 11の場合は、TPM2.0の設定等が必要なので、コマンドラインからインストールします。
Windows 11のISOファイルは、Microsoft公式からダウンロードできます。

virt-install \
--name hq-101 \
--ram 8192 \
--disk path=/var/lib/libvirt/images/<imageファイル名>.img,size=100 \
--cpu host-passthrough \
--vcpus=4 \
--os-variant=win10 \
--network bridge=bridge0 \
--graphics vnc,listen=0.0.0.0,password=password \
--video virtio \
--cdrom /tmp/Win11_22H2_Japanese_x64v1.iso \
--features kvm_hidden=on,smm=on \
--tpm backend.type=emulator,backend.version=2.0,model=tpm-tis \
--boot loader=/usr/share/OVMF/OVMF_CODE.secboot.fd,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/OVMF/OVMF_VARS.ms.fd

インストール画面はCockpit側で表示できるので、操作しましょう。

私の環境では、時折Windowsの再起動に失敗することがあるのですが、しばらく待って動きがなければCockpitで強制終了して、再度起動すると、だいたい動きます。
ただ、初回起動後のWindowsのアップデートは、そもそも時間がかかるし、その途中で強制終了させるとWindowsが起動しなくなることがある(実際にあった)ので、そこは気長に待つと良いでしょう。

ゲストOS側にメモリ16GB、vCPU 8コアとかなりお大尽な設定をしているので、仮想マシンといえどもかなり高速に動作します。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。2018年、株式会社ビビンコを北九州市に創業。IoTソリューションの開発・導入や、画像認識モデルを活用したアプリの開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。