OSの入れ替え (Wi-Fiドライバ関連)のあれこれ

見つけてきた Stick PCで動く(はずの) Ubuntu 16.04は、何度やってみてもインストールのある段階から既存の古い Ubuntu 14.04LTSのユーザーランドが動作してしまい、条件を変えてかなりの回数チャレンジしたが、まともにインストールできなかった。 :-(

ここで冷静に考えてみれば、OSの入れ替えでネックとなっているのは Wi-Fiのドライバだけなので、ドライバのソースコードがあれば自力でどうにでもなるはず。
それがあれば、Ubuntu flavorの中でも軽量な Lubuntu 16.04LTSを入れて、どうにかしてそのドライバを入れてやればいいという事になるので、その方向に方針変更。

いろいろ調べて、この Stick PCの Wi-Fiは Realtek RTL8723bsで Bluetooth兼用のチップであることが判明し、お目当てのドライバは、

https://github.com/hadess/rtl8723as.git

にあることがわかった。

また、Lubuntuの ISOイメージは

http://cdimage.ubuntu.com/lubuntu/releases/16.04/release/

から落として手持ちの USBメモリに書き込み、準備OK。

この Lubuntuインストールイメージには対応するドライバが入ってないのでインストール時にはネットワークが使えない。そうするとドライバのソースコードや makeなどの開発ツールもインストールできないので、仮想環境に同じ OSの VMを作って、そこで
* 開発ツールの追加
* ドライバのソースコードのダウンロード
* ドライバのコンパイル(make installの直前まで)
までを実行し、さらに make -n installで installターゲット処理時に何が行われるのかを把握したうえで、できあがったカーネルモジュールを含むソースコード一式を インストーラの USBメモリに書き込んで準備完了。

まずはその USBメモリから通常どおりインストールした後で、USBメモリをマウントし、ドライバとファームウェアをコピーして modprobeを実行して、見事に Wi-Fiが動作した。 :-)
あとは大急ぎで IPv4設定をしてから、
* 言語設定の追加
* 開発ツールのインストール
* ドライバのソースコードの再取得
を実行し、いつでもドライバを再作成できるようにして一件落着。 :-)

と、ここまではよかったのだが、(評判どおり? ^^;)Wi-Fiの動作がとても不安定。
特に、送信ではなく受信が極端に不安定で、時間が経つにつれて接続が切れてしまうことも。
なんだか、この Stick PC自体が「絶対に買ってはいけないxxx」の類なのかもしれないという気がしてきた... :-(

(付録) Realtek RTL8723bsドライバのインストール手順


===========================
母艦での作業
===========================
$ sudo apt-get install build-essential linux-headers-generic git
$ mkdir -p ~/var/Develop && cd ~/var/Develop
$ git clone https://github.com/hadess/rtl8723as.git
$ cd rtl8723as
$ make
$ sudo make -n install (インストール内容のチェック) --- 以下のように表示されるはず
install -p -m 644 r8723bs.ko /lib/modules/4.4.0-21-generic/kernel/drivers/net/wireless/
mkdir -p /lib/firmware/rtlwifi/
cp -n rtl8723bs_nic.bin /lib/firmware/rtlwifi/rtl8723bs_nic.bin
cp -n rtl8723bs_wowlan.bin /lib/firmware/rtlwifi/rtl8723bs_wowlan.bin
/sbin/depmod -a 4.4.0-21-generic

rtl8723as/ 配下を丸ごと USBメモリにコピー。

===========================
Stick PCでの作業
===========================

$ mkdir -p ~/var/Develop && cd ~/var/Develop

USBメモリから rtl8723as/ 配下をコピー

$ cd rtl8723as
$ sudo su -
... 以下、本来 make installで実行されるべきものを手で実行 (makeが入っていないので) ...
# install -p -m 644 r8723bs.ko /lib/modules/4.4.0-21-generic/kernel/drivers/net/wireless/
# mkdir -p /lib/firmware/rtlwifi/
# cp -n rtl8723bs_nic.bin /lib/firmware/rtlwifi/rtl8723bs_nic.bin
# cp -n rtl8723bs_wowlan.bin /lib/firmware/rtlwifi/rtl8723bs_wowlan.bin
# /sbin/depmod -a 4.4.0-21-generic

デバイスドライバのロードとデバイスの認識確認
# depmod -a
# modprobe r8723bs

デバイスが認識されたら、GUIで IPv4設定をして接続 OK。
この時に、[General]タブの[All users may connect to this network]にチェックを入れる事。
(チェック入っていないと、ログインしない限り Netが activeにならない。)

$ sudo apt-get install ssh build-essential linux-headers-generic git
↑ これをやっておかないと後で updateかけたら最後、ネットワークがつながらなくなる。

あと「言語設定」を実行しておく。
↑ OSインストール時にネットワークからのダウンロードを必要とするので実行されていない。