• ベストアンサー

Linux系では、ドライバがどうなっているのですか

以前Linuxをインストールしたものですが、プリンタのドライバとか 無線LANカードとか、自動的に認識できたのですが、 Windowsとかは、プリンタだとその会社のドライバだと、いれないといけないけど、 LinuxとWindowsのドライバの認識の違いは、どうなっているのでしょうか? 解る方お願いします。 あと、余談ですが、PS3でも認識できて、印刷できたことがありました。

質問者が選んだベストアンサー

  • ベストアンサー
  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.2

Linuxの成功には、オープンソースの概念が、その中心にあります。 オープンソースのソフトウェアは、ソースコードが公開されていて それを修正することも、再パッケージし配布することも自由です。 ですから、オープンソースのLinuxカーネルのソースコードツリーには 膨大なデバイスドライバーのソースコードが含まれています。 たとえば、うちの環境で、モジュール化されたドライバーの数をカウントすると $ ls -R /lib/modules/`uname -r`/kernel/drivers/ |grep o$|wc -l 2558 となっています。デフォから、一つか二つだけ増えていると思います(うろ覚え) 実際には、ソースコードの中から、カーネルバイナリーに組み込むもの カーネルモジュールとしてバイナリーファイル化するもの 組み込まないものの三つに分類され…その作業は RedHatやUbuntuといったディストリビューションの開発元が選択しています。 ですから、現在のディストリビューションで動かす可能性の高いデバイスについては 可能のかぎり、デバイスドライバーがモジュールとして組み込まれています。 さらに、SATAコントローラーのように、起動時に必須のものについては カーネルに組み入れてあったり…あるいは起動時に使われる initrdと呼ばれるRAMディスクイメージの中に組み入れられています。 この辺の仕組みを理解していないと、カーネルの最小化などは難しいのですが HDDの容量に余裕がある現在では、モジュール化されているものについては 動作を重くする要素は無いので、カーネル再構築の必然性は年々減っています。 実際のドライバーは、有志の人が開発しているものがありますし… あるいは、ドライバーの寄付と呼ばれる、ハードウェアベンダー自身による提供もあります。 Linuxのカーネルツリーに統合できないけど、オープンソースで公開されている例もあったと思います。 すべてのベンダーがLinux用ドライバーを公開するということは、当面ありえないので 利用できない機器もたくさんあります。 ただ、オープンソースの再配布に関する自由度の高さゆえに Linuxでは、クリーンインストールするだけで そのまま利用できるデバイスの数は、Windowsよりもはるかに多いのです。 それゆえに、クリーンインストールに限って言えば Windowsは、Linuxよりもインストールが難しいOS。 たぶん、MacOSXよりもインストールが難しいOSとなっています。 なお、一部のデバイスについては、カーネルツリーに組み入れられておらず メーカーサイトなどでのみ配布されているものもあります。 無線LAN機器や、新しいコントローラーなどでは、そういう状況は比較的多くなります。 nvidiaのように、オープンソースのドライバーもあるけれど メーカー純正のプロプライエタリーのドライバーもある場合もあります。 すべての情報を公開してほしいという要望と メーカーでドライバーを作ってほしいという要望は 必ずしも、両立するものでもなく nvidiaに対して、批判的な声があがったりもしています。

mitti2323
質問者

お礼

大変詳しい説明ありがとうございます。 カーネルモジュールとしては、世界の数あるベンダーの機器のドライバーとしては、少ないのでは、ないでしょうか。 カーネルツリーに組み込まれていないモジュールは、再構築といった操作が必要になりますか? 参考になりました。

その他の回答 (1)

  • DarkMoon
  • ベストアンサー率21% (225/1046)
回答No.1

Linuxも、ドライバを読み込みます。 カーネルに組み入れてコンパイルする場合と、 モジュールとして動的に読み込む場合があるようです。 Windowsの場合は、基本的なドライバはOSに元々入っていますが 細かい調整をしたものや、Windowsが発売されたときに世に出ていなかった製品は メーカーからのドライバダウンロードが必要です。 Linuxの場合は、カーネルのソースコードが変更されるたびに 新しいドライバのソースコードも追加されていっているようです。 Linuxを普通にPCにインストールしたときに入るカーネルは とりあえず殆どのハードウエアに対応できるようコンパイルされたもののようです。 自分で不要なドライバを取り除いてカーネルの動作を軽くするといった カスタマイズも可能ですが、ちゃんと動作するカーネルに仕上げるのは ちょっと難易度が高いようです。

mitti2323
質問者

お礼

大変詳しい解説ありがとうございます。 カスタマイズは、研究者とかそういった人が行っていると聞きました。 参考になりました。

関連するQ&A