Ryzen 5 3500U環境でnested esxiを作ろうとしたらディスクが見えない

GMKtec NucBox G10 mini にESXi8 Freeをインストールして使っているんだけど、ESXi 7からESXi 8へのバージョンアップ手順を確認したくて、nested esxi環境を作ろうとした・・・

仮想マシンを[その他]-[VMware ESXi 7.x]で作成して

仮想マシンのCPU設定は詳細を開いて「ハードウェア仮想化」「IOMMU」「パフォーマンスカウンター」にチェックを入れて

SCSIコントローラは「VMware Paravirtual(PVSCSI)」で、ディスクはscsi0 で接続して作成

これでインストールを進めると選択できるディスクがない

この状態で、AlmaLinux 9.7のISOで起動すると普通にインストールできて起動してくる。

いろいろ悩んだ結果・・・

「IOMMU」と「パフォーマンスカウンター」のチェックを外してみたところ

ディスクが見えるようになりました

Intel N97環境でNested ESXiをインストールした際は、IOMMIとパフォーマンスカウンターにチェックが入っていてもディスクを認識してくれたのに、Ryzen 5 3500U環境ではダメなようです。

vSphere上の仮想マシンに物理サーバのBIOS情報を見せる

vSphere上の仮想マシンは、vSphere仮想基盤が提供している仮想のBIOS情報を参照している

この状態だと、物理サーバのBIOS内にあるキー情報などが読み取れないため、OEM版Windowsライセンスの認証が行えない。

これを解消するために「SMBIOS.reflectHost=TRUE」という設定を入れる、という話がある

DELLでも「Dell PowerEdgeシステムでROKメディアを使用するためのハイパーバイザーを準備する」にて vmxファイルにsmbios.reflectHost = TRUE を追加する、と記載している

他にBIOS情報を仮想マシンに反映するための設定ってあるのか?と探してみると「How to Pass Host Hardware Information to a VMware Workstation VM」に下記の様な記述が

I powered off the VM and used Notepad to add these three lines to the end of the VMX file:

SMBIOS.reflectHost = “TRUE”
SMBIOS.noOEMStrings = “TRUE”
smbios.addHostVendor = “TRUE”

SMBIOS.noOEMStrings 設定について調べると、例えば富士通/エフサスの出している「VMware vSphere 9 ソフトウェア説明書」の”PRIMERGY添付のWindows OS メディアの使用」の項目に、smbios.reflectHost=TRUE と SMBIOS.noOEMStrings=TRUE を追加する、と記載している。

他に調べると https://github.com/magliocchetti/SafeExamPwner/blob/main/AddToYourVmxFile.txt を発見

SMBIOS.reflectHost = "TRUE"
SMBIOS.assettag = "INTEL"
SMBIOS.useShortSerialNumber = "TRUE"
SMBIOS.noOEMStrings = "TRUE"
SMBIOS.addHostVendor = "TRUE"

これらをTRUE/FALSE設定していって状況を確認

lshwコマンドの出力結果

標準状態はコレ

localhost.localdomain
    description: Computer
    product: VMware20,1
    vendor: VMware, Inc.
    version: None
    serial: VMware-56 4d e4 49 78 d4 97 14-30 0a 2d e4 84 66 f9 db

SMBIOS.reflectHost = “TRUE” だけを設定

localhost.localdomain
    description: Computer
    product: NucBox_G10
    vendor: GMKtec
    version: None
    serial: Default string

注:GMKtec NucBox_G10 にはシリアルがちゃんと設定されていないのでこんな値になっている

SMBIOS.useShortSerialNumber = “TRUE”だけを設定

localhost.localdomain
    description: Computer
    product: VMware20,1
    vendor: VMware, Inc.
    version: None
    serial: VMWVk3kSXjUlxQwCi3khGb52w

SMBIOS.reflectHost = “TRUE” と SMBIOS.useShortSerialNumber = “TRUE” を設定

localhost.localdomain
    description: Computer
    product: NucBox_G10
    vendor: GMKtec
    version: None
    serial: Default string

このことから「SMBIOS.useShortSerialNumber」はVMwareが生成するserialに関する設定であるため、SMBIOS.reflectHost = “TRUE” を設定した際には効果がないと判断できる

SMBIOS.noOEMStrings , smbios.addHostVendor, SMBIOS.assettag については、試験した環境では lshw 上で有意な変化が見られなかった。(一部のUSBバスの番号が変わったりしたけど)

結論としては、基本的には「SMBIOS.reflectHost = “TRUE” 」を設定するだけで問題ない、ということになるかと思う


2026/02/20追記

ESXiをインストールする時にいろいろトラブルがあった影響で知った「localcli hardware platform get」コマンドで関連する情報が見れると知って試してみた

標準状態

SMBIOS.assettag = “TEST”だけ設定すると、「BIOS Asset Tag」に設定した文字列が入る

SMBIOS.noOEMStrings = “TRUE”とSMBIOS.assettag = “TEST”を設定では、変化無し

SMBIOS.noOEMStrings = “TRUE”、SMBIOS.addHostVendor = “TRUE”、SMBIOS.assettag = “TEST”を設定でも変わらず

上記3つに SMBIOS.useShortSerialNumber = “TRUE” を追加すると、”Serial Number”の文字列が変わる

ここにSMBIOS.reflectHost=TRUEを追加すると、”Product Name”,”Vendor Name”, “Serial Number”が物理サーバ由来の値に置き換わるが、”BIOS Asset Tag”については設定値を引き継いでいる

今度は逆にいくつかFALSEに変更

SMBIOS.noOEMStrings と SMBIOS.useShortSerialNumbeをFALSEとし、SMBIOS.reflectHostとSMBIOS.addHostVendor はTRUEのままとした場合、reflectHostの設定が最も優先されているので、状況に変化がない

SMBIOS.reflectHostだけTRUE(他はfalse)としても変化はない

SMBIOS.noOEMStrings と SMBIOS.addHostVendor はESXi 7.0以降では活用されていない設定なのか?

vCenterに作成したユーザのパスワード有効期限はデフォルト90日間

vSphere 8.0環境で、vCenter上に作成した新規ユーザのパスワード有効期限は、標準設定のままだと90日間となっている。

バックアップ専用に新規ユーザを作成する場合など、特殊なユーザに対してだけ、有効期限設定を無効化したい場合は、VCSA仮想マシンに対してsshログインして、設定を行う必要がある。

ドキュメント:vSphere IaaS Control Plane 7.0 「dir-cli コマンド リファレンス

(1)VCSA仮想マシンにsshでログイン

sshでアクセスし、rootユーザでログイン

(2)shellモードに移行

ログインすると「Command>」というプロンプト
そこに「shell」と入力し、UNIXコマンドが利用できるようにする

Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command> shell
Shell access is granted to root
root@vcsa [ ~ ]#

(3)dir-cliコマンドで現在のアカウント状態を確認

/usr/lib/vmware-vmafd/bin/dir-cli user find-by-name –account アカウント名 –level 2
「Password never expires:」が「FALSE」となっているとパスワード有効期限設定が有効で「Password expiry」にある日付で無効化される状態です。

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account backupuser --level 2
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
Account disabled: FALSE
Account locked: FALSE
Password never expires: FALSE
Password expired: FALSE
Password expiry: 874 day(s) 18 hour(s) 17 minute(s) 48 second(s)
root@vcsa [ ~ ]#

(4)dir-cliコマンドで パスワード有効期限を無効とします

/usr/lib/vmware-vmafd/bin/dir-cli user modify –account アカウント名 –password-never-expires

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user modify --account backupuser --password-never-expires
Enter password for administrator@vsphere.local:
Password set to never expire for [backupuser].
root@vcsa [ ~ ]#

(5)dir-cliコマンドでアカウント状態が変更されたことを確認

/usr/lib/vmware-vmafd/bin/dir-cli user find-by-name –account アカウント名 –level 2
「Password never expires:」が「TRUE」となっているとパスワード有効期限設定が無効です
「Password expiry:N/A」と有効期限も未設定となっています

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account backupuser --level 2
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
Account disabled: FALSE
Account locked: FALSE
Password never expires: TRUE
Password expired: FALSE
Password expiry: N/A
root@vcsa [ ~ ]#

ちなみにlevel 2オプションなしで実行した場合は下記情報しかみれません

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name –account backupuser
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
root@vcsa [ ~ ]#

vCenterサーバ上で作成した管理用ユーザのパスワード有効期限をなくす

アプリケーション連動のためにvCenterサーバ上に専用の管理者アカウントを作成する場合がある。

その場合、作成したユーザのパスワード有効期限が問題となるのだが、GUI上では確認も設定もできない。

VCSA仮想マシンにsshでログインし、dir-cliコマンドを実行して確認する必要がある。

ドキュメント https://techdocs.broadcom.com/jp/ja/vmware-cis/vsphere/vsphere-supervisor/7-0/dir-cli-utility.html

指定したユーザのパスワード有効期限情報などを確認

有効期限情報は「dir-cli user find-by-name」のlevel 2出力で確認することができる。

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account backupuser --level 2
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
Account disabled: FALSE
Account locked: FALSE
Password never expires: FALSE
Password expired: FALSE
Password expiry: 899 day(s) 23 hour(s) 45 minute(s) 3 second(s)
root@vcsa [ ~ ]#

ちなみにlevelオプションなしだと下記となる

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user  find-by-name --account            backupuser
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
root@vcsa [ ~ ]#

パスワード有効期限をなくす

–password-never-expires オプションを使うと有効期限をなくすことができる

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user modify --account backupuser --passw
ord-never-expires
Enter password for administrator@vsphere.local:
Password set to never expire for [backupuser].
root@vcsa [ ~ ]#

dir-cli user find-by-name を実行して「Password never expires」が「FALSE」から「TRUE」に変更されたことを確認

root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account backupuser --level 2
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
Account disabled: FALSE
Account locked: FALSE
Password never expires: TRUE
Password expired: FALSE
Password expiry: N/A
root@vcsa [ ~ ]#

パスワード有効期限を復活させる

何らかの事情でパスワード有効期限を再度設定する場合は–password-expiresオプションで設定する

root@vcsa [ ~ ]#  /usr/lib/vmware-vmafd/bin/dir-cli user modify --account backupuser --password-expires
Enter password for administrator@vsphere.local:
Password set to expire for [backupuser].
root@vcsa [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account backupuser --level 2
Enter password for administrator@vsphere.local:
Account: backupuser
UPN: backupuser@VSPHERE.LOCAL
Account disabled: FALSE
Account locked: FALSE
Password never expires: TRUE
Password expired: FALSE
Password expiry: N/A
root@vcsa [ ~ ]#

VCSAのバックアップがサービスが起動していないということで失敗する件の対応

vSphere 8環境のVCSA仮想マシンバックアップを取ろうとしたらエラーになった

Invalid vCenter Server Status: All required services are not up! Stopped services: 'certificateauthority, certificatemanagement, hvc, infraprofile, observability-vapi, sps, topologysvc, trustmanagement, vapi-endpoint, vpxd-svcs, vstats'.

Invalid vCenter Server Status: All required services are not up! Stopped services: ‘statsmonitor’ (409983)

VCSA仮想マシンにsshでログインして、まずは「service-control –status」を実行してサービスの状態を確認してみる

root@vcsa [ ~ ]# service-control --status
Running:
 applmgmt lookupsvc lwsmd observability pschealth vc-ws1a-broker vlcm vmafdd vmcad vmdird vmware-analytics vmware-cis-license vmware-content-library vmware-eam vmware-envoy vmware-envoy-hgw vmware-envoy-sidecar vmware-perfcharts vmware-pod vmware-postgres-archiver vmware-rhttpproxy vmware-sca vmware-stsd vmware-updatemgr vmware-vdtc vmware-vmon vmware-vpostgres vmware-vpxd vmware-vsan-health vmware-vsm vsphere-ui vtsdb wcp
Stopped:
 observability-vapi vmcam vmonapi vmware-certificateauthority vmware-certificatemanagement vmware-hvc vmware-imagebuilder vmware-infraprofile vmware-netdumper vmware-rbd-watchdog vmware-sps vmware-topologysvc vmware-trustmanagement vmware-vapi-endpoint vmware-vcha vmware-vpxd-svcs vstats
root@vcsa [ ~ ]#

たしかにStoppedの方にエラーメッセージが出てるサービス群がいるような感じなんだけど、微妙に文字列が違う

サービス一覧を「service-control –list」で確認

root@vcsa [ ~ ]# service-control --list
vmware-analytics (VMware Analytics Service)
applmgmt (VMware Appliance Management Service)
vmware-certificateauthority (VMware Certificate Authority Service)
vmware-certificatemanagement (VMware Certificate Management Service)
vmware-cis-license (VMware License Service)
vmware-content-library (VMware Content Library Service)
vmware-eam (VMware ESX Agent Manager)
vmware-envoy (VMware Envoy Proxy)
vmware-envoy-hgw (VMware Envoy Host Gateway)
vmware-envoy-sidecar (VMware Envoy Sidecar)
vmware-hvc (VMware Hybrid VC Service)
vmware-imagebuilder (VMware Image Builder Manager)
vmware-infraprofile (VMware Infraprofile Service)
lookupsvc (VMware Lookup Service)
vmware-netdumper (VMware vSphere ESXi Dump Collector)
observability (VMware VCSA Observability Service)
observability-vapi (VMware VCSA Observability VAPI Service)
vmware-perfcharts (VMware Performance Charts)
vmware-pod (VMware Patching and Host Management Service)
pschealth (VMware Platform Services Controller Health Monitor)
vmware-rbd-watchdog (VMware vSphere Auto Deploy Waiter)
vmware-rhttpproxy (VMware HTTP Reverse Proxy)
vmware-sca (VMware Service Control Agent)
vmware-sps (VMware vSphere Profile-Driven Storage Service)
vmware-stsd (VMware Security Token Service)
vmware-topologysvc (VMware Topology Service)
vmware-trustmanagement (VMware Trust Management Service)
vmware-updatemgr (VMware Update Manager)
vmware-vapi-endpoint (VMware vAPI Endpoint)
vc-ws1a-broker (VMware Identity Single Container Service)
vmware-vcha (VMware vCenter High Availability)
vmware-vdtc (VMware vSphere Distrubuted Tracing Collector)
vlcm (VMware vCenter Server Lifecycle Manager)
vmafdd (VMware Authentication Framework)
vmcad (VMware Certificate Service)
vmcam (VMware vSphere Authentication Proxy)
vmdird (VMware Directory Service)
vmonapi (VMware Service Lifecycle Manager API)
vmware-postgres-archiver (VMware Postgres Archiver)
vmware-vmon (VMware Service Lifecycle Manager)
vmware-vpostgres (VMware Postgres)
vmware-vpxd (VMware vCenter Server)
vmware-vpxd-svcs (VMware vCenter-Services)
vmware-vsan-health (VMware VSAN Health Service)
vmware-vsm (VMware vService Manager)
vsphere-ui (VMware vSphere Client)
vstats (VMware vStats Service)
vtsdb (VMware vTsdb Service)
wcp (Workload Control Plane)
lwsmd (Likewise Service Manager)
root@vcsa [ ~ ]#

ヘルプ見ると「–all」ってのがあるので、とりあえず「service-control –start –all」を実行してみる

root@vcsa [ ~ ]# service-control --start --all
Operation not cancellable. Please wait for it to finish...
Performing start operation on service lwsmd...
Successfully started service lwsmd
Performing start operation on service vmafdd...
Successfully started service vmafdd
Performing start operation on service vmdird...
Successfully started service vmdird
Performing start operation on service vmcad...
Successfully started service vmcad
Performing start operation on profile: ALL...
Successfully started profile: ALL.
Performing start operation on service observability...
Successfully started service observability
Performing start operation on service vmware-vdtc...
Successfully started service vmware-vdtc
Performing start operation on service vmware-pod...
Successfully started service vmware-pod
root@vcsa [ ~ ]#

サービスの状態を確認すると、いろいろ止まっていたサービスが起動してる

root@vcsa [ ~ ]# service-control --status
Running:
 applmgmt lookupsvc lwsmd observability observability-vapi pschealth vc-ws1a-broker vlcm vmafdd vmcad vmdird vmware-analytics vmware-certificateauthority vmware-certificatemanagement vmware-cis-license vmware-content-library vmware-eam vmware-envoy vmware-envoy-hgw vmware-envoy-sidecar vmware-hvc vmware-infraprofile vmware-perfcharts vmware-pod vmware-postgres-archiver vmware-rhttpproxy vmware-sca vmware-sps vmware-stsd vmware-topologysvc vmware-trustmanagement vmware-updatemgr vmware-vapi-endpoint vmware-vdtc vmware-vmon vmware-vpostgres vmware-vpxd vmware-vpxd-svcs vmware-vsan-health vmware-vsm vsphere-ui vstats vtsdb wcp
Stopped:
 vmcam vmonapi vmware-imagebuilder vmware-netdumper vmware-rbd-watchdog vmware-vcha
root@vcsa [ ~ ]#

これで行けるのかな?とバックアップを実行してみれば、問題無く開始された

なお、 https://VCSA:5480/ の管理画面にある「サービス」から関連するサービスを手動で「起動」してもおそらくは大丈夫なはず