オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

Linuxのデバイスドライバの準備は大変

»

今日はLinuxで無線LANと格闘してました。

Wi
PC本体内蔵もあわせると、この写真だけで無線LANアンテナが4つもあります!

こういう作業をしていると、毎回困るのが、デバイスがどんどん新しくなってしまうため、デバイスドライバで非常に困ることですね。この点だけは(?)Windowsは楽です。何しろデバイスを買えばWindowsドライバは付いてきますから。最近はMacOS用ドライバも付いているものが増えてきましたが、Linuxはなかなかありません。そもそもLinuxは無線LANへの対応がいまいちということもありますが。。

Linuxでこの手のデバイスのドライバを探すには、まず使われているチップを調べることがポイントです。ところが、製品の箱にも説明書にもまずチップの情報は書かれていません。仕方ないので、
・WindowsやMacOSに装着してデバイスの情報を調べる
・Linuxに装着してカーネルメッセージやコマンドを駆使して調べる
・インターネットで調べる
ということをします。意外と面倒です。

チップが分かれば、チップメーカーからLinux用のドライバが提供されている場合があるので、これまたインターネットで調べます。どこにもないとかなり辛いことになります。

ドライバがソースで提供されていれば、Linuxでビルドしてみます。ドライバのビルドにはカーネルソースやカーネル構築用の環境が必要で、これまた実に時間がかかりますが準備します。無事にドライバがビルドできればいいのですが、結構カーネルのバージョンによってコンパイルが通らないこともあり、ソースを睨みながら問題点を見つけ、インターネットで修正方法を探したりします。とりあえずビルドが出来たら一安心です。

ところが、このままのドライバで認識してくれることは滅多になく、大抵はデバイスのIDをソースに追記する必要があります。ビルドし直してインストールして、ようやくデバイスを認識してくれるようになります。

が、認識してくれても動くとは限りません。チップが微妙に違っていたりすると、それっぽく認識してくれても動かないこともあります。

まあ、そんな苦労をしながら、試行錯誤することになるのですが、実はこんな苦労もまた楽しいものなのですよね(時間があれば、ですが)。。

Comment(0)