情報技術>Linuxハードウェア
----
ここでは、家庭用PC上のLinuxで、どのようなハードウェアを用いられるかについてまとめます。Linuxの説明、操作についてはUNIX/Linux入門を参照してください。また、PCの構成やその動作については高等学校情報の内容を参照してください。以下では、これらの知識を前提します。また、以降では2.6系列Linuxのソースコードを用いる記述がありますが、その場合、ソースとしてlinux-2.6.20を用いています。ここでは多くのデバイスを扱いますが、Linux上でこれらのデバイスを扱うことは、デバイス作成者の意図した使いかたではない可能性があります。実際にこれらの動作を試すとするなら、デバイスの関連文書を参照してください。
ハードウェアの中にはコンピュータとハードウェアの通信仕様が公開されており、ハードウェアメーカが提供するデバイスドライバによらない機能によって、扱えるものがあります。例えば，USBの"クラス"の中で、"mass storage class"(マスストレージクラス)や、"Human Interface Device class"(HIDクラス)に含まれる機器はこの例です。これらの定義についてはUSBを参照してください。
それ以外のUSB機器として例えばLANアダプタ、無線LANクライアントについても触れます。これらの機器は機器ごとに個別のドライバが必要となるため、機器を提供する各社の対応状況を見ることになります。
また、USBが電源を供給できることを用いて、扇風機、ヒータなどの機器を接続できる場合があります。この場合PCとの通信は必要でないため、PC上のOSに関わらず機器が接続できると期待されます。
USBメモリや各種のメモリカードはUSBマスストレージクラスに属するデバイスであり、Linux上でも他のOSと変わらない程度のサポートを受けます。実際にメモリカードリーダをLinux上で用いている例としては[http://www.atmarkit.co.jp/flinux/rensai/linuxtips/609usememrw.html]を参照してください。実際には、各種ストレージの内容をファイルとして扱うには、機器との通信方法だけでなく、機器のデータを登録するファイルシステムも知っている必要があります。幸いこれらの機器は、大抵FAT形式のファイルシステムを採用しています。各種WindowsやMac OSだけでなく、LinuxもFAT形式を扱えるため、これらの内容をファイルとして扱うことができます。 
CDなどの各種光学ドライブも、それがUSB接続の機器であるなら、マスストレージクラスのドライバで扱える場合があります。この場合、CDのファイルシステムとしてISO9660が用いられる点に注意すれば、やはりマスストレージクラスのドライバでこの機器を扱うことができます。
各光学ドライブが実際にマスストレージクラスの機器であるかは、実際に接続してみるまでわかりません。これは、各デバイスのパッケージには、どのOS上で使えるかだけが記述され、どのデバイスドライバを使うかは述べられないことが多いからです。ただし、特にWindows上で、"汎用のドライバによって認識される"との記述がある場合には、その機器がLinux上で利用できる可能性は高まります。これは、ここでいう"汎用ドライバ"がおそらくUSBマスストレージクラスを扱うドライバだからです。逆に、"付属のCD、メーカのホームページからドライバをインストールする必要がある"などの記述があるときには、その機器は使えないものと考えた方がよいでしょう。
Linux上でファイルシステムを構築する方法として、各種mkfsコマンドを使った方法があります。mkfsコマンドについてはUNIX/Linux入門を参照してください。光学ドライブのファイルシステムを作るには、mkisofsコマンドを用います。
 $mkisofs -o isoファイル名 記録するファイル、ディレクトリ
ここで、mkisofsコマンドは多くのファイルやディレクトリを1つのisoファイルにまとめます。
実際にCDを作成するには、en:cdrecordを使います。
 $cdrecord -v dev=x,y,z isoファイル名
ここで、x,y,zは光学ドライブを示す数値です。用いられる光学ドライブは、
 $cdrecord -scanbus
によって見ることができます。より詳しい説明はcdrecordのmanを参照してください。
また、GNOMEやKDEの設定によっては、GUIを用いてCDを作成できるかもしれません。これらのGUIは中でcdrecordコマンドを使うこともあるし、そうでないこともあるかもしれません。これらのツールを使うときには、対応するGUIの説明に従ってください。
USBのHIDクラスに属する機器には、USB接続のキーボード、マウス、ゲームパッドなどがあげられます。これらの機器は大抵特別な設定無しにLinux上で動作します。特に、Windows上の"汎用ドライバ"で動作する等の表示がある場合、これがUSBのHIDクラスのデバイスである可能性は高くなります。
これらの機器を扱うドライバは、linux-2.6.x/drivers/usb/input以下の各種ファイルです。特に、usbmouse.c, usbkbd.cの各ファイルはそれぞれUSBマウス、USBキーボードに対応しているようです。
LANアダプタは、PC上でイーサネットを扱うための機器です。最近のマザーボードにはPCI接続のイーサネット機器がつけられていることがあるため、USBでイーサネットを扱うのは古いマザーボードを扱う場合か、複数のイーサネット機器を扱いたい場合になります。また、無線LANクライアントは無線LANアクセスポイントと通信するための機器です。これらの機器はそれぞれ対応するドライバが必要です。
汎用的なドライバを扱うデバイスに加えて、そもそもPCと関係無く動作する機器は、PCのOSと関係無く使うことができます。そのため、これらの機器もLinuxが動作するPCとともに用いることができます。ここではこれらの機器についてあげていきます。
また、特にネットワーク機器について、PCとというより、PCに接続されたネットワーク機器と通信を行うデバイスの場合、OSによらずデバイスが動作する可能性が高まります。
各種メモリーカードにデータを記録するデジタルカメラは、PCのOSと関係無く扱える機器です。これは、カメラで写真を撮った後、メモリーカードをPCに接続し、USBマスストレージクラスの機器として扱うことができるからです。USBマスストレージクラスについては既に扱いました。このとき、メモリカード自体はそのデータがどの機器によって記録されたかを把握していません。そのため、カメラで撮ったデータもLinux PCで扱えるはずです。
ただし、カメラがデータを記録するファイル形式がフリーライセンスで扱えない場合には注意が必要です。静止画の場合には大抵JPEG形式が採用されるのでよいのですが、動画の場合MPEGなど特許が存在するファイル形式が用いられることがあります。この場合、そのデータをPCで扱えるかはPCの構成によります。
PCに取り込んだデータは通常の画像ファイルとして扱えます。例えばGimpなどで編集するとよいでしょう。
ルータやハブなどのネットワーク機器は、イーサネット機器と通信します。この性質のため、仮にLinuxが対応するイーサネット機器と通信できたとすれば、その機器は各種のネットワーク機器と接続できることが期待できます。
同じ理由でADSLや光ファイバーを用いてインターネットに接続する際、複数のPCを使うなどの理由でルータを用いて各種モデムと接続するときには、接続されたモデムはPCとというより、接続されたルータと通信を行います。この場合にはPCの詳細に関わらず、モデムとルータ間の通信は成立するため、Linuxでルータとの通信が行えるなら、インターネットへの接続もできるはずです。
ルータを用いない場合には、PCはルータの仕事を自力で行う必要があります。中継局との接続に関するルータの仕事は、PPPoEなどの各種プロトコルを扱うことです。Windows PCではこの役目をPCで肩代りすることができます。これは、Windows自体がPPPoEを扱えるからです。
ただし、このつなぎ方ではWindows上のネットワークサーバに外部から接続される可能性が高まります。ファイアウォールなどを参照してください。
LinuxでもPPPoEを扱えるので、ルータ無しでの接続が可能です。ただし、この場合OSによらずただ1台のPCしかインターネットと接続できないため複数のPCを使うときにはルータを用いる方がよいでしょう。
Linux上でPPPoEを扱うには、RP-PPPoE(Roaring Penguin)などのソフトウェアが必要です。PPPoEも参照してください。RP-PPPoEではおおよそ
 #adsl-setup
 #adsl-start
 #adsl-stop
などの各種コマンドを扱うことになります。GNOME、KDEの設定次第でこれらが簡単に設定できるかも知れません。
ただし、これらの操作はプロバイダによって保証された動作ではないかもしれません。それらについては関連する文書を参照してください。
イーサネットの場合と同様に、無線LANクライアントとLinuxが通信できるという条件付きなら、無線LANアクセスポイントと無線LANクライアントが通信できることも期待されます。
ここまでは、USB接続の機器やネットワーク機器など、既に完成しているPCから接続できる機器について触れました。ここからは、まだPCの構成が決まっていない場合に、Windows、Linuxの両方が動く構成にするための機器の選びかたについてまとめます。
ここからの話題ではある程度自作パソコンの知識を仮定します。例えば、チップセット、ビデオボードなどについて把握している必要があります。
既にあげたもの以外の機器に対しては、基本的にどれも個別のデバイスドライバが必要になります。もちろんマザーボード上の各機器に対しても、これは例外ではありません。例えば、あるマザーボードのSATAコントローラに対するLinuxデバイスドライバが無い場合、このPCはSATA接続のハードディスクを扱うことができません。このため、マザーボード上の各機器に対するLinuxドライバが存在することが、Linuxを実際のPC上で使うために重要になります。
残念ながらデバイス供給者のLinuxに対するサポートは、WindowsやMac OSに対するサポートほど徹底してはいません。しかし、一部のメーカはLinuxプラットフォームへの対応を進めています。ここでは、マザーボード上の各機器に対して、Linuxへの対応状況を見ていきます。
チップセットは、マザーボードの中核となるパーツです。チップセットを供給しているメーカは数が少なく、個別の対応状況を見ていくことができます。ここでは、インテル、NVIDIAの対応状況を見ていきます。他のメーカについてはチップセットなどを参照してください。
各社が提供するチップセットはオンボードビデオ機能(外付けのビデオカードを用いる場合もある)、イーサネットインターフェース、サウンド機器、USB2.0対応コントローラ、SATAインターフェースなどの機能を提供します。
これらのチップセットを用いるLinux PCは、他の機器を使うこと無くハードディスク、イーサネットを扱い、更にアクセラレータを用いた高速な画面描画を行うことができます。実際のところ、このようなチップセットにCPU、メモリ、SATAハードディスクを組み合わせた構成は、ビジネス向けのWindows PCの構成とほとんど変わりません。このため、チップセットの機能が全て使えるなら、Linuxだけでも普段の使用に十分な機能を持つPCが作れると期待できます。
インテルのチップセットはインテル自身のCPUに対して用いられます。最近のインテルチップセットは描画機能に加えて、多くのIOを提供します。描画機能についてはオンボードのグラフィック機能のないチップセットを選び、外付けのビデオカードを使うこともできます。しかし最近のインテルオンボードグラフィック機能は、Windows Vistaのエアロ機能も十分動かせる高性能なグラフィック機器です[http://oshiete1.goo.ne.jp/qa2673716.html]。
インテルは自社の最新のチップセット(965Gなど)のLinuxドライバを種々のフリーライセンスで提供しています(グラフィック関係のドライバ[http://www.intellinuxgraphics.org/license.html]、それ以外[http://www.intellinuxgraphics.org/related.html])。ドライバは既にkernel.orgなどが提供するソースコードに含まれているため、これらの機器をLinuxで扱うことは容易です。実際にこれらの機能を使えるかどうかは、対応するLinuxディストリビューションの文書等で調べてください。
インテルのチップセットは多くのメーカ製PCでも採用されており、これを使っているPCでは容易にLinuxが動くことが期待されます。各種のディストリビューションを試してみるとよいでしょう。
インテルチップセットは、インテルCPUに対する多くのマザーボードで使用されているため、PCを自作する場合にも選択肢は豊富です。作ったPCでLinuxを使うことも可能かもしれません。
NVIDIAのチップセットはインテル、及びAMDのCPUに対して提供されます。特にAMDのCPUでは、NVIDIAのチップセットがよく用いられます。
NVIDIAは、自社のチップセットen:nForce上のビデオ機能を除く各種機器に対するドライバが、Linuxのソースコード中に含まれていることを述べています[http://www.nvidia.com/object/linux_nforce_1.21.html]。このため、少なくともIOやネットワーク機器に関しては、NVIDIAのチップセットの機能を使うことは可能です。
これに加えて、NVIDIAは自社の拡張ビデオカードのLinuxドライバを提供しています[http://www.nvidia.com/object/unix.html]。ただし、このドライバは"フリーライセンス"と整合しないライセンスで提供されているので使用には若干の注意が必要です。例えば、Fedoraなどのディストリビューションは、標準でこのドライバをサポートしていません[http://fedoraproject.org/wiki/ForbiddenItems]。
いずれにしろNVIDIAのチップセットを使う場合も大抵は全ての機器をLinuxで使えるものと期待されます。実際の使用にあたってはリンク先などの対応文書をよく読んでください。