ドライバはどうやって調べるの?
編集S:でだ。Windowsのデバイスマネージャだとドライバを読み込ませたりできるけど、あれができないのはなんで?
あわしろいくや:すでにLinuxカーネル本体に大部分が含まれているから必要ない、というのが答えですな。
ミズノ:言い換えると、Windowsだと追加でドライバ入れないといけないけど、Linuxではすでにドライバがありったけインストール済みだから、というのが基本的な答えですね。
瀬尾浩史:追加でインストールしないといけないこともあるけど、少なくとも「カーネルリリース時点で準備されているドライバ」はありったけ入っているペン。
さかもっちー:あとは、ドライバのあり方がいろいろと違うから、というのもありますね。
編集S:うぬ。そなの?
hito:えーと、世の中のハードウェアには基本的に、「デバイスID」というのが割り振られていますです。いわゆるPCIデバイスの場合は、っていう限定がついてますけど。
ミズノ:たとえばIntel製だと8086っていうベンダIDに加えて、枝番がくっついてる感じですね。で、これはハードウェアの種類ごとに別のものがついてます。
hito:で、ドライバは基本的には、このデバイスIDに応じてハードウェアを識別して動作しますです。このドライバはこのデバイスIDにマッチする、みたいな。Linuxだとdepmod -aで更新されるファイルにそんなのが書いてあるんですけども。
編集S:ほうほう。
ミズノ:Linuxの基本的な考え方は、「そーいうので自動的にドライバロードできるんだから、事前にOS側でデータベース準備して勝手にドライバ入れるよー」っていうやりかたです。
小林:Windowsだとそうではなくて、「ハードウェアベンダーがドライバ付けて売ってよ、OS側でやろうとするとパンクするから」というようなアプローチに見えますね。
hito:まあ、Linuxだとカーネルバージョンごとにドライバをリビルドする必要があるのに対して、Windowsだとバイナリドライバをとにかく添付しておけば、Windowsのカーネルバージョンとはあまり関係なくドライバをロードできることとか、そもそものエコシステムの大きさの差とかいろいろ周辺環境の差もありますね。
編集S:なんかよく分かんないんで、セオペン先生まとめてください。
瀬尾浩史:またムチャぶりペン!?
やまね:でもこの先生はムチャぶりに乗るんだこれが。
さかもっちー:外堀が……外堀がうめられていく……。
瀬尾浩史:くっ。「Linuxは本体にドライバ添付」「Windowsはハードウェアにドライバ添付」ってことだけ知っておけばきっと大丈夫なのペン。
さかもっちー:そのうち壁にぶつかるので、そこでここを読めばOK、と。
編集S:ふむー。そういえば、読み込まれてるドライバを一覧できるらしいけど。
さかもっちー:「lsmod」というコマンドを使ってください。
hito:まあ今時のOSだとどれでもそうなんですが、「あるデバイス用のドライバ」は複数のドライバから成り立ってるので、結構な数が出てくるハズです。
編集S:うむ、見る気がなくなった。
さかもっちー:そういう場合は、「lspci -v」とすると、それぞれのデバイスでロードされるドライバが見えますね。「Kernel driver in use: HDA Intel」と「Kernel modules: snd-hda-intel」がそれです。さっき出てきた「lshw」でも同じような情報を確認できます。
hito:後者がドライバファイルで、前者が「ドライバファイルに含まれるうち、どのデバイス向けのドライバで動作しているか」ぐらいの認識で。
編集S:ドライバファイルってどこかに格納されてるので?
さかもっちー:/lib/modules/`uname -r`/kernel/drivers/の下にある、「なんちゃら.ko」というファイルがそれですね。
hito:「modinfo (ドライバ名)」ってやると出てきますね。ここで出てくる「alias」っていうのが、さっきのデバイスIDなんですが、まあ知らなくても使えますし。
瀬尾浩史:深く知りたい時はこれで調べられるペン。
やまね:やろうと思えば調べられる、っていうのが重要かな。
さかもっちー:簡単にまとめると、まず「lspci -v」でデバイスとロードされているドライバを一覧して、ドライバが確定できたら「modinfo (ドライバ名)」ってやると、どのファイルを読んでいるのかが分かります、と。
ミズノ:油断してると、想定してるのと違うドライバで動作してたりするからねぇ……。
小林:ここまで把握できると、買ってきたPCでどんな部品が使われているのかが分かるようになりますね。
hito:まあ「見たことも聞いたこともないメーカー」がなくなるところまで修練すれば、というところかなぁ……。
この連載の記事
-
第61回
PC
~師範、Ubuntu道場が最終回です!~ -
第60回
PC
~師範、組版システム「TeX」について教えてください!~ -
第59回
PC
~師範、Ubuntu関連のイベントを教えてください!~ -
第58回
PC
~師範、日本語Remixの作り方を教えてください!~ -
第57回
PC
~師範、Ubuntu独自のテクノロジーについて教えてください!~ -
第56回
PC
~師範、いまどきの仮想化について教えてください!~ -
第55回
PC
~師範、Ubuntu 12.04の特徴を教えてください!~ -
第54回
PC
~みなさん、Ubuntuに触ったきっかけを教えてください!~ -
第53回
PC
~師範、Ubuntuのヘビーユーザーってどんな感じでしょう?~ -
第52回
PC
~師範、Ubuntuは今後どうなるんですか?~ -
第51回
PC
~師範、ARMって何ですか!~ - この連載の一覧へ