Linux 4.4.x でIntel PRO/1000 PT Dual Port Server Adapter を利用する

Linux 4.4.x でIntel PRO/1000 PT Dual Port Server Adapter を利用する

スポンサーリンク

Linux 4.4.x でIntel PRO/1000 PT Dual Port Server Adapter を利用する

NICといえばIntelと言われていた時代はとうに過ぎ去ってしまいましたが、栄華を極めていたころのNICが手ごろな価格で手に入るようになったため、サーバー用のNICとして採用する方が依然として多い状態が続いています。

僕もRyzenを使ったWEBサーバー用にIntel PRO/1000 PT Dual Port Server Adapterを採用することにしたのですが、Linux 2.6の頃と比べて、NICを認識させるのに非常に苦労しました。

今回はその備忘録として、この記事に対処方法をまとめてみます。

ドライバのビルドとインストール

まずは、Intel NIC用のドライバをビルドする必要があるので、まずはここから「e1000e-3.3.6.tar.gz」をダウンロードしてきます。

ダウンロードしたドライバを下記コマンドで展開します。

$ tar zxf e1000e-3.3.6.tar.gz
$ sudo mv e1000e-3.3.6/ /usr/local/src

次に、make、make installを行いドライバのインストールを行います。

$ cd /usr/local/src/e1000e-3.3.6/src
$ sudo make
$ sudo make install

これでドライバのインストールが完了しました。

本来であればmodprobeを叩くだけなのに・・・

ドライバのインストールが完了したら、modprobeを叩いて、initramfsを再作成するだけで、認識されるはずなのですが、どうにもうまくいきません。

そこで、脳筋的解決策を採用することにしました。

まずは、modprobeを実行してドライバを読み込み、initramfsの再作成を行います。

$ sudo modprobe -r e1000e
$ sudo update-initramfs -u

次に、boot時に無理やり「insmod e1000e」を実行するように、grub2のコンフィグを編集します。

grub2は、grub.cfgを直接編集するのではなく、/etc/grub.d/内のスクリプトを実行して、自動生成されるようになっています。
そこで、/etc/grub.d内の10_linuxを編集して、「insmod e1000e」がgrub.cfgに追加されるように編集します。

$ sudo cd /etc/grub.d/
$ sudo vim 10_linux

10_linux内の下記の記述を探します。(Ubuntu Server 16.04 LTSであれば153行目付近)

  if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
     ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
      echo "    gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
  fi

上記記述を見つけたら、fiの下行に以下の内容を追記します。

  echo "        insmod e1000e" | sed "s/^/$submenu_indentation/"

追記が完了したら、保存を行いgrub.cfgの更新を下記コマンドで行います。

$ sudo update-grub

これで準備が完了しましたので、再起動を行います。

起動時に/boot/grub/x86_64-efi/e1000e.mod が見つからないと表示されますが、そのまま放置すればLinuxのブートが始まります。

起動完了後、「ip a」コマンドを叩いて無事にIntel PRO/1000 PT Dual Port Server Adapterが見つかれば成功です。

まとめ

かなり強引に解決させているため、もっとスマートな方法があるかもしれませんが、ひとまずこの対処で問題無く動くようになったので、これでひとまず様子を見ていますが、今のところ問題無く動作しています。

海外のフォーラムなども参考にしたのですがどれも解決に至らず、もう無理矢理解決させてしまえ、と思い今回の対処を取ってみました。

他にもっとスマートに解決できる方法があれば、こっそりと教えて頂けると幸いです・・・