【NUC10i5FNH】CentOS8で有線LAN接続できない場合の対処方法

## はじめに
NUC10i5FNHの有線LANアダプタは「Intel® Ethernet Connection I219-V」だが、
このドライバがCentOS8には初期インストールされていないため、手動で「e1000e-3.8.4」ドライバのインストールが必要

## 前提
- UEFI設定画面から「Secure Boot」を切っておく（切っておかないと外部ドライバをインストールできない）

【参考リンク】
[intel NUC 10 シリーズで セキュアブート (Secure Boot) を無効にする](https://www.ipentec.com/document/hardware-intel-bxnuc10i5fnk-disable-secure-boot)


- 「AppStream」と「BaseOS」のリポジトリを、セットアップ時のメディア内のディレクトリへ指定しておく（ネットワークが繋がっていないので、モジュールのインストールが必要となった時、yumやdnfが出来ないため。参考までに当方環境で作成したものをコピペ。）

```
$ view /etc/yum.repos.d/CentOS-localrepo.repo
[localrepo-BaseOS]
name=CentOS-localrepo-BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=file:///var/localrepo/BaseOS/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[localrepo-AppStream]
name=CentOS-localrepo-AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=file:///var/localrepo/AppStream/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
```
「/var/localrepo/」ディレクトリにメディアにあったファイルをコピーしているため、baseurlは「file:///var/localrepo/xxxx」としている。

当リポジトリを使用する際には以下コマンドにてdnfを行う（yumも同様）

```
# dnf install --disablerepo=\* --enablerepo=localrepo-* make
```

## 手順
- まずデバイス自体が認識されていることを確認

```
$ lspci | grep Ethernet
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (10) I219-V (rev 31)
```

- e1000eドライバが存在していないことを確認
 
```
$ dmesg | grep e1000e
```
（なおUbuntuの記事でこの時点でe1000eは存在しているがチェックサムエラーになる、というものを見つけた。そちらで困っている人はその記事を参照。
⇒[オンボードのEthernetコントローラ(I219-V)がUbuntuで動かない時の対処](https://blog.spiralray.net/archives/474)

- ネットが繋がる環境で「e1000e-3.8.4.tar.gz」をダウンロード
https://downloadcenter.intel.com/ja/download/15817/
（「Intel® Ethernet Connection I219-V」でググるとドライバは「e1000e-3.5.1.tar.gz」を使用する旨が見つかるが、NUC10i5FNHでは「# make install」時にエラーが発生した。注意。）

- USBやSDカードでCentOS8に持ってくる

- tar.gzを解凍

```
$ tar -zxvf e1000e03.5.1.tar.gz
```

- srcフォルダへ移動

```
$ cd ./e1000e-3.8.4.tar/e1000e-3.8.4/src
```

- インストール（makeコマンドが無い場合はyumなりdnfでインストールしておくこと）

```
$ sudo make install
```

- 既にインストールされているe1000eの削除（dmesgで確認したため恐らく空振るが念のため）

```
$ sudo rmmod e1000e
```

- ドライバの適用

```
$ sudo modprobe e1000e
```

- 再起動 
（`# systemctl restart NetworkManager`でも大丈夫だと思う）

```
# reboot
```

インタフェースが認識されていることを確認
（当方環境では「eno1」。この時点では接続されていないためまだipは振られてない）

```
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:69:7a:63:44:a5 brd ff:ff:ff:ff:ff:ff
```

- 「eno1」が切断されていることを確認

```
$ nmcli d
```

- 「eno1」を接続

```
$ nmcli device connect eno1
```

- DHCPでIPが振られていることを確認

```
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:69:7a:63:44:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.29/24 brd 192.168.1.255 scope global dynamic noprefixroute eno1
       valid_lft 83191sec preferred_lft 83191sec
    inet6 240d:1a:10a:e000:901:738f:d343:c10d/64 scope global dynamic noprefixroute
       valid_lft 10761sec preferred_lft 10761sec
    inet6 fe80::3295:d5ce:975c:f6a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
```

繋がった！

## 終わりに
Bluetoothや無線LANアダプタも同様に初期状態では使えない。
必要なかったので放置しているが、先述の「dmesg」コマンドでファームウェアが見つかりませんといったメッセージが見つかるのでそれを解消すれば使えそう。
なお恐らくUbuntu使えば最初から色々用意されているハズ

## 参考にしたページ
- [【Linux】対処法: 有線LANのドライバe1000eが動作しない。](http://datyotosanpo.blog.fc2.com/blog-entry-190.html?id=VDPD#VDPD)
- [オンボードのEthernetコントローラ(I219-V)がUbuntuで動かない時の対処]
(https://blog.spiralray.net/archives/474)
- [yumリポジトリをローカルで作成する]
(https://itbasesta.com/local-repository)