ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

LPIC = Linux Professional Institute Certification

今週のシガラミ。…はやくカーネルをコンパイルできるくらいの男になろう…

OSが立ち上がるまで

PC電源が入ると HDD のブートセクターがメモリ上に読み込まれる。
Linux の場合、LILO (Linux Loader) や GNU BRUB (GNU Brand Unified Bootloader) と呼ばれる ブートローダが使用される。
ちなみに FedoraCore5 では GRUB が採用されている

BIOSとは

「Basic Input Output System」の略。
コンピュータが持つもっとも基礎的な制御プログラム。
一般的に、起動時にデバイスの初期化やハードウェアの設定を行うプログラムを指す。
BIOSはコンピュータのマザーボードや拡張カードに搭載されたROMに書き込まれている。

  • BOISの機能
    • PCの内臓時計の日時設定
    • ディスクドライブ・ブートデバイス
    • 起動するドライブの設定
    • IRQの割り当て(IRQ = Interrupt ReQuest : 割り込み要求)
    • シリアルポートやパラレルポートの設定

ブートローダ(boot loader)とは

コンピュータの起動直後に動作し、OSをディスクから読み込んで起動するプログラム。


IRQ (Interrupt ReQuest : 割り込み要求) とは

PC/AT互換機に組み込まれたさまざまな機器がCPUに処理要求を通知する際の識別番号。
「CPUへの割り込み番号」と解釈すれば良いか


I/O アドレス (input/output)とは

通常の物理アドレス空間とは別に用意された周辺装置との入出力専用アドレス空間
x86系CPUなどのI/Oアドレス空間を扱う機能を持つCPUを搭載したシステムだけが使える。
CPUは専用のI/Oアドレスアクセス命令(IN/OUT命令)を使って、周辺装置の制御レジスタにアクセスする。

アドレス 使用チップ
040-05F タイマ
060 キーボード
070-07F リアルタイムクロック
0F8-0FF 数値演算コプロセッサ
1F0-1F8 ハードディスクドライブ
200-20F ジョイスティック
278-27F 2番プリンタポート(LPT2)
2E0-2E7 4番シリアルポート(COM4)
2E8-2EF 3番シリアルポート(COM3)
2F8-2FF 2番シリアルポート(COM2)
360-363 ネットワーク
368-36B ネットワーク
378-37F プリンタポート(LPT1)
3F0-3F7 フロッピーディスクドライブ
3F8-3FF 1番シリアルポート(COM1)

HDD ジオメトリー

ハードディスクの構成は3つの物理的な数値情報(C/H/S)で表される。
この数値情報のことをジオメトリーとよぶ。

  • C:シリンダ数
    • ハードディスクは、複数のディスクが縦に重なり合った構造になり、それぞれに媒体へ読み書きを行う磁気ヘッドが存在する。このヘッドの位置を変えずにアクセスできる円周のことを「トラック」とよぶ。シリンダとは、それぞれのディスク上にある同一番号のトラックが集まってできる軸から等距離にある仮想の円筒を意味し、シリンダ数ほその数を表す。
  • H:ヘッド数
    • 媒体へ読み書きを行う磁気ヘッドの数。
  • S:セクタ数
    • ディスク上の各トラックを分割する単位、ディスクアクセスの基本的な単位。一般的に 1セクターあたり 512Byte。

PROC であそぼう!

ファイル名 内容
cmdline システムのブートパラメータ
version カーネルバージョン
cpuinfo CPU情報
uptime システム動作時間
devices デバイスとメジャー番号の対応
partitions 認識されたパーティション一覧
filesystems サポートするファイルシステムタイプ
interrupts プロセッサへの割り込み要因のリスト 0: 2042766666 IO-APIC-edge timer
pci、ioports、iomem、interrupts 認識しているハードウェア情報
swaps スワップファイル一覧
locks ファイルロックのリスト
loadavg ロードアベレージ
stat システム状態
meminfo 空きメモリ情報
slabinfo スラブキャッシュの状態
dma 登録されている ISA DMA (direct memory access) チャネルのリスト

USB とは ( Universal Serial Bus )

キーボードやマウス、モデム、ジョイスティックなどの周辺機器とパソコンを結ぶデータ伝送路の規格のひとつ。
本体との間であまり大容量のデータをやりとりしない機器を接続するための規格として、USB 1.1という規格名で投入された。
しかし、当初高速シリアルインターフェースとして予定されていたIEEE 1394の立ち上げが遅れ、その間にUSB 1.1の普及が爆発的に進んだ結果、CD-RやHDDなどもぶら下がるインターフェースに変貌した。
USB 1.1は最高で12Mbps(=1.5MB/s)というかなり低速でしか転送ができない規格だったため、高速転送の需要を満たすことを目的としてUSB 2.0(HI-SPEED USB)が策定された。

USBスタックは、2.2系カーネルから非公式に組み込まれていたが、Linuxカーネル2.4系において、正規にサポートが開始された。

PCに搭載されているUSBコントローラを介して制御する。使用しているマザーボードによってコントローラが異なる。

  • UHCI(Universal Host Controller Interface)
    • Intel社やVIA社のチップ
  • OHCI(Open Host Controller Interface)
    • Compaq社やALi・SiS・OPTiなど

Linuxでは、カーネル2.4から正式なサポートが開始され、カーネルモジュールを組み込むことで LinuxでUSBを使用可能となる。
UHCI」であれば【usb-uhci.o】モジュールを、「OHCI」であれば【usb-ohci.s】モジュールを組み込めばよい。
PCがどちらのコントローラを搭載しているかを調べるには【lspci】コマンドを使用する。

lspci | grep -i usb

USBカーネルモジュールが組み込まれているかを確認するのには lsmod コマンドを使う。


UART とは ( Universal Asynchronous Receiver Transmitter )

パソコンのシリアルポートなどに使われる通信回路。
コンピュータから送られてくるパラレル信号をシリアル信号に変換したり、周辺機器から送られてきたシリアル信号をパラレル信号に変換したりする。

SCSIとは ( Small Computer System Interface )

いわゆるスカジー、パソコン本体と周辺機器の接続方法の取り決め。
最初の規格はShugart社(現在のSeagate Technology社)の開発したSASIをベースにしている。
現在では汎用性や性能が大幅に強化された後継規格、SCSI-2やSCSI-3が普及している。

主に小型の外付けハードディスク・CD-ROM・MO・イメージスキャナなどの接続に用いる。
しかし設定が複雑かつ高価ゆえにデスクトップPCからはだんだん廃れていき、小型の外付けHDD・CD/DVD装置は 安価で大容量のIDEやシリアルATAに、イメージスキャナ等はホットプラグも可能で簡単なUSBに移り変わっていった。
現在ではワークステーションや小規模サーバの一部に、高信頼型HDDやディスクアレイ、テープバックアップ装置などの接続目的に使われているのみである。

今後、コストの低いSAS (Serial Attached SCSI)に取って代わられる予定である。