Realtek NICドライバを組み込んだESXi 6.7のカスタムISOを作成

スポンサーリンク

去年の頭頃に購入したThinkCentre M75q-2 TinyにESXiを入れてみようとしたところ、NICが対応していないとエラーを吐かれてインストールできなかった。
Realtek製のNIC (RTL8168) しか搭載していないため、ESXiをそのまま入れることはできないようだ。

今回はRealtek製NICのドライバを組み込んだESXi 6.7のカスタムイメージを作成する方法を解説する。

カスタムイメージを作る環境を作るところから記事にしておくことで、数年後に必要になった時にも安心だ。(?)

カスタムイメージを作成する

必要なファイルを集める

上記ファイルをダウンロードし、Python 3.7はインストールしておく。(Add Python 3.7 to PATHにチェックを入れておくと楽)

対応NIC

(Realtek RTL8111B / RTL8168B / RTL8111/RTL8168 / RTL8111C / RTL8111CP / RTL8111D(L) / RTL8168C / RTL8111DP / RTL8111E / RTL8168E / RTL8111F / RTL8411 / RTL8111G / RTL8111GUS / RTL8411B(N) / RTL8118AS / D-Link DGE-528T)

ファイルを配置する

今回はわかりやすく作業用にCドライブ直下にESXiフォルダを作成し、その中で作業することとする。

Realtek NICドライバはダウンロードしたファイル net55-r8168-8.045a-napi.x86_64.vib をESXiフォルダ内のvib67フォルダに入れる。(ESXi 6.7用のvibなのでvib67)
ESXi-Customizer-PS-2.9.0.zipは解凍し、 ESXi-Customizer-PS.ps1ESXiフォルダに入れる。

フォルダ内はこんな感じになっている。

vib67フォルダ内には net55-r8168-8.045a-napi.x86_64.vibがある

PowerCLIをインストール

管理者権限でPowerShellを開き、以下を実行する。
(PowerShellはWin+Xで出てくるショートカットから起動すると楽)

Install-Module -Name VMware.PowerCLI

続行するには NuGet プロバイダーが必要です~ と注意が出たらYで続行。
信頼されていないリポジトリ~ と注意が出たらYで続行する。

実行中

通信環境にも依るが、ここの処理は結構長いからお茶でも淹れて待とう。

エラーも出ずに再度文字が入力できるようになっていればインストール完了となる。

Pythonで必要なパッケージをインストールする

PowerShellを起動し以下を実行する。

pip install six pyopenssl psutil lxml

PowerCLIの設定

PowerShellを起動し以下を実行する。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

実行ポリシーの変更~ の警告が出てきたらYで続行。

さらに以下を実行する。

Import-Module VMware.PowerCLI

モジュールのインポートが始まると共に、カスタマーエクスペリエンス向上プログラムへの参加してくれ~みたいな警告が表示されるが無視して構わない。
このモジュールのインポートも少し時間がかかるので注意。

Welcome to VMware PowerCLI!

と表示されたら文字入力ができるようになっているので、以下を実行してPython3.7の場所を指定する。
(初期設定でPythonをインストールしている場合はユーザーフォルダのAppData内にあるので以下のようなパスになると思われる。)

Set-PowerCLIConfiguration -PythonPath "C:\Users\@ユーザー名@\AppData\Local\Programs\Python\Python37\python.exe"

@ユーザー名@ やインストール先を変更している場合は各環境に合わせて変更してほしい。

Perform operation? と警告してくれるのでYで続行し、一旦exitで抜ける。

管理者権限でPowerShellを起動し、以下を実行することで恒久的に実行ポリシーをUnrestrictedに変更できる。

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

全てのスクリプトが制限なしに実行できるので、今後なにか別のスクリプトを実行する際にはよく気をつけるようにしよう。

参加したくない場合は以下を実行

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false

参加してもいい場合は以下を実行

Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $true

カスタムイメージを作成する

C:\ESXi\フォルダ内でShiftを押しながら右クリックし、[PowerShell ウィンドウをここで開く(S)]を選択。

更に以下を実行する。

.\ESXi-Customizer-PS.ps1 -ozip -v67 -pkgDir vib67

今回は ESXi-6.7.0-20221004001-standard-customized.zip が作成された。
作成したzipファイルをUSBメモリ等に焼けるisoに変換するために以下を実行。

.\ESXi-Customizer-PS.ps1 -izip ESXi-6.7.0-20221004001-standard-customized.zip

今回は ESXi-6.7.0-20221004001-standard-customized.iso が作成された。
これで必要なカスタムイメージの作成が完了した。

エラー?

本当はozipでzip出力してizipでiso変換……みたいなことをせずにisoファイルを直接作成できるはずなのだが、以下のようなエラーが出るためこういった方法を取っている。

An unexpected error occured:
Error retrieving file for VIB 'VMware_bootbank_esx-ui_1.43.10-20199807': ("<zipfile.ZipExtFile name='vib20/esx-ui/VMware_bootbank_esx-ui_1.43.10-20199807.vib' mode='r' compress_type=deflate>", "Error opening file object for VIB 'VMware_bootbank_esx-ui_1.43.10-20199807': Expected value '[]' for attribute 'swplatforms', but found value '[<vmware.esximage.Vib.SoftwarePlatform object at 0x000001D29DE6B588>, <vmware.esximage.Vib.SoftwarePlatform object at 0x000001D29DE6B2C8>]'.").

USBメモリに焼き、実機にインストール

完成したカスタムイメージをRufus等を使ってUSBメモリに焼く。

PCにUSBメモリを挿して起動し、ESXiがインストールできれば完了だ。

その他ドライバ等

ESXi 7.0以降はVMKLinuxが削除された関係で使えるNICが減っているが、ESXi 6.7までであれば有志が様々なドライバを公開してくれているので調べてみるといいだろう。

ESXi-Customizer-PSを作成してくれているv-front.deのサイトにもあるし、GitHub上で公開してくれているメーカーもある。(Aquantia)

VMware FlingsではUSB NICのネイティブドライバを公開してくれている(サポート対象外ではある)ので、USB NICを使用して運用も可能だ。(ネイティブドライバなのでESXi 6.7に限らず7.0や8.0でも利用可能)

参考リンク

List of currently available ESXi packages - V-Front VIBSDepot Wiki
PowerShellでこのシステムではスクリプトの実行が無効になっているため、ファイル hoge.ps1 を読み込むことができません。となったときの対応方法 - Qiita
環境Windows10Pro64bitバージョン1803PowerShell5.1.17134.858事象:初めてPowerShellでソースファイルを実行したら怒られた。PS…
RealtekのNICのドライバーを組み込んだESXi 6.7のカスタムイメージを作成する
自宅PCにESXiを入れて検証を行うインフラエンジニアの技術メモ。WindowsServer/Linux/VMware/Ansible/Zabbixなど。

コメント

タイトルとURLをコピーしました