【LPIC入門 101.1】ハードウェア設定の決定と構成

ハードウェア設定の決定と構成などについてまとめました。

【BIOSとは】OSとの違い、役割

BIOS(Basic Input Output Systemの略)は、コンピュータのマザーボードや拡張カード上に搭載されているフラッシュROMに書き込まれた、周辺機器との間の入出力制御を行うプログラムです。

1 OSを起動するためのプログラムを記憶装置から読み込んで実行(OSよりも先に読みだす)。
2 接続している各種デバイスの情報取得、設定を行う。取得した情報はOSに引き渡す。
3 基本的な入出力を行う。

【BIOS】各種設定

BIOSは「BIOS設定画面」で各種設定を行います。
コンピュータを起動した時に、特定のキー(F2, F12など端末の種類により異なる)を押すことで表示されます。
BIOSの設定画面の一例を以下に表示します。
(マザーボードのメーカーによってメニュー項目名などは異なります)

メニュー 場所
[Main] -> [Date] 日付、時刻など
[Main] -> [IDE Configuration] IDEハードディスクのモード設定
[Main] -> [System Information] BIOS、CPU、メモリなどの情報
[Advanced] -> [Jumperfee Configuration] CPUやメモリークロックなどのオーバークロック向けの設定項目
[Advanced] -> [LAN Cable Status] LANの接続状況を表示
[Advanced] -> [USB Configuration] USBのモード設定
[Advanced] -> [CPU Configuration] CPU(拡張版SpeedStepやVTNXビット)などの設定
[Chipset] -> [North Bridge] メモリーのアクセスタイミングなどの設定
[Chipset] -> [South Bridge] PCI Expressなどの設定
[Chipset] -> [Onboard Devices Contiguration] サウンド、LAN、シリアルポート、パラレルポートなどの設定
[Chipset] -> [PCIPnP] IRQの設定など
[Power] -> [Stand By] スタンバイのモード設定
[Power] -> [APM Configuration] APMモードの起動設定など
[Power] -> [Hardware Monitor] CPU温度や、ファンの回転数、ファン制御機能など
[Boot] -> [Boot Device Priority] 起動順序の設定など
[Boot] -> [Boot Settings Configuration] 起動時のオプション設定
[Boot] -> [Security] パスワード設定
[Tools] BIOS更新ツールなどの呼び出し
[Exit] 変更内容の保存、デフォルト設定などの呼び出し

【割込み要求】IRQ(Interrupt ReQuest)

割り込み要求(IRQ:Interrupt ReQuest)は、各種装置がCPUを呼び出すときの信号です。
割り込み要求の信号を受け取ると、割り込み処理(CPUが処理中の処理を中断し、割り込み要求のあった装置の処理)を実行します。
IRQは0~15までの番号で表わされ、それぞれ各装置に自動的に割り振られています。
(IRQ番号が重複すると、装置の動作不良の原因となります)

番号 一般的な割り当て例
0 システムタイマー
1 キーボード
2 割込みコントローラ
3 シリアルポート( COM2 )
4 シリアルポート( COM1 )
5 空き
6 フロッピーディスクドライブ
7 プリンタポート( LPT1 )
8 リアルタイムクロック
9 空き
10 空き
11 USBコントローラ
12 PS/2マウス
13 数値データプロセッサ
14 プライマリIDE
15 セカンダリIDE

IRQ番号は、「$cat /proc/interrupts/」で確認できます。

$cat /proc/interrupts/ 

【I/Oアドレス】(入出力ポート)

I/Oアドレス(入出力ポート)とは、CPUが各種装置とデータを送受信するためのアドレスです。
PC/AT互換機ではメモリ領域の0000h~FFFFhが使用され、IRQと同様に重複しないように割り当てます。

I/Oポートアドレスの割り当ては、 「$cat /proc/ioports」で確認できます。

【DMAとは】直接メモリアクセス

DMA(Direct Memory Access)は、装置~メモリ間でデータを転送する方法の1つです。
CPUを経由せずに装置とメモリ間が直接データを転送するので、Direct Memory Access(直接メモリアクセス)といいます。
CPUに不可をかけずにデータ転送できるので処理速度が向上します。

用語 概要
DMAコントローラ DMAを制御する回路
DMAチャネル 装置がDMAコントローラに対してデータ転送を要求する信号を送るための通信経路。1つのチャネルを複数の装置で共有できないので、装置間でDMAチャネルが衝突しないように設定する。

DMAチャネルの割り当ては、「$cat /proc/dma」で確認できます。

$cat /proc/dma 

【デバイスファイル】確認コマンド

デバイスファイルとは、装置へのアクセスを抽象化して扱うためのファイルです。
デバイスファイルは「/dev」以下に配置されており、カーネルがデバイスを識別するためにあります(メジャー番号・マイナー番号などが記載されている)。
プログラムのfileopen関数などでファイルにアクセスすると、カーネル内に組み込まれたデバイス・ドライバが呼び出され、ファイルの代わりにデバイスにアクセスできます。
アクセスの際、バッファを用いるものをブロック・デバイスと呼び、用いないものをキャラクタ・デバイスと呼びます。

ls -al

ブロックデバイスかキャラクタ・デバイスかは、「$ls -al /dev」でわかります。

$ls -al

sda1  b ←ブロックデバイス
tty1  c ←キャラクタ・デバイス
種別 概要
ブロックデバイス ブロック単位でアクセスされる装置(ハードディスク、RAMディスク、RAIDボリュームなど)
キャラクタデバイス キャラクタ単位でアクセスされる装置(キーボード、マウス、端末、プリンタなど)

lsdev

lsdevコマンドで各装置のDMA、IRQ、I/Oアドレスを確認できます。

$ lsdev 

Linuxカーネルが認識している各装置の情報は「/proc」以下のファイルで確認できます。

主なファイル 中身
/proc/bus/usb/* USBデバイス情報
/proc/cpuinfo CPU情報
/proc/interrupts IRQ情報
/proc/pci PCIデバイス情報
/proc/scsi/scsi SCSIデバイス情報
/proc/devices 各種のキャラクタデバイスやブロックデバイスを表示
/proc/meminfo メモリ(RAM)の使用率
/proc/scsi/scsi SCSIデバイス情報
/proc/mounts システムで使用中の全マウントの一覧
/proc/partitions パーティションブロックの割り当て情報

【SCSI規格】Small Computer System Interface

Small Computer System Interfaceの略。バス型接続のパラレルインターフェース規格で、周辺機器同士を各機器を数珠つなぎ(デイジーチェーン方式)で接続します。1つのインターフェースで最大16台までの機器(SCSIデバイス)を接続できます。接続の終端となる部分のコネクタには、元信号が乱れないよう「ターミネータ(終端抵抗器)」を取り付ける必要があります。SCSIに接続する各機器はと呼ばれます。各々0から7(または15)までの番号で区別されます。この番号のことをSCSI IDといいます。通常、SCSI機器は各々、明示的にSCSI IDを設定しますが、SCAMという拡張仕様を用いると、自動的に設定できます。
SCSI接続されている装置の情報は「$cat /proc/scsi/scsi」で確認できます。

$cat /proc/scsi/scsi 

SCSI規格

SCSI規格 データ幅(ビット) 最大接続数(台) 最大転送速度(MB/秒)
SCSI-1 8 7 5
SCSI-2(Fast SCSI) 8 7 10
SCSI-2(Wide SCSI) 16 15 20
Ultra SCSI 8 7 20
Ultra Wide SCSI 16 15 40
Ultra2 SCSI 16 15 80
Ultra 160 SCSI 16 15 160
Ultra 320 SCSI 16 15 320

SCSIデバイスファイル

SCSIデバイスファイルは、HDD、CD-ROM、シリアルポートなどの情報が記載されており、「/dev」に格納されます。
SCSIディスクの場合は、デバイスファイル名が次のようなディスク名にパーティション番号を付与したものとなります。

デバイスファイル名 説明
sda SCSIディスク(1番目)
sdb SCSIディスク(2番目)
sdc SCSIディスク(3番目)
sdd SCSIディスク(4番目)

一般的なデバイスファイルの割り当ては以下のとおりです。

割り当て 説明
/dev/sda1 1番目のハードディスクドライブの1番目のパーティション
/dev/sda2 1番目のハードディスクドライブの2番目のパーティション
/dev/sdb1 2番目のハードディスクドライブの1番目のパーティション
/dev/scd0 1番目のCD-ROMドライブ
/dev/st1 1番目のテープドライブ

デバイスファイル名の確認は「$df」で確認できます。

$df 

【SATA】SerialATA

SATAとは、ATA規格の転送方法をシリアル転送方式にしたものです。 シリアルATAとパラレルATAはプロトコルレベルで互換性を持っており、ソフトウェアレベルでは従来のパラレルATAと同様に扱うことができます。また、1本のケーブルにマスターとスレーブの2台を接続する方式から、1本のケーブルに1台のHDDを接続する方式に変更されました。シリアルATAではホットプラグ(活線抜挿:システムを停止させることなくHDDを交換)が可能です。
Serial ATAを外付けの記憶装置の接続に利用するeSATA(External Serial ATA)という規格もあります。

【PCI】Peripheral Components Interconnect
PCIとは、コンピュータ組み込むことで、さまざまな機能を追加することがでます。プラグ&プレイに対応しており、IRQは自動割当てられます(IRQが重複するトラブルが多く、その場合はBIOSでIRQを設定します)。
Linuxカーネルが認識しているPCI装置は、「$lspci」で確認できます。

$lspci 

【シリアルポート】USBデバイス

シリアルポートとは、コンピュータがシリアル方式(1本の信号線で1ビットずつ順番にデータを送受信)でデータをやり取りするための通信用インターフェースです。
外付けモデムやターミナルアダプタ、プリンタ等に用いられます。
シリアルポートを表すデバイスファイルは、1番目は/dev/ttyS0、2番目は/dev/ttyS1で表します。
I/OポートやIRQの対応状況の確認や設定は「$setserial」で行います。

$setserial 

USB

最大127台のUSB機器を接続可能。周辺機器とパソコンを結ぶデータ伝送路のシリアル・インターフェース規格の1つ。 ホットプラグ(電源を入れた状態で接続・取り外し)が可能で、新規ハードウェアもPlug&Playで自動的に認識できます。
USBデバイスが接続されると/var/log/messageにログが出力されます。

ホットプラグの仕組み
1 機器の接続
2 カーネルがデーモンのudevdに通知し、udevdが/etc/udevd/配下のスクリプトファイルを実行する。※ルールファイルに従って動的にデバイスファイルが生成される。
3 デバイスに関する情報がhaldに通知され、新規のデバイスの登録が行われる。※haldはシステム上でデバイスのDBを管理しているHALのデーモン。
4 D-BUSにより各アプリケーションに情報が通知され、デバイスが使用できる。

用語|概要
–|–
udev|userspace device managementの略。カーネルがコンピュータに接続されていることを検出したデバイスに対して、動的に「デバイス・ファイル」「/devデバイスノード」を作成して割り当てる仕組み
動的にを作成する(ユーザが設定したルール(/etc/udev/rules.d/)またはsysfsによって提供される情報を照合)。
Sysfs|Linuxカーネル 2.6 によって提供される仮想ファイルシステム。装置・ドライバ情報をカーネルモデルからユーザ空間へ出力し、確認や設定のために使用されるも使われるオンメモリーのファイルシステム。
hald|ホットプラグ可能な装置が接続・切断されると起動するデーモン
dbus|メッセージバスともいい、アプリケーション間でやりとりを行うためのプロセス間通信を行うバス。イベントを各種アプリケーションに通知する。
クラスドライバ|特定のUSB装置と通信できるドライバ。ある特定のUSB装置の機能が動作しない場合は、その装置に付属のドライバをインストールする必要がある。

USB装置の設定

USB装置の情報は、/proc/bus/usb 以下のディレクトリに保存されています。
コンピュータに接続されているUSBデバイスの情報は、 /proc/bus/usb/devices に記述されています。
(catで観るか、「lsusb」で確認可能)

$ cat /proc/bus/usb/devices

$ lsusb 

【デバイスドライバ】

デバイスドライバは、カーネルで装置を制御するための地雷場です。
デバイスドライバの利用は、「カーネルに組み込んで利用する場合」と「カーネルモジュールとして利用する場合」があります。

場合 説明
カーネルに組み込んで利用する場合 システム起動時、カーネルをメモリにロードした時点で装置スをサポートできます。利用する頻度が高いHDDなどシステムに適しています。
カーネルモジュールとして利用する場合 利用する頻度が低い装置を利用するたびに、必要なカーネルモジュールをメモリにロードします。

カーネルモジュール

システム稼動中にロードされているカーネルモジュールを一覧表示するためには、「lsmod」もしくは「cat /proc/modules」を利用します。「lsmod」はカーネルモジュールごとに「名前」「サイズ」「利用回数」「このモジュールを参照しているモジュール名」を表示します。

$ lsmod 

modprobe

modprobeは設定ファイルやコマンドラインで指示することにより、モジュールのロード、アンロードや状態表示などさまざまなモジュール管理を行うことができます。
たとえば1つまたは複数のモジュールを、それが必要とするモジュールとあわせてロードしたり、モジュールロード時にスクリプトを実行したりすることができます。

modprobeの設定ファイルはカーネルのバージョンによって異なります。
カーネル2.4系で使用される設定ファイルは/etc/modules.conf、
カーネル2.6系で使用される設定ファイルは/etc/modprobe.confです。

これら設定ファイルに処理内容を記述して、そのmodprobe を実行すると、システムがモジュールをロードする際、設定ファイルに記述された処理内容が参照されて自動的に実行されます。

以下はモジュールbcm5700をロードしています。

$ vi /etc/modprobe.conf
alias eth0 bcm5700 

またカーネルモジュールを操作するとき「modprobe」は「modules.dep」ファイルを利用して、モジュール間の依存関係を調べます。その結果、モジュールが他のモジュールを必要としている場合は、そのモジュールを先にロードします。

depmod

modules.depファイルは「depmod」で最新の状態に更新できます。

$ depmod 
【LPIC入門】Linuxの基礎と試験範囲別の解説
LPICに従って、Linuxの基礎と試験範囲別の解説についてまとめました。

コメント

タイトルとURLをコピーしました