単体ESXi環境でWindows 11仮想マシンを作る


Windows 11ではTPMが必須要件となる。

TPM無い場合、下記の様に表示されインストールが行えない。

vSphere 6.7 / vSphere 7.0環境では「仮想 Trusted Platform Module を使用する仮想マシンの保護」(vsphere8ドキュメント)にあるようにvCenterの管轄下に置くことでESXiサーバ間での暗号化情報をやりとりできるようにした上でvTPMの設定を行うことができる。

しかし、ESXi単体の場合、vTPMの設定を行うことができない。

これを回避するためには、TPMがなくてもWindows 11をインストールできるように細工する必要がある。

ただMicrosoft的には推奨では無いということを考慮した上で実施すること。(Microsoftの公式見解 最小システム要件を満たしていないデバイスに Windows 11 をインストールする/Installing Windows 11 on devices that don’t meet minimum system requirements)

このTPM回避の設定を行う場合、Windows 11のインストールISO/USBを修正する必要なく、普通にISO/USBから起動してから回避方法を実行することができる。

上記の画面やエディション選択などに来たら、Shiftキーを押しながらF10キーを押す(Shift+F10)、とコマンドプロンプトが開く。

コマンドプロンプトで「regedit」と入力し、レジストリエディッタを開く

「HKEY_LOCAL_MACHINE\SYSTEM\Setup」に、新規キー「LabConfig」を作成

その中に新規DWORD「BypassTPMCheck」を作成し、値を「1」とします。

また、SecureBoot非対応環境の場合は「BypassSecureBootCheck」を「1」、メモリの最低容量チェックを飛ばす場合は「BypassRAMCheck」を「1」とします。

設定後はレジストリエディッタを閉じて、あとは普通にインストールします。

ローカルアカウントでセットアップを行う手順

また、マイクロソフトアカウントではなく、ローカルアカウントで設定したい場合、Homeエディションの場合は非常に面倒です。

使うWindows 11のインストーラがいつ作成されたもの(どのバージョン)であるかによって変わります。

Windows 11 22H2以降のHomeエディション

Windows 11 22H2といった新しいHomeエディションではMicrosoftアカウントとして「no@thankyou.com」を指定して、パスワードは適当に入力してエラーを出します。

(上記ではno@thankyou.comを指定しているが、これはログインエラーを出すのが目的のメールアドレス指定であるため、Microsoft Accountとして登録していない自分が所有しているメールアドレスを使っても良い)

エラーを出した状態で次に進むとローカルユーザの作成ができます。

参考:tom’s hardware「How to Install Windows 11 Without a Microsoft Account

Windows 11 22H2より前のHomeエディション

しばらく前までの「Homeエディション」の場合は、ネットワーク接続をしない状態で設定する必要があります。

上記の状態まで来たら、ネットワークケーブルを外してから、「←」で戻ると、下記のローカルユーザ名入力画面となります。

なお、パスワードは未入力で進めると、電源ON後、パスワード入力無しでデスクトップ画面が表示されます。

Windows 11 Proエディション

「Proエディション」の場合は、下記で「職場または学校用に設定する」を選択

「サインインオプション」を選択

「代わりにドメインに参加する」を選択

これで下記のローカルユーザ名入力画面となります。

Proでもパスワードは未入力で進めると、電源ON後、パスワード入力無しでデスクトップ画面が表示されます。


インストールアシスタントを使ってWindows10からWindows11にアップグレードする場合

こちらについてはMicrosoftからの公式手順「Ways to install Windows 11」内の「Other ways to install Windows 11 (not recommended unless instructed by support)」から記載があります。

レジストリエディッタで「HKEY_LOCAL_MACHINE\SYSTEM\Setup」に新規キー「MoSetup」を作成
そこに新規DWORD「AllowUpgradesWithUnsupportedTPMOrCPU」を値「1」で作成してから、インストールアシスタントを実行するとのこと。

ただ、これはインストールアシスタントでの制約解除なようで、Windows11 ISOメディアから起動する場合には有効ではありませんでした。


2024/01/11追記

vSphere環境でvTPMを使う場合の資料

vTPMを使う場合、まずはvCenter上で キープロバイダの設定 を行う必要がある。(標準では設定されていない)

vSphere Native Key Provider の構成と管理 にある手順に従い設定すること。

なお、設定した場合は、損壊時の復旧に備えて vSphere Native Key Provider のバックアップを行い、そのデータを別の場所に保存しておくこと。

vTPM有効にして仮想マシンを作成しようとした場合の情報

Windows 11 guest operating system option is not available during virtual machine creation (85665) (仮想マシン作成時のOS選択にWin11が登場するのはHW ver19以降。それ以前で設定した場合は手動でvTPMハードウェアを追加する)

Failed to create a new Virtual Machine with virtual Trusted Platform Module (vTPM) device (85974) (vTPMハードウェア追加しようとした時にエラーとなる場合はvTPMが設定されていない)


2024/01/23追記

Nutanix でvTPM有効で Windows 11

Broadcomのせいでvsphereがアレなことになちゃってるので、Nutanixという話が出てるのでメモ書き追加

公式資料:Windows 11 on Nutanix AHV
Understanding UEFI, Secure Boot, and TPM in the Virtualized Environment
vTPM (Virtual Trusted Platform Module) support on AHV
Securing AHV VMs with Virtual Trusted Platform Module

vTPM環境を有効にするには基本的にはPrism Centralが必要(Prism Central上からvTPM有効にする)

AHV vTPMとしてハイパーバイザー側でvTPMを有効にする手法もあるが仮想マシンごとにコマンド操作での設定が必要?

単体Nutanix環境で仮想マシン作成すると標準で作成されるCD-ROMはIDE接続だが、それではSecure Boot有効にできない、というので、SATA接続のCD-ROMとして設定しなおすとSecure Bootが有効に設定はできる。

ただ、これで起動したところ以下のTianoCore画面で停止したままとなった。

おそらくvTPMについて設定していないからと想定している

インフラ屋とアプリ屋のあいだにAHVのUEFIの対応と注意点」をみると、TianoCore画面は表示されてるのでSecure Bootにはなってる模様?

とりあえずsshでCVMにログインして「acli」で「vm.list」を実行し、仮想マシンUUIDを取得してから情報をとってみる

<acropolis> vm.get 5468cc7a-f8d0-4f81-b487-9879a9034f07
win11vm {
  can_clear_removed_from_host_uuid: True
  config {
    agent_vm: False
    allow_live_migrate: True
    boot {
      firmware_config {
        nvram_disk_spec {
          create {
            container_id: 791
            size: 540672
          }
        }
        nvram_disk_uuid: "4dbf9ca7-fcc9-4ccb-bb09-68e6efc5e7e3"
        nvram_storage_vdisk_uuid: "7789ad26-5dd6-4449-94be-91d7826e5b1b"
      }
      secure_boot: True
      uefi_boot: True
      windows_credential_guard: False
    }
    cpu_passthrough: False
    disable_branding: False
    disk_list {
      addr {
        bus: "scsi"
        index: 0
      }
      container_id: 4
      container_uuid: "382d3533-a361-494d-a7a0-34a31189194d"
      device_uuid: "b1d3b8c7-55ca-4b54-bbb5-dc420af3c64f"
      naa_id: "naa.6506b8d861d47d56721f107382b7a77b"
      storage_vdisk_uuid: "4c7f99cb-9033-44d6-944c-d336c2e038ea"
      vmdisk_size: 42949672960
      vmdisk_uuid: "59b58d21-b5ae-46df-ac37-c13a09343eb6"
    }
    disk_list {
      addr {
        bus: "sata"
        index: 0
      }
      cdrom: True
      container_id: 4
      container_uuid: "382d3533-a361-494d-a7a0-34a31189194d"
      device_uuid: "286dd080-7c53-4591-a393-ccdfec69d4ba"
      naa_id: "naa.6506b8dad9fd1ba7c387201df7854712"
      source_vmdisk_uuid: "1632fefd-66b0-42aa-a25b-9eec7b545cb2"
      storage_vdisk_uuid: "eae8b9ee-c441-4e65-89ad-a247781fc2d0"
      vmdisk_size: 6549825536
      vmdisk_uuid: "becf4569-795f-4970-ab6b-8505f0f7f210"
    }
    flash_mode: False
    hwclock_timezone: "Asia/Tokyo"
    machine_type: "q35"
    memory_mb: 4096
    name: "win11vm"
    nic_list {
      connected: True
      mac_addr: "50:6b:8d:bb:57:0a"
      network_name: "VM Network"
      network_type: "kNativeNetwork"
      network_uuid: "803e5bea-e486-41f0-90d8-bbf1819393bb"
      type: "kNormalNic"
      uuid: "677e67ac-46c9-4359-be9f-e74f710240fd"
      vlan_mode: "kAccess"
    }
    num_cores_per_vcpu: 1
    num_threads_per_core: 1
    num_vcpus: 2
    num_vnuma_nodes: 0
    vga_console: True
    vm_type: "kGuestVM"
    vtpm_config {
      is_enabled: True
      model: "kCRB"
      version: "2.0"
      vtpm_disk_spec {
        create {
          container_id: 791
          size: 68157440
        }
      }
      vtpm_disk_uuid: "538c10f4-4d63-40bb-9941-75ef33fb5114"
      vtpm_storage_vdisk_uuid: "821c7765-91e2-4ab1-9962-bdad70758e90"
    }
  }
  is_rf1_vm: False
  logical_timestamp: 8
  state: "kOff"
  uuid: "5468cc7a-f8d0-4f81-b487-9879a9034f07"
}
<acropolis>

「secure_boot: True」と「machine_type: “q35″」があるので有効にはなっている模様(「Creating a VM with Secure Boot Enabled」)

「vtpm_config」が「is_enabled: True」ということはvTPMが有効になっていてもよさそう?

New Feature: Secure Boot for VM’s in AOS 5.16」ではさらに「nvram_container=NutanixManagementShare名」と設定している。

AHV Administration Guide の「UEFI Support for VM」を見てみるがPrism CentralなしでvTPMが使えるようになるやりようが見つからない・・・ないのかな?

Securing AHV VMs with Virtual Trusted Platform Module

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください