OEMのWindows11ライセンスをProxmoxVEに移行する

Windows11 Homeがプリインストールされた、Intel N100搭載のミニPCを購入したのですが、このPCのWindows環境を破棄し、新たにProxmoxVEを導入して仮想基盤にしようと思いました。
とはいえせっかくOEMとはいえ購入したWindows11のライセンスを使わないのはもったいないので、これをProxmoxVEへ持ち込むことにします。

# 前提

* （最重要）OEMライセンスが物理→仮想に移行できるのは、同一のPC内に限ります。今回の場合、購入したPCにProxmoxVEをインストールし、その中にWindows11のVMを作成するので条件に合致します。他のPCで稼働するProxmoxVEにライセンスを移行させることはできません
* PCに割り当てられているWindows11ライセンスがOEM版であること
* ProxmoxVEのインストールが完了していること
* Windows11のインストール用ISOおよびWindows VirtIO Drivers(VirtIO)のインストール用ISOをProxmoxVE内にダウンロードしていること
* ProxmoxVEのバージョンは8.2.7

この記事では、ProxmoxVEのインストール方法には基本的に触れません。
Windows11のISOはこちらからダウンロードできます。

https://www.microsoft.com/ja-jp/software-download/windows11

VirtIOのISOはこちらからダウンロードできます。

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

# 手順
## 1. Windows11 VMの作成
詳細は割愛し、要点だけ説明します。

### 1. 全般
名前は適当に。VM IDは自動で割り振られるので変更不要ですが、後で使用するので覚えておいてください。
![スクリーンショット_12-11-2024_193350_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/6884cebe-8c51-4396-503e-5fc8b973e2ee.jpeg)

### 2. OS
ISOイメージにWin11のインストーラISOを設定。
ゲストOS種別を"Microsoft Windows"にし、追加で表示される「VirtIO ドライバ用の追加ドライブを追加」にVirtIO用ISOを設定する
![スクリーンショット_12-11-2024_193447_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/cf8a2734-23cb-3aa5-ae47-2eddd83ec142.jpeg)

### 3. システム
SCSIコントローラは"VirtIO SCSI"(Singleでないほう)を設定。
マシンは"q35"、BIOSは"OVMF(UEFI)"を設定。
TPMが必要なので、追加にチェックし、バージョンを"v2.0"に設定する。
![スクリーンショット_12-11-2024_193522_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/853725b1-2362-31fa-5535-093f20414c7f.jpeg)

### 4. ディスク
ディスクサイズはWindows11の最低要件が64GBなので、それ以上に設定する。
![スクリーンショット_12-11-2024_193630_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/045484e2-b9fd-288f-c00d-e9cd7782a34a.jpeg)

### 5. CPU
コア数はWindows11の最低要件が"2"なので、それ以上に設定する。
種別は"host"を設定する。
![スクリーンショット_12-11-2024_193739_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/518030f6-e182-00a2-d83c-e28d17c5498a.jpeg)

### 6. メモリ
Windows11の最低要件が4GBなので、それ以上に設定する。
![スクリーンショット_12-11-2024_19386_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/2143a858-fe5e-ca80-2f74-4054d8e4a3af.jpeg)

### 7. ネットワーク
環境に応じて適宜設定する。ここで特に注意すべき点はありません。
![スクリーンショット_12-11-2024_193822_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/e39b4eea-c0e2-7a68-491a-d602110ebb36.jpeg)

### 8. 確認
サマリーを確認して作成を完了する。
![スクリーンショット_12-11-2024_193844_192.168.0.200.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/53173aab-e199-230b-bee0-a959b5437eb4.jpeg)

## 2. ホストの情報をゲストに反映する

ProxmoxVEのシェルを起動する。
まずはMSDMの情報が参照できることを確認。
```
# cat /sys/firmware/acpi/tables/MSDM
```
`AMI`の後ろにプロダクトキーが表示されていればOK（以下の画像は加工をしています）
![スクリーンショット 2024-11-12 201210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833373/737b2909-0243-6b72-0da3-9e14365af8b1.png)

MSDM情報を任意のファイルに書き出します。
場所とファイル名の指定は無いですが、あとでqemuの設定を変更するのでqemuのコンフィグがあるディレクトリに書き出すことにしました。
なお、これ以降のコマンドで「3桁の数字」が何度か出てきますが、この数字はVMを作成したときに割り振られた「VM ID」を設定してください。この記事の場合`101`となります。
ファイル名については最後に記載する引用元に従って設定しました。
```
# mkdir /etc/pve/qemu-server/101
# cat /sys/firmware/acpi/tables/MSDM > /etc/pve/qemu-server/101/slic_table
```

ホストのシステム情報を`dmidecode`で確認し、その情報をqemuの設定に記述します。
```
# dmidecode | grep -A8 'System Information'
System Information
        Manufacturer: Micro Computer (HK) Tech Limited
        Product Name: Venus Series
        Version: Default string
        Serial Number: MF146VU10DCCMHG00206
        UUID: 8757d600-dbdd-11ee-9016-49072a731600
        Wake-up Type: Power Switch
        SKU Number: Default string
        Family: Default string
# vi /etc/pve/qemu-server/101.conf
(新規追加)
args: -acpitable file=/path/to/slic_table
(編集)
smbios1: uuid=<UUID>,manufacturer=<manufacturer>,product=<prodcut>,serial=<serial>
■この記事の場合では以下の内容を記述します
args: -acpitable file=/etc/pve/qemu-server/101/slic_table
smbios1: uuid=8757d600-dbdd-11ee-9016-49072a731600,manufacturer=Micro Computer (HK) Tech Limited,product=Venus Series,serial=MF146VU10DCCMHG00206
```

あとはWindows11のVMを起動してインストールを開始し、途中でプロダクトキーの確認が**表示されなければ**設定成功となります。
Windows11のインストールそのものの手順につては割愛させていただきます。

# OEMライセンスを仮想環境に移行させることについて

物理→仮想にライセンス持ち込んでセーフなのか、一応調べましたが同じデバイスで使うという条件ならばOKであるという認識です。

https://www.microsoft.com/ja-jp/useterms/
から「製造業者から取得したお客様のコンピューターにプレインストール済み」の中にあるWindows11のPDFを確認。

https://www.microsoft.com/content/dam/microsoft/usetm/documents/windows/11/oem-(pre-installed)/Useterms_OEM_Windows_11_Japanese.pdf

> 2.b.
> デバイス
> 本契約において「デバイス」とは、本ソフトウェアを実行することができる内蔵ストレージデバイスを備えたローカルハードウェアシステム (**物理または仮想**) を意味します。

> 2.d.(iv)
> 仮想化環境での使用
>  このライセンスにより、お客様は、デバイスが**物理であると仮想であるとにかかわらず**、1 台のデバイスで使用するために本ソフトウェアの 1 つのインスタンスのみをインストールすることができます。

# 引用

https://forum.proxmox.com/threads/q-win10pro-vm-guest-install-bios-activation-key.47873/