新事務所で常時稼働させるサーバとして、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コアとかなりお大尽な設定をしているので、仮想マシンといえどもかなり高速に動作します。