2013
05
24

ubuntu 13.04 / kernel-3.8 以降で r8101 ドライバを使う

rtl8101l_ethernet_controller.jpg

ubuntu 13.04 もしくはカーネル 3.8 系へ更新した場合、現時点では任意選択のドライバやアプリがインストールや dkms (更新)に失敗する場合が多い。
これは ubuntu に限らず、 Linux kernel3.8 共通の事象ですね。

今回はその際に、 Realtek RTL8101E 用ドライバを使う方法を記してみます。

同じ蟹チップでも、ギガニな RTL8111 系( r8168 ドライバ)の情報は多いけど、 100M NIC な RTL81xx 系は殆ど見掛けない気がしました。
私も激安 M/B オンボードな同ユーザーですが・・・利用者は少なくないですよね?

○取り敢えず公式ドライバの入手先
Realtek Software: Drivers & Utilities
http://www.realtek.com.tw/Downloads/downloadsView.aspx?Langid=1&PNid=14&PFid=7&Level=5&Conn=4&DownTypeID=3&GetDown=false

現時点の(要パッチ対応)バージョンは、 2012/9/3 付の 1.023.00 でした。
恐らくですが、やがては kernel3.8 対応バージョンへ更新されるでしょう。


○原因とトラブル例
ド初心者なので、詳細は思いっきり端折ります。
原因: kernel3.8 系での仕様変更。

で、例えば新規インストールの場合
cmd:
tar jxvf r8101-1.023.00.tar.bz2 ← ドライバ展開
cd r8101-1.023.00 ← ディレクリ移動
./autorun.sh ← インストール実行

しても
「エラー: 関数 ‘__devexit_p’ の暗黙的な宣言です」
「警告: ‘rtl8101_ 〜 ’ が定義されましたが使用されません」
といった文言が並んで、インストールに失敗(コンパイルエラー)します。

また linux では、 dkms という仕組みによってカーネル更新時にドライバ等が再構成されるのですが、この連携動作にも失敗します。
⇒ 3.8 以前のカーネル更新では受け継がれていた更新も、ここでは(ひっそり)失敗します。


○パッチによる対処法
対処法は幾つかあるようですが、ここではパッチ適用による対処をば。
Google 先生のご指南に従い、参照したブログは以下。

Blog domo (ポーランド語です)
r8101-1.023.00 compiling in Kernel > 3.8.0 does not compile – solution
http://blog.pdomo.net/index.php/2013/04/06/r8168-8-035-00-compiling-in-kernel-3-8-0-does-not-compile-solution/
内容をざっくり言うと対処パッチをドライバソースに充て、通常インストール対応させます。

で、上記で紹介されてたパッチのソースが以下。
r8101-1.023.00-3.8.patch
https://build.opensuse.org/package/view_file?expand=1&file=r8101-1.023.00-3.8.patch&package=r8101&project=home%3AAkoellh%3AKernelmodules
kernel38_patch_code.jpg

この内容を gedit などエディタにコピペ、 r8101-1.023.00-3.8.patch 等の名称で
展開したドライバフォルダ内 r8101-1.023.00/src に入れときます。
kernel38_patch.jpg
(画像はインストール完了後のファイル配置になってます)

同ディレクトリで端末から
cmd:
patch < r8101-1.023.00-3.8.patch

これでパッチ適用、あとは通常インストール
cmd:
./autorun.sh

インストールと共に標準 r8169 ドライバとの入れ替えも完了。
/usr/src/r8101-1.023.00 にも dkms.conf と共に生成されてるハズです。
ちなみに私の環境は kernel3.9.0 に更新済なので、たぶん 3.9 系も大丈夫でしょう。


○ Linux ドライバって・・・
普及チップにむしろ反するように、地雷性の高い r8169 標準ドライバの問題ってユーザーとしては奇妙というか不思議だったのですが・・・
今回のコンパイルエラーに際し、 r8101_n.c の中身を眺めていたら
mention_r8101_nc.jpg
なんとなく・・・なるほど。
Realtek ドライバって、 2003 年頃で基本の開発終了してる存在なんですね。
PC Linux が、何年経っても一般ユーザー受けしない理由が良く判った気がしました。


○オマケ RTL8111 系( r8168 )の場合
さすがに普及度の高い RTL8111 系だと、本家情報も多い。
むしろ疑問なのは、コレが ubuntu 本体なり明快なドキュメントに組み込まれないことかな。

カーネル 3.8 対応版ドライバソース
“r8168” 8.035.00-1ubuntu1 source package in Ubuntu
https://launchpad.net/ubuntu/+source/r8168/8.035.00-1ubuntu1

同 dkms 対応パッケージ
r8168-dkms 8.035.00-1ubuntu1 (amd64 binary) in ubuntu raring
https://launchpad.net/ubuntu/raring/amd64/r8168-dkms/8.035.00-1ubuntu1


面倒だなぁと思う場合は、やはり Intel NIC に変えるのが手っ取り早いでしょうね。
デスクトップ機なら、三千円ぐらいの投資で万事解決かと。

インテル Gigabit CT Desktop Adapter EXPI9301CT
インテル (2012-08-16)
売り上げランキング: 838
スポンサーサイト

«  | HOME |  »