mishimaの日記: Linuxの無線LANふたたび 4
ちっちゃいLinux Boxに無線LANアダプタを付けてルータにしてたのだけど、そのマシンのHDDが死んでしまったらしく動かなくなった。
そこで新しい小型PCを購入(最近はOSレスで2万でそこそこのものが買えるんですね)、
古いマシンで使っていた BAFFALO の無線LANアダプタ(WI-U2-433DHP)を付け替えてみたんだけど…
- OS が Debian buster になってカーネルが 4.19 に上がった
- https://github.com/diederikdehaas/rtl8812AU.git このソースだとポインタの型が変更になってビルドもできない。そこだけローカルに変更を入れてビルドだけは通してみたけど…動かない(hostapd を動かしたらOSがハングした)。
- rtl8821のドライバはだいたい rtl8812 とリポジトリに入ってることが多いので、GitHubで「rtl8812au」で検索してみたけど…たくさんあって困る。
- いくつかDLしてビルドを試してみるけど、基本的に rtl8812 中心でメンテされているようで、全然ビルドできない。
- じゃあrtl8821中心でメンテされているものを…と思ってGitHubで「rtl8821au」を検索すると…これもそこそこたくさん出てくる
- スターの多いものから順に試してみる
- https://github.com/ulli-kroll/rtl8821au.git これもビルドできない。かなり多くのエラーが出たのでとりあえずあきらめる。
- https://github.com/minjae/rtl8821au.git これは以前同様の手順ですんなりビルドできた。
- git clone https://github.com/minjae/rtl8821au.git /usr/src/minjae_rtl8821au-2019.01.23
- usb_intf.c に以下を追記 {USB_DEVICE(0x0411, 0x029b),.driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */
- 他のリポジトリにある dkms.conf をコピー。
- dkms install minjae_rtl8821au/2019.01.23
- しかしmodprobe で組み込もうとすると「Unknown symbol __vfs_read」のエラーが。エラーメッセージでググると「sed -i -e "s/__vfs_read/kernel_read/" os_dep/osdep_service.c でイケる」という情報があったので再トライ。今度はちゃんと組み込み成功。
- NICの名前を見ると… enXXXXXXXXXXXX みたいな変な名前。MACアドレス? しかもOS再起動や rmmod + modprobe のたびに名前が変わる。ネットワークの設定が書けないじゃん!
- どうも Debian buster から NIC の名称に予測可能な名前 を採用したらしい。なぜかはわからないけどアダプタから固定のMACアドレスが取得できないみたいなので、その影響でNICの名前が毎回違ってしまう、と。
- udevで固定化させる方法を検討中←いまここ
なるほど、Linuxの無線LANのドライバ周りは確かに苦労するわ…
ただ、今度の新しいマシンはSSDになったのでビルド等についてはけっこう快適です。