2008年9月14日日曜日

第22回 ハードウェアの基礎知識

=================================
 ハードウェアの基礎知識
=================================

今回のテーマについては、僕自身よくわかっていないことが多いですが、
Wiiリモコンをはじめとして、いろいろなハードウェアを利用していく
上で参考になりそうな話をまとめておこうと思います。


このメルマガはLinux初心者用に書いているつもりですが、Linuxに
ついては初心者でも、Windowsやハードウェアには精通しているという
方も多いかも知れません。また、僕より詳しい方もたくさんおられると
思いますので、間違いや勘違いしていることがありましたら、遠慮なく
ご指摘いただければ…と存じます。


=================================
デバイスドライバ
=================================
PCに搭載されている、または、新たに追加したさまざまなハードウェア
(デバイス)を利用するには、専用に書かれたソフトウェアが必要です。
そのようなハードウェア制御を担当するソフトウェアを一般にデバイス
ドライバと呼んでいます。

例えば、TV視聴用のキャプチャーボードなどを新たに購入すると、
ドライバが入った付属のCD-ROMが付いてきます。ところが、大抵の場合、
これらはWindows用のドライバであり、通常、Linuxでは使えません。

それでは、Linuxではキャプチャーボードは使えないのかというと、
そうでもありません。なぜなら、独自にLinux用のドライバを開発して
いる人(あるいはグループ)がいるからです(ぱ研さんなど)。

これはキャプチャーボードに限った話ではなく、HDDもそうですし、ネット
ワークカード(あるいはチップ)もそうです。PCに積んである各種チップに
ついても、それぞれのドライバが必要です。

最近のディストリビューションでは、通常のPCに搭載されているほとんど
のハードウェアのドライバがLinuxカーネルあるいはそのモジュールとして
組み込まれているため、先に挙げたキャプチャーボードなど一部のものを
除けば、あえて意識しなくても、多くの機能を使うことができるように
なっています。

例えば、3年程前は、ギガビットのネットワークチップもカーネルを再構築
しないと利用することが出来ませんでしたが、今では何もしなくても使える
ようになりました。


=================================
カーネルモジュール
=================================
Linuxの場合、ドライバはカーネル本体に組み込まれているものと、利用時に
動的に読み込むモジュールとして実装されているものがあります。

カーネル本体は基本的なドライバだけ組み込み、多くのドライバはモジュール
として実装されています。

モジュールとして構成されたドライバは、カーネルに読み込まれないと利用でき
ません。モジュールを読み込むには、insmodというコマンドが利用されます。

また、モジュールに依存関係があり、複数のモジュールを読む込む必要がある
場合は、modprobeというコマンドを使えば、必要なモジュールについて
insmodを実行してくれます。したがって、稼働していないモジュールを読み
込むときは、modprobeを使った方がいいでしょう。

(例)# /sbin/modprobe sk98lin

上の例は、Marvellのギガビットネットワークチップのモジュールです。

現在利用できる(または使用中の)モジュールは、# /sbin/lsmod または
# cat /proc/modules というコマンドを実行すればわかります。
何が何のためのモジュールなのかは必要なときに調べればいいことです。

ちなみに、# /sbin/rmmod -a を実行すれば、利用されていないモジュール
を削除してくれます。

また、各モジュールの詳細な情報は、下記のコマンドで得られます。

# /sbin/modinfo (モジュール名)

カーネルにもともとモジュールとして実装されているものについては、単に
modprobeで読み込めばいいのですが、先に挙げたキャプチャーボードの
ドライバのように、自分でコンパイルしてから読み込まなくてはならない
ものもあります。


=================================
ハードウェアの情報を調べる
=================================
Linuxには、現在稼働しているハードウェアの情報を教えてくれるGUIの
アプリケーションや便利なコマンドが用意されています。

【システムモニタ -GUIツール】
CPU使用率やメモリの使用状況などを表示します。これはどのディストリビュー
ションにも付属しているので、みなさん利用されていると思います。
場所:アプリケーション→システムツール→システムモニタ

【Hardware Lister -GUIツール】
バイオスのバージョンやそれぞれのハードウェアについてのドライバ情報など
詳細に表示します。ハードウェアの障害時に技術担当者へ提示する際に役立つ
かも知れませんが、実用的なのはドライバの名称の確認くらいですかね?
Fedoraでは、yumでインストールできます。

# yum install lshw lshw-gui

場所:アプリケーション→システムツール→Hardware Lister

【NVIDIA X Server Settings -GUIツール】
nVIDIAドライバを入れると、追加されます。デュアルディスプレイの設定など
ができるようですが、まだ試していません。

場所:アプリケーション→システムツール→nVIDIA Display Settings


【ハードウェア情報関連のコマンド】
ーーーーーーーーーーーーーーーーーーー
# dmesg
ーーーーーーーーーーーーーーーーーーー
現在稼働しているハードウェアの情報を詳細に表示します。量が多いので、
通常は、関連するキーワードをgrepで検索して使います。

ーーーーーーーーーーーーーーーーーーー
# df
ーーーーーーーーーーーーーーーーーーー
ハードディスクやリムーバブルメディアの使用率などを表示します。

ーーーーーーーーーーーーーーーーーーー
# cat /proc/cpuinfo
ーーーーーーーーーーーーーーーーーーー
CPU情報を表示します。/procディレクトリのファイルをcatしてみると、
他にもいろいろな情報が得られます。

ーーーーーーーーーーーーーーーーーーー
# sensors
ーーーーーーーーーーーーーーーーーーー
CPUやグラフィックチップの温度などを表示します。バイオスの情報を取り
出しているのではないかと思いますが、詳細は不明です。
lm_sensorsというパッケージをインストールしないと使えません。

ーーーーーーーーーーーーーーーーーーー
# top
ーーーーーーーーーーーーーーーーーーー
CPUの使用率やプロセスの利用状況などを表示します。主に、サーバーの
監視用に使われますが、デスクトップ用途でも、どのアプリケーションが
メモリを食っているか確認できるので、便利です。

ーーーーーーーーーーーーーーーーーーー
# nice
ーーーーーーーーーーーーーーーーーーー
プロセスの優先順位を設定します。-20〜19までの幅があり、小さい値ほど
優先度が上がります。マイナスの値はrootでしか指定できません。

(例) # nice -n -5 top :topコマンドの優先順位を−5に設定。

ーーーーーーーーーーーーーーーーーーー
# /sbin/ifconfig
ーーーーーーーーーーーーーーーーーーー
これは以前にコマンドの説明で紹介しましたが、ネットワークカードの
情報を表示します。IPアドレスを調べたりするのに便利です。

ーーーーーーーーーーーーーーーーーーー
# /sbin/hdparm -I /dev/sda(など)
ーーーーーーーーーーーーーーーーーーー
ハードディスクの詳細な情報を表示します。/dev/sdaの部分は表示
するHDDやUSBに対応するデバイス名を指定します。

ーーーーーーーーーーーーーーーーーーー
# /sbin/hdparm -tT /dev/sda(など)
ーーーーーーーーーーーーーーーーーーー
ハードディスクのアクセススピードを計測します。/dev/sdaの部分
は計測するHDDやUSBに対応するデバイス名を指定します。
-tオプションは、読み込みの速度、-Tオプションは書き込みの速度の
指定です。ちなみに、今使っているPCの計測結果は以下のとおり。

# /sbin/hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: (省略) 713.05 MB/sec
Timing buffered disk reads: (省略) 40.20 MB/sec

この値に比べて極端に遅い場合は、DMA転送が有効になっていないかも
知れません。DMA転送は次のコマンドで有効にできます。

# /sbin/hdparm -d1 -k1 /dev/sda

-k1は設定を保存するためのオプションです。また、-Xというオプション
を使うと、HDD速度の設定を変更できますが、通常は最適値になっている
と思います。危険ですので、変更しない方が無難です。


=================================
編集後記
=================================
秋から冬にかけては、本業が忙しく、ブログの更新も遅れがちですが、
可能な限り、ネタを探していろいろとチャレンジしていきたいと思っています。

Linuxを触っていると、いつの間にかハードウェアの知識も増えていきます。
逆に、それが必要になるということでもあるわけですが…。

何かトラブルがあったとき、それを困ったと思うかチャンスと思うかは、
考え方1つで変わります。
いらいらしないで、じっくり付き合っていきましょう。

次回の配信は、12月6日の予定です。