Realtek ネットワークドライバをUbuntuにインストール　備忘録

# 概要
自作PCを組んだ時、マザボ(ASUS製)のRealtek製オンボード有線LANをUbuntuが認識しない状態であった
そこで有線LANが開通するまでの手順を残す
今後もUbuntuインストール後、有線でネットにつながらない場合もあると思うし…

- 実施時期: 2020年12月
- OS: Ubuntu18.04LTS
- Chipset: B550

# build-essentialのインストール（オフライン）
ドライバをインストールするには対象PCにコンパイル環境(build-essential)がインストールされてなければならない
普通なら "sudo apt install build-essential" で解決するが、対象PCはネットに繋がらないので、これはできない
なので、
1. 対象PCでbuild-essentialに必要なdebファイルリスト(URL)を作る
2. ネットに繋がるもう一台のPCで同リストの全debファイルをダウンロード
3. ダウントードしたdebファイルを対象PCにUSBメモリを使ってコピー
4. 対象PCで全debファイルを一括インストール
という手順となる

対象PCで下記を打つと、そのパケージに必要なdebファイルのURLをリスト出力してくれる
（下記の'build-essential'のところはapt install するパケージ名）

```Terminal
sudo apt-get --print-uris install build-essential | cut -d\' -f2 | grep http:// > urls.txt
```
"no installation candidate"とエラーが出た場合は、Software & UpdatesのDownloads from に'Main server'を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205257/0cdef34d-9b75-5bd3-59db-bdd1a2ff6884.png)
ちなみに、今回出力されたurls.txtは下記だった。

http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.27-3ubuntu1.2_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.15.0-112.113_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.27-3ubuntu1.2_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/libitm1_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/libatomic1_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/libasan4_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/liblsan0_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/libtsan0_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/libubsan0_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/libcilkrts5_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/libmpx2_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-8/libquadmath0_8.4.0-1ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/libgcc-7-dev_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/gcc-7_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_7.4.0-1ubuntu2.3_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/libstdc++-7-dev_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-7/g++-7_7.5.0-3ubuntu1~18.04_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_7.4.0-1ubuntu2.3_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-9.1ubuntu1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.19.0.5ubuntu2.3_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.4ubuntu1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.22-2ubuntu1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.22-2ubuntu1_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-5_amd64.deb
http://archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb
http://archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.15-1_all.deb

このurls.txtファイルをUSBメモリにコピーしネットにつながるPCに持っていき、wgetで全debファイルをダウンロードする。
ダウンロードしたdebファイルは１フォルダ（例えばdebフォルダ）に入れて、対象PCにコピーする（例えばDownloadsフォルダ）
そのフォルダに移動し、dpkgでdebファイルを展開・インストールしてくれる

```Terminal
cd Downloads/deb
sudo dpkg -i *.deb
```

なお、上から２番めのlinux-libc-dev_4.15.0-112.113_amd64.debはリンクが切れててwgetできなかったのでブラウザ使って[ここ](https://launchpad.net/~canonical-kernel-team/+archive/ubuntu/ppa2/+build/19570687)からダウンロードした。

[調べる](https://askubuntu.com/questions/974/how-can-i-install-software-or-packages-without-internet-offline?noredirect=1&lq=1)と、オフラインでパケージをインストール方法はいくつかあるみたいだけど、今回みたいに一時的にオフラインとなる場合は多分これが一番簡単だと思う。

#### 注意!!
ライブUSBのpoolフォルダに、build-essentialのdebファイルがあるが、これをdpkgでインストールしないこと！
他の多くの（上記）パケージに依存しているので、あれがないこれがないとエラーが出て、結果立ち行かなくなりapt自体が壊れてしまう（体験談）

# Realtek Ethernet driverインストール
### ドライバダウンロード

lspclコマンドでオンボードLANがRealtek R8125であることを確認する

```Terminal
lspci | grep net
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 04)
```
ネットにつながるPCで、[ここ](https://www.realtek.com/ja/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-pci-express-software)から下図一番上の"2.5G Ethernet LINUX driver..."をダウンロードし、USBメモリ等でUbuntuの任意のフォルダにコピーする
小生は無線LANを接続した状態で行った

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/205257/a69c311d-24f9-bf71-ce37-0385b8905453.png)

ターミナルで、そのパスに移動し解凍しておく

```Terminal
tar -jxvf r8125-9.004.01.tar.bz2
```

### インストール
[ここ](https://askubuntu.com/questions/1263363/2-5g-ethernet-linux-driver-r8125-installation-guide)に手順があり、その通りに行うとうまくいった
行った手順は下記の通り

#### 1. dkms.confファイル作成
上で解凍したフォルダのパス(Downloads/r8125-9.004.01など)に移動しvimで新しいファイルを作成する
テキストエディタでもOK。中身は下記をコピペする
但し、PACKAGE_VERSIONはダウンロードしたドライバのそれに書き換えること
このファイルにより今後カーネルの更新を行ってもドライバの再登録を行わなくて済むらしい
逆に言うと、これのファイルがないといつの間にかオンボードLANが使用できない状態になるかも

```Terminal
PACKAGE_NAME="r8125"
PACKAGE_VERSION="9.004.01"
BUILT_MODULE_NAME[0]="$PACKAGE_NAME"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="YES"
REMAKE_INITRD="YES"
CLEAN="rm src/@PKGNAME@.ko src/*.o || true"
```
ファイル名をdkms.confとし、今のパスに保存する
保存後、念のため権限を変更した

```Terminal
sudo chmod 777 dkms.conf
```
#### 2. 古いドライバの削除（もしあれば）
もし、すでに古いバージョンのドライバがインストールされていたら下記を実行する
もちろんバージョン番号はその古いバージョンに変更する

```Terminal
sudo dkms remove r8125/9.002.02 --all
sudo rm -rf /usr/src/r81259.002.02/
sudo dkms status
```

#### 3. ドライバ登録
このフォルダを/usr/srcに移動し、同フォルダ内のautorun.shでドライバを登録する
ここでもバージョンは上記同様に変更する

```Terminal
cd
sudo cp -R Downloads/r8125-9.004.01/ /usr/src/r8125-9.004.01
cd /usr/src/r8125-9.004.01
sudo bash autorun.sh
```
再起動するとまたネットワークに繋げなくなった
そここで下記を実施

```Terminal
cd /usr/src/r8125-9.004.01
sudo bash autorun.sh      # これでネットにつながる
sudo apt install dkms
sudo dkms add -m r8125 -v 9.004.01  # ドライバをdkmsで登録
```
最後の処理はautorun.shに入っているかと思ったがどうもそうではないみたい
評判の悪いプリインストールのR8169もmodからも削除しておく

```Terminal
/bin/lsmod | grep r81
r8125                 151552  0
r8169                  90112  0
sudo rmmod r8169      # 削除
```
実施後はまったく順調

## その他
インストール直後のUbuntuは16も18も20も、手持ちのUSB wifiアダプタは認識してネットにつながるので、そういうひとにはこれは無縁の作業

以上