
Ubuntu日本語フォーラム
ログインしていません。
ubuntu 16.04でBROADCOMの無線LANのドライバが最近動作しなくなっていたが本日その理由が分かった。(ので動作するように直した)
動かなくなったデバイス Network controller: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter (rev 01)
カーネルバージョン 4.4.0-131-generic
現象
bcmwl-kernel-source がビルドに失敗する。
もしくはインストールしてもwlのドライバーがロードされない。
そこでwl.koを強制的にinsmodeすると
version magic '4.4.0-131-generic SMP mod_unload modversions ' should be '4.4.0-131-generic SMP mod_unload modversions retpoline '
みたいなメッセージがdmesgに出る。
BORADCOMにいってSTAのドライバーを持ってきてもできない。
理由
上にあるとおりversion magicが違う。retpoline にBROADCOMが対応していないらしい
その直し方はこれ
https://ubuntuforums.org/showthread.php … amp;page=2
vi /usr/src/linux-headers-`uname -r`/include/linux/vermagic.h
でファイルをひらいて
#ifdef RETPOLINE #define MODULE_VERMAGIC_RETPOLINE "retpoline "
を
/* #ifdef RETPOLINE */ #if 1 #define MODULE_VERMAGIC_RETPOLINE "retpoline "
に直す。
このあと
sudo dpkg-reconfigure bcmwl-kernel-source sudo service network-manager restart
カーネルヘッダーを書き直すのがちょっといけてないがこれで無線LANが使えるようになる。
早くBROADCOMに対応してほしい。
あとこの状態が何時までつづくのかしれないがカーネルがアップデートされる度にしないといけない。
オフライン
すみません。
上記
vi /usr/src/linux-headers-`uname -r`/include/linux/vermagic.h
は
sudo vi /usr/src/linux-headers-`uname -r`/include/linux/vermagic.h
の誤記でした。
なおvi は好きなエディタ(geditとか)で読み替えて下さい。
オフライン
さらに追記
上記修正はカーネル修正ってちょっといただけない修正がある。
それをやらない違う修正を今さっき思いついた。
それはコンパイルするときRETPOLINEのdefineを追加すればいいんでは?というもの
やってみたらうまく言った。
よってこれからはこの修正を推薦したい。
やりかた
1. aptのパッケージbcmwl-kernel-source のmakefileを見つける。
これは色々うるさいやり方はあるけど,安直に/usr/src/にいって bcmwl から始まるフォルダに入ってさがすので充分。
いまやると
/usr/src/bcmwl-6.30.223.271+bdcom/Makefile
だった。
2.バックアップしてからviで開く
sudo cp /usr/src/bcmwl-6.30.223.271+bdcom/Makefile /usr/src/bcmwl-6.30.223.271+bdcom/Makefile.bk sudo vi /usr/src/bcmwl-6.30.223.271+bdcom/Makefile
3.makefile 編集
127行目が
#EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR
です。
この行を編集するかその下に以下追加
EXTRA_CFLAGS += -DRETPOLINE
私は下に一行追加した。
よって127,128行が
#EXTRA_CFLAGS += -DBCMDBG_ASSERT -DBCMDBG_ERR EXTRA_CFLAGS += -DRETPOLINE
こうなった。
感で分かるかどうか知らないが#はコメント行です。
-DBCMDBG_ASSERT -DBCMDBG_ERR の意味は知らない。多分字面からデバッグメッセージを出すもの。
4.編集終了
このあとは上と同じく
sudo dpkg-reconfigure bcmwl-kernel-source sudo service network-manager restart
オフライン