LinuxでNICが認識しない場合に気合でデバイスドライバをインストールする

先日、新しいマシンを組み立てました。

 マザーボードはQ470。第10世代のCore i9を載せたハイスペック。そこにCentOSクリーンインストールし、DBサーバとして使おうと思っていました。CentOSのバージョンは7.3。

 

ところが・・・・

 

7.3のインストーラDVDを入れて起動し、インストーラのネットワーク設定画面で、目が点になりました。

 

NICを認識してない!!!

 

NICのないLinuxなど、肉抜きの牛丼です。なんとかしなければなりません。

今日はそんな奮闘記を。コマンドは青字、編集内容は緑字で。

 

 

まず、インストールは、もう、進めるしかありません。ネットワーク設定をスキップし、とりあえず、最小インストールを実行。

 

再起動した後にログインしましたところ、やはりNICは認識していませんでした。

 

lspci | grep Ethernet

Ethernet controller: Intel Corporation Ethernet Connection 0x4d

 

 

マザーボードの製造元サイトを見て、NICの型番を調べました。

intelのI219-LMというものらしい。

 

そこで、I219-Vのデバイスドライバググる

 

どうやらintelLinux用ドライバを提供してくれているようです。

 

downloadcenter.intel.com

 

 

ダウンロードして、コンパイルして、modprobeして、という流れです。

作業の前提として、以下3点。事前にやっときましょう。

SELinuxは無効化しておく

・Firewalldも無効化しておく

BIOSのSecureBootを無効化しておく

 

 

まずは、上のサイトからe1000e-3.8.4.tar.gzをダウンロードし、DVDに焼いて、CentOSに突っ込みます。

 

mount /dev/cdrom /media

cp /media/e1000e-3.8.4.tar.gz ~/

umount /media

 

 

次に、開発ツール類をyumでインストールします。

CentOSインストーラディスクをDVDトレイに入れて。

 

mount /dev/cdrom /media

 

DVDをyumリポジトリにします。

vi /etc/yum.repos.d/CentOS-Media.repo

[dvd]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
file:///media/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

 

保存します。

 

yum update

 

開発ツールをインストールします。

yum disablerepo=* enablerepo=dvd groupinstall "Development Tools"

これでたぶん全部入ると思いますが、環境によってはkernel-headersやkernel-develを個別インストールしないとかも。念のため。

 

yum disablerepo=* enablerepo=dvd install kernel-headers kernel-devel

 

ここで再起動する必要があります。

shutdown -r now

 

 

再起動したら、突っ込んだe1000eのソースをコンパイルして、rpmを作り、インストールします。make installしてもいいのですが、後々rpmにしといたほうがスマートなので、rpmbuildしましょう。

 

rpmbuild -tb --clean e1000e-3.8.4.tar.gz

cd rpmbuild/RPMS/x86_64/

rpm -ivh e1000e-3.8.4-1.x86_64.rpm

 

これで、ドライバがインストールされます。

 

 

次は、モジュールをinsmodします。

 

insmod /lib/modules/3.10.0-1160.25.1.el7.x86_64/updates/drivers/net/ethernet/intel/e1000e/e1000e.ko

 

ここで、required key not availableエラーが出ることがあります。なんと、BIOSでSecureBootを有効にしていると、デバイスへのアクセスを遮断するようです。BIOS画面でSecureBootを無効化し、また起動し、再度insmodしましょう。

 

 

insmodが正常にいったら、modprobe。

 

modprobe e1000e

 

 

 

nmcli device show

すると、なにやらeno1というデバイス名で認識されたようです。

 

 

しかし、/etc/sysconfig/network-scripts配下にifcfg-eno1は存在しません。

なので、手で作ります。ここでは固定IPの例。

まずは、NICのUUIDを調べます。

 

nmcli con

表示されたUUIDをコピペしときます。

 

 

vi /etc/sysconfig/network-scripts/ifcfg-eno1

TYPE="Ethernet"

BOOTPROTO="static"

IPV6INIT="no"

NAME="eno1"

UUID="上で調べたUUID文字列"

DEVICE="eno1"

ONBOOT="yes"

NETBOOT="yes"

DNS1=192.168.1.50

DOMAIN=local

IPADDR=192.168.1.3

NETMASK=255.255.255.0

GATEWAY=192.168.1.254

 

赤字のネットワークのパラメータは環境に応じて適宜変えてくださいね。

 

 

/etc/hostsも編集しときますか。

 

vi /etc/hosts

192.168.1.3 myhost myhost.local

 

 

ホスト名も編集しときましょう。

 

vi /etc/hostname

myhost.local

 

 

 

後は、ネットワークを再起動。

 

systemctl restart network

 

 

これでIPアドレスも付与されたはず。

 

ip a

 

 

おしまい。なかなか大変ですね、デバイスは。