Windows Serverにネットワークアダプタのドライバがインストールできない
古いファイルサーバが手狭になってきたので新しいサーバーを導入することにしました.構成は以下のとおり
- CPU: Xeon E3-1240L v3
- M/B: AsRock Z87 Extreme11/ac
- OS: Windows Server 2012R2
- 以下略
M/BのZ87 Extreme11/acですが,最近すっかり普通のM/Bメーカーになってしまった感じのするAsRockが久々に発売した変態M/B.SATAが22ポートもついてます.自宅サーバーにうってつけのM/Bですが,ネットワークアダプタがWindows Serverをサポートしていないのか,M/Bに付属のCDを使ってもドライバをインストールできません.
注意
この操作はサポート外なので動作保証されません.自己責任でお願いします.
準備
UEFIでセキュアブートをONにしているとWindowsをテストモードで起動できませんのでセキュアブートをOFFにしてください.設定方法はM/Bのメーカー依存なので省略します.
M/Bに乗っているコンポーネントを確認
ともかくネットワークに繋がないとRDPも使えないので早急に解決しないといけません.まずはM/Bに乗っているコンポーネントを確認します.M/B付属のマニュアルによると
- Intel I217-V
- Intel I211AT
- Broadcom製の無線LAN
が搭載されているようです.サーバーなのでとりあえず無線LANは置いといて,Intelのイーサネットアダプタのドライバをインストールすることにします.
IntelまたはAsRockのホームページからドライバをダウンロードします.zipファイルもしくは自己解凍exeで,中身はこんな感じになってます.
今回はギガビットイーサネットアダプタでOSはWindows Serverなので PRO1000 > Winx64 > NDIS646 とフォルダを辿ると
こんなファイルが見つかると思います.ここからM/Bに搭載されているイーサネットアダプタの構成設定を探して書き換えていきます.
INFファイルの書き換え
デバイスマネージャーから目的のデバイスを右クリックして[プロパティ]を表示します(画像はドライバのインストール後ですが,インストールする前でもデバイスのIDは見れます).
デバイスPCI\VEN_8086\DEV_153B...っていう記述が見えます.VEN_8086はお察しの通りIntelのことで,次のDEV_153Bがこのデバイスを表しています(多分)ので,このDEV_153Bについての記述をINFファイルの中から探します.今回はe1d64x64.infにそれらしいものが見つかりました.
[Manufacturer]
%Intel% = Intel, NTamd64.6.3, NTamd64.6.3.1
[ControlFlags]
ExcludeFromSelect = \
PCI\VEN_8086&DEV_153A,\
PCI\VEN_8086&DEV_153B
[Intel]
[Intel.NTamd64.6.3.1]
; DisplayName Section DeviceID
; ----------- ------- --------
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A&SUBSYS_00008086
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A&SUBSYS_00011179
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00008086
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_00008086
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_90BA104D
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_00008086
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_00011179
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_90BA104D
[Intel.NTamd64.6.3]
; DisplayName Section DeviceID
; ----------- ------- --------
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A&SUBSYS_00008086
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A&SUBSYS_00008086
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A&SUBSYS_00011179
上の[Intel.NTamd64.6.3.1]がWindows8.1に関する記述で(多分)下の[Intel.NTamd64.6.3]がWindows Server2012R2に関する記述です(多分).それらしい行を上のセクションからパクってやります.
[Manufacturer]
%Intel% = Intel, NTamd64.6.3, NTamd64.6.3.1
[ControlFlags]
ExcludeFromSelect = \
PCI\VEN_8086&DEV_153A,\
PCI\VEN_8086&DEV_153B
[Intel]
[Intel.NTamd64.6.3.1]
; DisplayName Section DeviceID
; ----------- ------- --------
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A&SUBSYS_00008086
%E153ANC.DeviceDesc% = E153A.6.3.1, PCI\VEN_8086&DEV_153A&SUBSYS_00011179
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00008086
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_00008086
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A.6.3.1, PCI\VEN_8086&DEV_155A&SUBSYS_90BA104D
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_00008086
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_00011179
%E1559NC.DeviceDesc% = E1559.6.3.1, PCI\VEN_8086&DEV_1559&SUBSYS_90BA104D
[Intel.NTamd64.6.3]
; DisplayName Section DeviceID
; ----------- ------- --------
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A&SUBSYS_00008086
%E153ANC.DeviceDesc% = E153A, PCI\VEN_8086&DEV_153A&SUBSYS_00011179
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A&SUBSYS_00008086
%E155ANC.DeviceDesc% = E155A, PCI\VEN_8086&DEV_155A&SUBSYS_00011179
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00008086
%E153BNC.DeviceDesc% = E153B.6.3.1, PCI\VEN_8086&DEV_153B&SUBSYS_00011179
えいやっと
Windowsをテストモードで再起動してドライバをインストールする
cmdかpowershellで
> bcdedit -set loadoptions DISABLE_INTEGRITY_CHECKS
> bcdedit -set TESTSIGNING on
を実行します.UEFIのセキュアブートがONになっているとここでエラーになりますので注意してください.2つのコマンドを実行したらWindowsを再起動します.
再起動したらデバイスマネージャーから目的のデバイスを右クリックして[ドライバー ソフトウェアの更新]をクリックします.[コンピュータを参照してドライバー ソフトウェアを検索します(R)]を選択して先ほどのファイルのあるフォルダを選択してインストールします.Windowsからいろいろ文句を言ってきますが,自己責任であることを自覚しつつ警告を無視してインストールすれば完了です.
他のデバイスに対しても同様にインストールできると思います.
やったぜ
一度ドライバをインストールしてしまえばIntelの通常のインストーラが使えるようになるので,最新版に更新するといいと思います.
作業が終わったら
> bcdedit -set loadoptions ENABLE_INTEGRITY_CHECKS
> bcdedit -set TESTSIGNING off
を実行してドライバの検証をONにしてください.
デバイスマネージャーに"不明なデバイス"が表示される場合
デバイスマネージャーから不明なデバイスのプロパティを表示し,さきほどの「DEV_153B」にあたる部分をGoogle先生に尋ねれば何のデバイスなのか判明すると思います.これは経験則ですが,ほとんどの場合はチップセットのドライバをインストールすると消えます.
ドライバをインストールできないもの
BluetoothはWindows Serverでは利用できません.ドライバをインストールしても再起動時にエラーを吐きます.
最後に
Windows Serverは学生に対してはDreamSparkを通じて無償で提供されていますので,ハードウェア周りのサポートなどで面倒な部分もありますが,気が向いたら学習用に試してみてもいいのではないでしょうか.