旧型ThinkPadのネットワークアダプタRTL8821CEでCentOS 8にwifi設定を試みた話

背景

  1. 深夜1時過ぎ, ローカルサーバ1が不明な原因で接続不良を起こす.
  2. CentOS 8系でローカルサーバ2を構築開始.
  3. OSの標準的なインストール自体は完了.
  4. ThinkPad (E470) 標準搭載のWirelessネットワークアダプタ RTL8821CE に対応するドライバが公式で提供されて無いことが判明.
  5. 3rd partyのgitレポジトリが公開されてることを知り, 早速落としてくる.[1]https://github.com/tomaspinho/rtl8821ce.git
  6. 手順に従いビルドする, がコンパイルエラー発生.
  7. ソースコードを修正しコンパイル.
  8. 無事コンパイルが通りモジュール読み込み.
  9. Wirelessネットワークの設定開始.

手順6~9の記録を取っておくのが主旨.

手順

コンパイルに向けた準備

全体の流れとしてはこちらを参考にしたが, 不足があったり (広告が多くて) ページが見づらいので全て記録する.

とにかくネットワークへ接続

このデバイスが無くて困って手順を見ているので, ネットワークの設定自体出来ていない可能性が高い. よってethernetアダプタ経由でのネットワーク接続環境がある仮定だけして有線接続設定手順を記録するのが良いだろう. nmcli / nmtui どちらを使っても可能だが, nmcliでの設定方法を記載:

# 認識しているネットワークデバイス表示
nmcli device

##
# 固定IP設定
##

# 固定IP 192.168.11.176/24
sudo nmcli connection modify enp4s0 ipv4.address 192.168.11.176/24
# デフォルトゲートウェイ 192.168.11.1
sudo nmcli connection modify enp4s0 ipv4.gateway 192.168.11.1
# dns 192.168.11.1
sudo nmcli connection modify enp4s0 ipv4.dns 192.168.11.1
# デバイスを固定設定 
sudo nmcli connection modify enp4s0 ipv4.method manual

##
# 自動接続
##

# 再起動時自動接続設定
sudo nmcli connection modify enp4s0 connection.autoconnect yes
# 設定適用確認
sudo nmcli connection show enp4s0

# 接続
nmcli connection up enp4s0

必須パッケージをインストール

# 基本パッケージを更新/インストール
sudo yum install -y
sudo dnf update && sudo dnf upgrade

# リブート
sudo reboot

# コンパイル用ツールインストール
sudo dnf groupinstall "Development Tools"

# 多くのEPELパッケージに必要な開発ツールを含むPowerToolsレポジトリを有効化
sudo dnf in dnf-plugins-core
sudo yum config-manager --set-enabled powertools

# dkms等のEPELレポジトリから来ているパッケージをCentOS 8でインストールするために必要
sudo dnf install epel-release

# tomaspinho/rtl8821ce のコンパイルに必要なパッケージ
sudo dnf in dkms kernel-headers kernel-devel elfutils-libelf-devel unzip git

ドライバのインストールまで

githubレポジトリからソースをダウンロード/修正/コンパイル

修正はこのissueを参考にしたが, このまま適用するだけではコンパイルが通らなかったので, 以下のようにする:

# gitレポジトリからソースコード取得
git clone https://github.com/tomaspinho/rtl8821ce.git
cd ./rtl8821ce

# バグのワークアラウンド
sed -i 's/KERNEL_VERSION(5, 8, 0)/KERNEL_VERSION(5, 8, 0) || RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8, 0)/g' ./os_dep/linux/ioctl_cfg80211.c

# コンパイル・配置
sudo ./dkms-install.sh

ドライバインストール/読み込み

sudo modprobe 8821ce
sudo reboot now

wirelessに対しても固定IP, SSID, passwordの設定等行ったが, 接続できず, 現状stackexchangeの記事と同じ現象.
ネットワーク以外の設定は終わっているので最悪有線で置いておこうと思えばできるが, さてどうしよう.

参照

CentOS公式のWirelessサポート状況