hpeのProLiantサーバにWindows Server 2016をインストールする場合、通常はIntelligent Provisioning を使う。
しかし、Administratorパスワードが不明な場合、Windows Server 2016の標準ISOイメージのレスキューモードで起動することになるのだが、Smart Array B140i用のドライバが含まれていないため、内蔵ディスクが見えない。
対処するためにはISOイメージ内のsources\boot.wim にDSIMコマンドを使ってAdd-driverすることになる。
手順は「Windows インストールメディアにドライバーを追加する」にあるものをほぼそのまま使い、下記の様に実施した。
カスタマイズしたWindows Server 2016ISOイメージの作り方
1. 作業用Windows10を用意
2. Windows ADK 1709の「Deployment Tools」と「Windows Preinstallation Environment (Windows PE)」をインストール
3. メニューの登録されている「展開およびイメージング ツール環境」を選択してコマンドプロンプトを起動
4. 「copype amd64 c:\work\pe_x64」(今回、C:\work を作業用ディレクトリとした)でWindows PE環境を展開
5. C:\work\iso にWindows Server 2016 ISOの中身をコピー
6. マウント用ディレクトリ c:\work\offline を作成
7. 「dism /get-imageInfo /imagefile:”C:\work\iso\sources\boot.wim”」でインデックス番号を確認
インデックス1とインデックス2があることを確認
レスキューの際にどちらを使うかわからないので、とりあえず両方使う
8. まずインデックス1をc:\work\offlineにマウント
「dism /mount-image /imagefile:”C:\work\iso\sources\boot.wim” /index:1 /mountdir:”C:\work\offline”」
9. smart array b140i用のドライバをc:\work\hpedriver に展開
10. ドライバを追加。複数ある場合も考慮して、/recurseオプション付きで実行
「dism /add-driver /image:”c:\work\offline” /driver:”c:\work\hpedriver” /recurse」
11. ドライバが追加されたことを確認
「dism /get-drivers /image:”c:\work\offline”」
12. アンマウントする
「dism /unmount-image /mountdir:”c:\work\offline” /commit」
13. 今度はインデックス2に対して実行
「dism /mount-image /imagefile:”C:\work\iso\sources\boot.wim” /index:2 /mountdir:”C:\work\offline”」
14. ドライバを追加。複数ある場合も考慮して、/recurseオプション付きで実行
「dism /add-driver /image:”c:\work\offline” /driver:”c:\work\hpedriver” /recurse」
15. ドライバが追加されたことを確認
「dism /get-drivers /image:”c:\work\offline”」
16. アンマウントする
「dism /unmount-image /mountdir:”c:\work\offline” /commit」
17. oscdimgコマンドを実行してISOイメージの作成
「oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\work\PE_x64\fwfiles\etfsboot.com#pEF,e,bc:\work\PE_x64\fwfiles\efisys.bin c:\work\iso c:\work\win2016-new.iso」
これで、作成したISOイメージをFAT32でフォーマットしたUSBメモリにコピーしようとしたところ、install.wimのコピーで失敗した。
原因はinstall.wimのサイズがFAT32制限である4GB以上の約6GBであるためです。
NTFSもしくはexFATでフォーマットしなおしたところ、コピーはできたものの、サーバ側で起動ディスクとして認識せず、起動できなかった。
確認したところ、 UEFIの場合、ファイルシステムがFAT32であること、という前提があった。 この制限については、マイクロソフトの「起動可能な USB フラッシュ ドライブを作成します。」に記載がされている。
サーバー プラットフォームが Unified Extensible Firmware Interface (UEFI) をサポートする場合は、NTFS ではなく FAT32 として、USB フラッシュ ドライブをフォーマットする必要があります。 フォーマットするパーティションを FAT32 として、次のように入力します。 format fs=fat32 quick、し、[入力] をクリックします。
ブート可能な USB フラッシュ ドライブの作成
この記事を書くきっかけとなった件ではiLO Advancedライセンスがあったため、isoイメージをiLOからマウントすることで、DVDを作成する必要はなく対応することができた。
しかし、USBメモリを使ってWindows Server 2016のインストールを行う手法があるかどうか
つまりは4GBを超えてしまったinstall.wimをダイエットすることができるのか、分割することはできるのか、という点は不明なままであった・・・
2018/03/13追記
Microsoftの公式記述を発見した。
手法1「WinPE: Store or split images to deploy Windows using a single USB drive」
USBメモリにパーテーションを2つ作り、FAT32のメイン領域と、NTFSのinstall.wimのみをおく領域を作る、というもの
手法2「Split a Windows image file (.wim) to span across multiple DVDs」
Dism /Split-Imageコマンドを使ってinstall.wimをinstall.swmに分割するというもの
Dism /Split-Image /ImageFile:C:\work\iso\sources\install.wim /SWMFile:C:\work\iso\sources\install.swm /FileSize:4000
(上記ページだと4700となっているけど、4GB超えてて大丈夫なの?と心配なので余裕をもって)
2020/12/21 追記
これを再度hpe dl360 gen10環境で実施する必要があったので確認した。
(1) FAT32フォーマットのUSBドライブ(Eドライブにマウント)にISOの中身(Dドライブにマウント)を全部コピーするも install.wim のみエラー
(2) コマンドプロンプト開いて「 dism /split-image /imagefile:d:\sources\install.wim /swmfile:e:\sources\install.swm /filesize:4000」を実行
(3) e:\sources\ にinstall.swm とinstall2.swm ができていることを確認
(4) できたUSBメモリで起動