• 検索結果がありません。

1 週目 第 1 章 システム構成 C O N T E N T S 1-1 ハードウェアの設定 1-2 システムの起動 1-3 ランレベルとシステムの終了

N/A
N/A
Protected

Academic year: 2021

シェア "1 週目 第 1 章 システム構成 C O N T E N T S 1-1 ハードウェアの設定 1-2 システムの起動 1-3 ランレベルとシステムの終了"

Copied!
44
0
0

読み込み中.... (全文を見る)

全文

(1)

1-1 ハードウェアの設定 1-2 システムの起動 1-3 ランレベルとシステムの終了 C O N T E N T S

システム構成

1

1

週目

(2)

1

-1

ハードウェアの設定

SECTION

マザーボード

 CPUやメインメモリーなどのデバイス(半導体製品や周辺機器のこと)の一部 は、マザーボードという基板上に取り付けられています。このマザーボードを通 して、デバイス同士がお互いに情報をやりとりし、さまざまなデータ処理を行い ます。

BIOS の役割

 BIOS(Basic Input/Output System、バイオス)は、コンピュータに接続され たさまざまなデバイスを制御する、最も基本的な制御プログラムです。  たとえば、コンピュータの電源を入れると、LinuxなどのOSが起動していなく てもモニターに文字や画像が表示され、キーボードを使ってコンピュータを制御 したり、ハードディスクやフロッピーディスクなどの周辺装置を使えるようにな ります。これは、BIOSがこれらのデバイスを制御しているからです。なお、シ ステム起動後は、Linuxが直接それらのデバイスを制御します。  また、BIOSにはコンピュータの電源を入れたときに、マザーボード上のCPU やメモリーに障害がないかをチェックする機能(POST、Power-On Self Test、 ポスト)もあります。POSTを実行してデバイスに異常がないことを確認すると、 BIOSはOSを起動するためのプログラムであるブートローダーを起動します。  BIOSはマザーボード上の書き換え可能なROM(Read Only Memory)に保存 されています。ROMは、読み出し専用のメモリーのことをいいます。BIOSもプ ログラムである以上、不具合があったり、BIOS作成時には気づかなかった問題 が発生する可能性があります。過去の事例では、BIOSがハードディスクの容量 を間違って認識してしまうという問題が発生したこともありました。

(3)

第 1章 シ ス テ ム 構成 あります。

IRQ

 キーボードで入力を行うと、入力をしたという信号がCPUに伝わります。 CPUがこの情報を受け取ると、現在行っている処理をいったん中止して、キー ボードからの入力情報を処理します。このようなデバイスからCPUへの信号を

割り込み要求IRQ、Interrupt ReQuest)といいます。割り込みとは、現在行っ

ている処理を中止して、より優先度の高い別の処理を行う仕組みをいいます。  IRQには基本的に0〜15までの16個の番号がついていて、その中のいくつかは 特定のデバイスのために割り当てられています。たとえば、IRQ1はキーボード に割り当てられています。  IRQとその典型的な使用例は次のとおりです。 ■ 表 IRQ と一般的な使用例 IRQ 使用例   0 システムタイマ   1 キーボード   2 IRQ8-15とのカスケード   3 シリアルポート(COM2)   4 シリアルポート(COM1)   5 パラレルポート(LPT2)   6 フロッピーディスクコントローラ   7 パラレルポート(LPT1)   8 リアルタイムクロック   9 空き 10 空き 11 空き 12 PS/2マウス 13 数値演算プロセッサ 14 プライマリIDE 15 セカンダリIDE

(4)

参考 IRQ2のカスケードについて  IRQは割り込みコントローラという回路によって制御されています。この割り込 みコントローラは8個の割り込みしか管理できません。そこで、2つの割り込みコ ントローラを搭載して16個の割り込みを管理できるようになっています(現在は17 個以上のIRQをサポートしている場合もあります)。ただし、割り込みコントロー ラ同士を接続するために、IRQ2が接続用として使われています。そのため、実際 には15個の割り込みを管理できることになります。このように、機器を段階的に 接続する方式をカスケード接続といいます。たとえば、USBもカスケード接続が可 能で、USBハブを使って段階的につなぐことができます。  LinuxではIRQを「応答を必要とする割り込み処理」と「応答を必要としない割 り込み処理」とに分け、前者はなるべく実行時間が短くなるように処理を行い、 後者は後でまとめて処理を行うようにしています。  Linuxが使用しているIRQ情報は/proc/interruptsファイルに格納されてい ます。そのファイルの内容を表示するには、「cat /proc/interrupts」コマンドを 実行します。catはファイルの内容を出力するコマンドです。コマンドについて は第3章で詳しく学習します。 $ cat /proc/interrupts CPU0 0: 491764 IO-APIC-edge timer 1: 1 IO-APIC-edge i8042 6: 5 IO-APIC-edge floppy 7: 0 IO-APIC-edge parport0 (以下略) Memo ディレクトリとは  ディレクトリとはハードディスクなどの記憶装置にファイルを保存するときに、 ファイルを分類したり整理するための保管場所のことです。Windowsではフォル ダが同じような役割を持っています。  Linuxはすべてのファイルを /(ルートディレクトリ)を頂点とした、1つのツリー 体系で管理しています。ツリー体系とは、ルートディレクトリからディレクトリ やファイルが枝分かれする仕組みのことです。  たとえば、/proc/interruptsファイルはルートディレクトリ直下にあるprocサブ

(5)

第 1章 シ ス テ ム 構成 ディレクトリ内にあるinterruptsファイルのことを指します。ディレクトリに関し ては後ほど詳しく学習します。 / (ルートディレクトリ) bin/ sbin/ dev/ proc/ etc/ … … ioports dma interrupts /proc/interrupts cmdline ※ディレクトリは末尾に「/」が付いています。 Memo /proc ファイルシステム  /procファイルシステムは疑似的なファイルシステムで、実際にハードディス ク上に存在するものではありません。/procはLinuxが起動するとメインメモリー 上に自動的に作成されます。このファイルシステムにはハードウェアや起動中の プロセス(プログラムのこと)の情報などが含まれており、/procディレクトリから 参照できます。

I/O アドレス

 周辺機器の内部には、CPUとデータをやり取りするためのレジスタ(小さな容 量のメモリー)があります。  I/Oアドレスとは、周辺機器のレジスタにCPUがアクセスするための窓口のよ うなものです。メインメモリー上のI/Oアドレス領域にCPUが命令を書き込む と、それは周辺機器のレジスタ領域に命令を書き込んだことになり、周辺機器は その命令にしたがって処理を行います。

(6)

同じ内容

メインメモリーの特定の領域 キーボードコントローラの レジスタ CPU 読み書き メインメモリー I/Oアドレス領域 キーボード コントローラ レジスタ

図 I/O アドレス   ど の デ バ イ ス が ど のI/Oア ド レ ス を 使 用 し て い る か に つ い て の 情 報 は、 /proc/ioportsファイルに保存されています。 $cat /proc/ioports 0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0064-0064 : keyboard 0070-0077 : rtc (以下略)  次の表は、いくつかのデバイスに関する一般的なIRQとI/Oアドレスの例です。 ■ 表 デバイスに割り当てられる IRQ と I/O アドレス デバイス名 IRQ I/Oアドレス /dev/ttyS0(COM1) 4 0x03f8 /dev/ttyS1(COM2) 3 0x02f8 /dev/ttyS2(COM3) 4 0x03e8 /dev/ttyS3(COM4) 3 0x02e8 /dev/lp0(LPT1) 7 0x0378-0x037f /dev/lp1(LPT2) 5 0x0278-0x027f

(7)

第 1章 シ ス テ ム 構成

DMA

 昔のCPUは性能が低かったために、周辺機器とメモリー間のデータ転送を処 理することは、CPUにとって大きな負担となっていました。そこで考え出され たのがDMA(Direct Memory Addressing)という仕組みです。DMAはCPUの 代わりに専用回路を使用することで、CPUを経由せずに周辺装置とメモリー間 でデータをやり取りできます。これにより、CPUは他の処理に集中できます。  DMAもIRQと同様に、DMAチャネルと呼ばれる0 〜 7までの番号がついてい ます。システムが使用しているDMAチャネルの情報は、/proc/dmaファイル に格納されています。 $ cat /proc/dma 2: floppy 4: cascade  DMAのコントローラもIRQと同様に2つのコントローラで構成されています。 一方のコントローラが0 〜 3のチャネルを、もう一方が4 〜 7のチャネルを制御し ます。また、これらの2つのコントローラを接続するためにDMA4がカスケード 接続用に使われています。

コールドプラグデバイスとホットプラグデバイス

 周辺機器の中には、コンピュータに電源が入っている状態でも、接続したり取 り外したりできるものと、電源がOFFになっていないとできないものがありま す。前者をホットプラグデバイス、後者をコールドプラグデバイスといいます。  また、コンピュータの電源を入れた状態で、周辺機器を接続したり取り外した りすることをホットスワッピングといいます。  ホットプラグデバイスの例としては、USB、IEEE1394などがあります。また、 サーバのようないつでも利用できることが求められているシステムでは、PCIが ホットプラグに対応しているものもあります。

(8)

プラグアンドプレイ

 周辺機器をコンピュータに接続するときは、その周辺機器にIRQやI/Oアドレ スなどの割り当てを行う必要があります。プラグアンドプレイ(PnP)に対応した 周辺機器は、コンピュータに接続すると、デバイスドライバ(デバイスを動かす ためのプログラム)の読み込み、IRQやI/Oアドレスの割り当てが自動的に行われ ます。

 LinuxではHALデーモン(hald)がプラグアンドプレイの役割を果たします。

デーモン(daemon)とは、システムに常駐するプログラムのことです。haldはリ アルタイムにシステムに接続されたデバイスを管理します。

 デバイスがシステムに接続されると、他のアプリケーションがそのデバイスを 認識したり、監視、制御したりできるように、haldはD-Bus(Desktop Bus)と いうアプリケーション間で情報のやり取りを行うための仕組みを使って、別のア プリケーションにハードウェアの変更を通知します。

PCI バス

 PCIバスは最も普及しているパソコン内部のバスの規格です。バスとはコン ピュータ内部の機器同士で、信号のやり取りの際に使用する共通の伝送路のこと です。  マザーボード上にはPCIスロットと呼ばれるPCIカードを装着する差し込み口 があります。そこにPCIカードを装着することで、PCIバスを通してデータのや り取りが行われます。  PCIカードにはサウンドカード、グラフィックカード、ネットワークカード、 SCSIカードといったものがあります。  現在のPCIデバイスの構成は、lspciコマンドで確認することができます。 # lspci

00:00.0 Host bridge: Intel Corporation 5100 Chipset Memory Controller Hub (rev 90)

00:02.0 PCI bridge: Intel Corporation 5100 Chipset PCI Express x8 Port 2-3 (rev 90)

(9)

第 1章 シ ス テ ム 構成  また、-vや-vvオプションをつけることで、詳細情報を表示できます。表示さ れる内容は、ベンダー情報の他にIRQ、I/Oポートの値、バス速度などがあります。 Memo root ユーザーと一般ユーザー  rootユーザーとは、Linuxのインストール時に作成される管理者権限を持った ユーザーです。スーパーユーザーともいいます。rootは強大な権限を持っている ため、誤った操作によってシステムに悪影響を及ぼさないよう、root権限が必要 なとき以外は権限の制限された一般ユーザーで作業を行います。  「# lspci」のように、本書ではコマンドの前に「#」や「$」が付いています。「#」 はrootユーザーがコマンドを実行していることを表し、「$」は一般ユーザーがコマ ンドを実行していることを表しています。 確認問題 IRQ の情報  どのIRQが使用されているかを調べるには、/procディレクトリ以下のどのファ イルを調べればよいか。 解説  「cat /proc/interrupts」を実行することにより、使用中のIRQの情報を表示で きます。正解はinterruptsです。 確認問題 プリンタポート  1番目のプリンタポートに割り当てられるIRQ番号はどれか。 a.1   b.5   c.7   d.12 解説  1番目のプリンタポートに割り当てられるIRQ番号は7です。IRQ1はキーボー ド、IRQ5は2番目のプリンタポート(LPT2)、IRQ12はPS/2マウスに割り当て られます。正解はcです。

(10)

確認問題 I/O アドレス  ネットワークカードが使用しているI/Oアドレスの範囲を調べるには、/proc ディレクトリ以下のどのファイルを調べればよいか。 解説  「cat /proc/ioports」を実行することにより、使用中のI/Oアドレスについての 情報を表示できます。正解はioportsです。. 確認問題 シリアルポート  WindowsではCOM1として知られる最初のシリアルポートのデバイスファイ ルは次のどれか。 a./dev/tty1    b./dev/tty0   c./dev/ttyS0 d./dev/ttyS1   e./dev/com1 解説  シリアルポート(COMポート)に関する情報は次のとおりです。 デバイス名 IRQ I/Oアドレス /dev/ttyS0(COM1) 4 0x03f8 /dev/ttyS1(COM2) 3 0x02f8  正解はcです。 確認問題 DMA チャネル  どのDMAチャネルが使用されているかを調べるには、/procディレクトリ以下 のどのファイルを調べればよいか。

(11)

第 1章 シ ス テ ム 構成 解説  「cat /proc/dma」コマンドを実行することにより、使用中のDMAチャネルを 表示できます。正解はdmaです。 確認問題 PCI デバイス  現在のPCIデバイスの構成を調べるには、どのコマンドを実行すればよいか。 解説  PCIデバイスの構成はlspciコマンドで確認できます。正解はlspciです。 受験のポイント  重要なファイルについては、ファイル名を入力させる問題が出題されます。 試験ではinterruptsなのかinterruptなのかといった複数形(s)の有無で迷ってし まうことがあります。重要なファイル名についてはうろ覚えにせずに、しっ かり入力できるようにしましょう。また、パスも含めてファイル名を入力さ せる問題もありますので、/etc/interruptsのようにフルパスで覚えておくと、 いろいろな問題形式に対処することができます。

USB

 USB(Universal Serial Bus)は、パソコンと周辺機器を結ぶインターフェイス の規格の1つです。インターフェイスとは、コネクタ部分の形状やデータ転送の 方法などを定めた仕様のことをいいます。  プリンタやスキャナ、ハードディスク、メモリー、キーボード、マウスなど、 多くのデバイスがUSBに対応しています。 USBの規格  USBにはUSB1.1、USB2.0、USB3.0といった複数の規格があり、最大データ転 送速度が違います。

(12)

■ 表 USB の比較 規格名 最大データ転送速度 USB1.1 12Mbps USB2.0 480Mbps USB3.0 5Gbps Memo 容量の単位  USB1.1の12Mbpsは12メガビット/秒、つまり1秒間に12メガビットのデータ を転送できることを表します。メガやギガなどの単位については次の図を参照し てください。 単位 用量 キロ(K) 210ビット メガ(M) 220ビット ギガ(G) 230ビット テラ(T) 240ビット ペタ(P) 250ビット 1024 倍 1024 倍 1024 倍 1024 倍

図 容量の単位  たとえば1ギガは1024メガ、1テラは1024ギガです。 USBの特徴  USBには次の特徴があります。 127台までの周辺機器を接続できる。 電源をホスト(コンピュータ)から供給できる。 ホットスワッピングに対応している。 プラグアンドプレイに対応している。 USBデバイス間ではデータのやりとりはできない。 USBホストコントローラ  コンピュータにはUSBデバイスを制御するためのUSBコントローラがありま す。USBコントローラにはいくつか種類があり、それぞれ異なる制御方法を採用

(13)

第 1章 シ ス テ ム 構成 しているため、デバイスを動かすためのプログラムであるデバイスドライバは USBコントローラごとに用意する必要があります。 ■ 表 ホストコントローラの種類 種類 対応するUSB規格 コントローラドライバ名

UHCI USB1.1 usb-uhci.ko

OHCI USB1.1 usb-ohci.ko

EHCI USB2.0 ehci-hcd.ko

xHCI USB3.0 xhci.ko

※ UHCI と OHCI は同じ USB1.1 対応ですが開発元が違います。

 しかし、ホストコントローラの種類ごとにデバイスドライバを作成するのは大 変な作業です。そこで、LinuxにはUSBコアと呼ばれるホストコントローラの 違いを吸収するドライバがあります。このUSBコアドライバのおかげで、USBデ バイスドライバを1つ作るだけで、各ホストコントローラに対応できるようにな ります。また、USBコアは、接続されたUSBデバイスに対応する適切なドライバ を起動したり、/devディレクトリ以下にデバイスファイルを作成する役割も持っ ています。 UHCI ホストコントローラ デバイスドライバ USBコア OHCI ホストコントローラ デバイスドライバ

図 USB コアの役割

(14)

デバイスクラスとクラスドライバ

 USBデバイスにはいろいろな製品があります。それらのデバイスをいくつか の種類に分類したものをデバイスクラスと呼びます。

■ 表 デバイスクラス

デバイスクラス 対応デバイス

HID(Human Interface Device) キーボード、マウス、ジョイスティックなど

Communication Device Class Ethernetアダプタ、モデムなど

Audio Class スピーカー、マイクなど

Mass Storage Class USBメモリー、ハードディスクなど

Display モニターなど  各デバイスクラスには、クラスドライバと呼ばれる汎用ドライバが用意されて います。たとえば、HIDであればキーボード、マウス、ジョイスティックなどの デバイスに対して、それぞれ汎用クラスドライバが用意されています。そのため、 各ベンダーはそれらの製品の開発のときに、独自にドライバを開発する必要はあ りません。  一方、特定のデバイスクラスに属さない特殊なUSBデバイスに対しては、ベン ダーがその製品のドライバを開発する必要があります。これをベンダーデバイス ドライバと呼びます。  システムに搭載されているUSBホストコントローラを調べるには、lspciコマ ンドを使用します。lspci -vコマンドは多くの情報を表示しますので、grepとい うコマンドを使ってUSBという文字列を含む行だけを取り出しています。

# lspci -v | grep USB

00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02) (prog-if 00 [UHCI]) 00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02) (prog-if 00 [UHCI]) 00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 02) (prog-if 00 [UHCI]) 00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02) (prog-if 20 [EHCI])

(15)

第 1章 シ ス テ ム 構成  出力結果にUHCIとEHCIの記載があるので、USB1.1とUSB2.0をサポートして いることがわかります。

 USBデバイスの情報を表示するにはlsusbコマンドを実行します。lsusbコマ

ンドは、/proc/bus/usbディレクトリ以下に格納されたUSBデバイスの情報を

読み込みます。

# lsusb

Bus 005 Device 001: ID 0000:0000

Bus 002 Device 003: ID 054c:008b Sony Corp. Micro Vault 64M Mass Storage

Bus 002 Device 002: ID 054c:0105 Sony Corp. Micro Vault Hub

(以下略)  この例では、ソニー製のUSBメモリーを使用していることがわかります。

sysfs

 sysfsファイルシステムも、procファイルシステムと同様にハードディスク上 に実体のない疑似的なファイルシステムです。  procファイルシステムの構造はLinuxに導入されて以来、しだいに複雑でわか りにくいものになってきました。そこで、新たに導入されたのがsysfsファイル システムです。  sysfsファイルシステムは簡潔な構造になっていて、デバイスドライバなどの 情報をユーザーやアプリケーションとやり取りするために使用されています。 sysfsファイルシステムは通常/sysディレクトリにマウントされます。マウント については後ほど学習します。

udev

 Linuxはすべてのコンピュータ資源をファイルとして扱います。これはデバイ スであっても例外ではありません。ユーザーがデバイスを使用するときは、デバ イスファイルを通してデバイスにアクセスします。デバイスファイルは/dev ディレクトリ以下にあります。  以前のLinuxでは使用しないデバイスを含む、すべてのデバイスファイルを事

(16)

前に準備しておく必要がありました。しかし、デバイスの種類は非常に多いため、 用意しておくデバイスファイル数が膨大になりました。この無駄をなくし、シス テム上に存在するデバイスに対応したデバイスファイルだけを提供するudev

(Userspace DEVice management)という仕組みが考え出されました。

 udevは、Linuxがデバイスの接続を検知すると、そのデバイスに対応するデバ イスファイルをsysfsの情報をもとに自動的に作成します。udevにより、事前に デバイスファイルを準備しておく必要がなくなりました。 確認問題 USB コントローラ  USB2.0規格に対応するホストコントローラは、EHCI、OHCI、UHCIのうち のどれか。 解説  EHCIはUSB2.0規格に対応したホストコントローラです。OHCIとUHCIは USB1.1規格に対応したホストコントローラです。正解はEHCIです。 確認問題 USB デバイス  /proc/bus/usb以下に格納されたUSBデバイスの情報を読み込むコマンドを 回答しなさい。 解説  USBデバイスの情報は/proc/bus/usbディレクトリ以下に格納されています。 その情報を表示するにはlsusbコマンドを使います。正解はlsusbです。

(17)

第 1章 シ ス テ ム 構成 受験のポイント  USBは広く普及しているために、試験にもよく出題されます。ホストコン トローラの種類と対応するUSB規格、デバイスクラスの種類などはしっかり 把握しておきましょう。 確認問題 ハードディスク上にはないファイルシステム  次の選択肢のうち、ハードディスク上に実体のない疑似的なファイルシステム はどれか(複数選択)。 a.procfs   b.mke2fs   c.virtualfs d.sysfs    e.ReiserFS 解説  選択肢bはext2というLinuxファイルシステムを作成するためのコマンドです。 選択肢eはReiserFSという実際に存在するファイルシステムです。選択肢cのよ うなファイルシステムはありません。mke2fsコマンドとReiserFSファイルシス テムについては後ほど学習します。正解はa、dです。 確認問題 デバイスファイル  sysfsの情報をもとに、動的にデバイスファイルを作成する仕組みは何か。 解説  システム上に存在するデバイスに対応したデバイスファイルだけを提供する仕 組みがudevです。Linuxがデバイスの接続を検知すると、udevはそのデバイスに 対応するデバイスファイルをsysfsファイルシステムの情報をもとに自動的に作 成します。正解はudevです。

(18)

カーネルモジュール

 CPUやメモリー、ハードディスクなどのハードウェア資源の管理およびプロ セスの制御など、OSの基本機能を提供するソフトウェアをカーネルといいます。  厳密には、Linuxとはこのカーネル部分をいいます。 Memo プロセスとは  プロセスとは、システム上で動作するプログラムの最小単位のことです。Linux はプロセスに対し、メモリーなどの資源を割り当てて管理します。アプリケーショ ンの中には、複数のプロセスを動作させるものもあります。  通常、Linuxカーネルに新しい機能を追加する場合には、カーネルを再構築し なければなりません。このカーネルの再構築は、非常に手間のかかる作業です。  また、再構築によってLinuxカーネルに機能を組み込んだ場合に、それが原因 で問題が発生する可能性もあります。たとえば、使用頻度の低い周辺機器のデバ イスドライバがあり、カーネルを再構築してそのデバイスドライバを組み込んだ とします。この場合、周辺機器が接続されていないときでも、ドライバがメモリー 上に読み込まれてしまいます。これは、コンピュータ資源の無駄遣いです。また、 万が一そのドライバに不具合があった場合には、余計なシステムエラーを引き起 こす可能性もあります。 デバイスドライバ カーネル カーネル内に取り込む

図 カーネルの再構築でドライバを組み込んだ場合  そこで、デバイスドライバのようなプログラムに対しては、再構築によってカー ネルに組み込むのではなく、必要に応じてカーネルに動的に追加できる仕組みが あれば便利です。これを可能にするのがカーネルモジュールです。  カーネルモジュールとは、後からカーネルに動的に追加されるプログラム部品 (モジュール)のことをいいます。

(19)

第 1章 シ ス テ ム 構成 カーネルモジュール (デバイスドライバ) カーネル 必要に応じて呼び出す

図 カーネルモジュールとしてドライバを追加する場合  カーネルモジュールを使用する利点としては、次のようなものがあります。 カーネルのサイズが小さくなる。 ハードウェアの構成が変わっても、カーネルを再構築する必要がない。 動作中のカーネルに組み込むことができる。 ドライバをアップデートするとき、モジュールをアップデートするだけで対応 できる。  カーネルモジュールは、/lib/modulesディレクトリ以下に保存されています。 カーネルモジュールの情報表示  現在システムに読み込まれているモジュールを表示するにはlsmodコマンド を使用します。 # lsmod

Module Size Used by autofs4 29253 3 hidp 23105 2 cdrom 36577 1 ide_cd uhci_hcd 25421 0 ohci_hcd 24553 0 ehci_hcd 33869 0 (一部抜粋)  Moduleはモジュール名、Sizeはモジュールのサイズ、Used byはモジュールが 使用された回数と参照しているモジュール名を表示しています。  カーネルモジュールには依存関係が存在するものもあります。たとえば、上の 例でlsmodコマンドの結果からcdromモジュールがide_cdモジュールに参照され ていることがわかります。したがって、ide_cdモジュールは単独では動作せず、

(20)

いる必要があります。  lsmodコマンドの出力結果よりも詳しいモジュールの情報を表示するには、 modinfoコマンドを使用します。次の例は、USB2.0のモジュールであるehci_ hcdの詳細情報を表示しています。 # modinfo ehci_hcd filename: /lib/modules/2.6.18-164.el5/kernel/drivers/ usb/host/ehci-hcd.ko license: GPL

author: David Brownell

description: 10 Dec 2004 USB 2.0 'Enhanced' Host Controller (EHCI) Driver

srcversion: 68563B2089EEAFEABC03A2B (以下略) カーネルモジュールのロード  カーネルモジュールは通常Linuxによって自動的に読み込まれますが、手動で 読み込むにはinsmodコマンドまたはmodprobeコマンドを使用します。  insmodコマンドは指定したモジュールだけをカーネルに読み込み、依存関係 のあるモジュールは読み込みません。 # insmod /lib/modules/2.6.18-164.el5/kernel/drivers/ide/ide-cd.ko  もし、cdromモジュールが読み込まれていないときにide-cdモジュールを insmodコマンドで読み込むとエラーになります。 # insmod /lib/modules/2.6.18-164.el5/kernel/drivers/ide/ide-cd.ko insmod: error inserting '/lib/modules/2.6.18-164.el5/kernel/ drivers/ide/ide-cd.ko': -1 Unknown symbol in module

 このようにinsmodコマンドを使用すると、あるモジュールがどのような依存 関係を持っているのかを、ユーザー自身が調べなくてはならないため面倒です。 そこで、モジュールを読み込むときにはmodprobeコマンドを使用すると便利で す。modprobeは指定したモジュールだけでなく、依存関係にあるモジュールも 必要に応じて読み込むコマンドです。

(21)

第 1章 シ ス テ ム 構成  次の例はcdromモジュールが読み込まれていない状態で、ide_cdモジュールを 読み込んだときの出力結果です。-vオプションは、モジュールを読み込むときの 様子を表示します。  -vは「冗長な、言葉数の多い」といった意味のVerboseという言葉に由来します。 # modprobe -v ide_cd insmod /lib/modules/2.6.18-164.el5/kernel/drivers/cdrom/cdrom.ko insmod /lib/modules/2.6.18-164.el5/kernel/drivers/ide/ide-cd.ko  insmodコマンドとmodprobeコマンドのモジュールの指定方法には違いがある ので注意してください。insmodコマンドはモジュールのファイル名(/lib/ modules/2.6.18-164.el5/kernel/drivers/ide/ide_cd.ko)を指定する必要があります が、modprobeコマンドはモジュール名(ide_cd)を指定するだけでモジュールを 読み込むことができます。 カーネルモジュールのアンロード  追加したカーネルモジュールを削除するには、rmmodコマンドまたは modprobe -rコマンドを使用します。どちらも、モジュール名を指定するだけ で削除ができます。削除をしようとしているモジュールを別のモジュールが使用 している場合はエラーになります。  rmmodコマンドは指定したモジュールだけを削除します。ide_cdモジュール が依存しているcdromモジュールは削除されていません。 # rmmod ide_cd # lsmod | grep cdrom

cdrom 36577 0

 「modprobe -r」は指定したモジュールだけでなく、そのモジュールが依存する 他のモジュールも可能であれば削除しようとします。

# modprobe -r ide_cd # lsmod | grep cdrom

 modprobeコマンドを使ってide_cdモジュールを削除すると、ide_cdが依存し ているcdromモジュールも削除されていることがわかります。

(22)

modprobeコマンド  modprobeコマンドはすでにご紹介したとおり、カーネルにモジュールを追加 したり削除したりするプログラムです。modは「module(モジュール)」に由来し、 probe(プローブ)は「調査する」という意味です。  modprobeコマンドは依存関係にあるモジュールも同時に読み込むことができ るように、modules.depというファイルを参照します。このファイルには、各 モジュールが他のどのモジュールと依存関係にあるのかが列挙されています。次 の例では、modules.depファイルの内容を表示しています。lessはcatコマンド と同様にファイルの内容を表示するコマンドです(後ほど詳しく学習します)。 # less /lib/modules/2.6.18-194.8.1.el5/modules.dep /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ tokenring/3c359.ko: /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ pcmcia/3c574_cs.ko: /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ pcmcia/3c589_cs.ko: /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/3c59x.ko: /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/mii.ko (以下略)

 modules.depを最新の状態にするにはdepmodコマンドを使用します。depは 「DEPendency(依存状態)」から来ています。depmodコマンドに特定のモジュー ルを指定して、指定したモジュールに関する依存関係のみを調査することも可能 ですが、通常はdepmod -aを実行して、すべてのモジュールを対象とした依存 関係を調査します。  利用可能なカーネルモジュールの一覧を表示するにはmodprobe -lを実行しま す。 # modprobe -l /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ tokenring/3c359.ko /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ pcmcia/3c574_cs.ko /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/ pcmcia/3c589_cs.ko /lib/modules/2.6.18-194.8.1.el5/kernel/drivers/net/3c59x.ko (以下略)

(23)

第 1章 シ ス テ ム 構成  特定の文字列を含んだカーネルモジュールだけを表示することも可能です。た とえば、fatという文字列を含むすべてのカーネルモジュールを表示するには、 「modprobe -l "*fat*"」とします。アスタリスク(*)はワイルドカードという特殊 文字で、0文字以上の任意の文字列に相当します。 # modprobe -l “*fat*” /lib/modules/2.6.18-194.8.1.el5/kernel/fs/fat/fat.ko /lib/modules/2.6.18-194.8.1.el5/kernel/fs/vfat/vfat.ko  modprobeコマンドのデフォルトの設定ファイルは/etc/modprobe.confで す。この設定ファイルにより、modprobeコマンドの動作を制御できます。  別の設定ファイルを使ってmodprobeコマンドを実行したいときには、-Cオプ ションの後にそのファイルを指定します。次の例では、new_modprobe.confファ イルを使ってcdromモジュールを読み込んでいます。

# modprobe -C /etc/new_modprobe.conf cdrom

■ 表 modprobe コマンドのオプション オプション 説明 -v 処理内容を詳細表示する(Verbose) -C (Configuration)デフォルトの設定ファイルを無視して、別の設定ファイルを指定する -r モジュールを削除する。依存するモジュールが使われていない場合、それらのモジュールも削除する(Remove) -l モジュールの一覧を表示する(List) 説明の最後の( )は、オプションの由来を表しています。

ハードディスク

 ハードディスクには、PATA(パラレルATA)、SATA(シリアルATA)、

SCSI、USB、IEEE1394など、いろいろな種類があります。それぞれのハードディ スクについて概要を説明していきます。

(24)

PATAディスク  PATAディスクは比較的古いコンピュータに搭載されていましたが、現在は、 よりデータ転送の高速なSATAが主流になっています。  PATAという規格が存在するわけではなく、パラレル転送と呼ばれるデータ転 送方式を利用した規格であるIDE(ATA)と、SATAとを区別するために使われ ています。  IDEは1本のケーブルに2台までの機器が接続できるようになっていて、一方の 機器をマスター、もう一方の機器をスレーブに設定します。

 IDEの拡張版であるEIDE(エンハンストIDE)やUltra ATAは2つのコントロー ラが搭載されていて、それぞれプライマリセカンダリと呼んで区別します。各 コントローラには1本のケーブルを接続できるので、合計4台のハードディスクや CD-ROM、DVD-ROMドライブなどの機器を接続できるようになっています。  LinuxでのPATAのデバイスファイル名は次のとおりです。 ■ 表 PATA のデバイスファイル名 ハードディスク・光学ドライブ デバイスファイル名 プライマリマスター /dev/hda プライマリスレーブ /dev/hdb セカンダリマスター /dev/hdc セカンダリスレーブ /dev/hdd  最近のLinuxはPATAディスクをSCSIディスクと見なして取り扱うものが増え ています。したがって、PATAであってもSATAと同じ命名規則に従う場合があ ります。 SATAディスク  SATAは従来のパラレル転送方式をシリアル転送方式に変更したものです。 PATAでは1つのケーブルに2台の機器が接続されていたため、データの制御が複 雑になりデータ転送の高速化には限界がありました。  それに対し、SATAは1本のケーブルに1台のデバイスを接続するため、ケーブ ルの作りがシンプルになり高速なデータ転送を実現できるようになりました。  ほとんどのLinuxのSATAドライバは、SATAディスクをSCSIディスクと見な します。

(25)

第 1章 シ ス テ ム 構成 SCSIディスク

 SCSI(Small Computer System Interface)は、 パ ソ コ ン な ど の 小 さ な コ ン ピュータと周辺機器を接続するための規格です。  SCSIは、元々はPATAと同様にパラレルバスでしたが、最近のSCSIには SATAと同様にシリアルバスのものもあります。  SCSIにはバス幅として8ビットと16ビットがあります。パラレルバスの場合、 8ビットであれば8本の信号線が、16ビットでは16本の信号線があります。バス幅 が増えれば、それだけ多くの機器を扱え転送量も大きくなります。  8ビットの場合は8台のデバイスが、16ビットの場合は16台のデバイスが扱えま す。ただし、そのうちの1つはSCSIコントローラに割り当てられるので、周辺機 器はそれぞれ、7台と15台まで接続できることになります。各SCSI機器には機器 を識別するためのSCSI IDという番号が割り当てられます。番号は8ビットの場 合は0〜7、16ビットの場合は0〜15まであり、番号が重ならないようにします。 ■ 表 SCSI 規格一覧 規格群 名称 速度 バス幅 SCSI-1 SCSI 5MB/s 8ビット SCSI-2 FastSCSI 10MB/s 8ビット SCSI-2 FastWideSCSI 20MB/s 16ビット SCSI-3 Wide Ultra SCSI 40MB/s 16ビット SCSI-3 Ultra320 320MB/s 16ビット  SCSI機器のデバイスファイル名は次のとおりです。 ■ 表 SCSI 機器のデバイスファイル名 デバイスの種類 デバイスファイル名 ハードディスク /dev/sda, /dev/sdb, … テープドライブ /dev/st0, /dev/st1, …または、/dev/nst0, /dev/nst1, … CD-ROM DVD-ROM /dev/scd0, /dev/scd1, …  テープドライブで使われる/dev/st〜と/dev/nst〜の違いは巻き戻しを行うか どうかです。/dev/st〜が1回の書き込みが終わるとテープの巻き戻しを行うのに 対して、/dev/nst〜は巻き戻しを行いません。

(26)

 フルバックアップを行う場合は、1本のテープに1つのバックアップデータを保 存することが通常なので/dev/st〜が適していますが、複数回に渡りデータを1本 のテープに連続して書き込む場合には/dev/nst〜を使用する必要があります。  なお、LinuxはUSBメモリーやIEEE1394ディスクも、SATAディスクと同様に SCSIデバイスとして扱います。したがって、USBメモリーをコンピュータに接 続すると/dev/sda、/dev/sdb…のように表示されます。 パーティション  パーティションとは、1台のハードディスクを論理的に区切った1つ1つの領域 を指します。1つ1つのパーティションをあたかも別々のハードディスクであるか のように取り扱うことができます。そのため、各パーティションには専用のデバ イスファイル名がつけられます。たとえば、1台目のSCSIハードディスク(/dev/ sda)に3つの基本パーティションがあった場合には、先頭から順に/dev/sda1、 /dev/sda2、/dev/sda3という命名規則でデバイスファイル名が設定されます。  パーティションについては第2章で詳しく学習します。 確認問題 カーネルモジュールの読み込み  指定したカーネルモジュールだけでなく、依存関係にあるカーネルモジュール も必要に応じて読み込むコマンドは何か。コマンド名のみを回答しなさい。 解説  insmodコマンドは指定したモジュールだけをカーネルに読み込み、依存関係に あるモジュールは読み込みません。一方、modprobeコマンドは依存関係にある モジュールも読み込みます。正解はmodprobeです。 受験のポイント  modprobeコマンドを使用する際には、「depmod -a」でmodules.depファイ ルを最新の状態にしておく必要があることに注意しましょう。

(27)

第 1章 シ ス テ ム 構成 確認問題 カーネルモジュールの情報  現在システムに読み込まれているカーネルモジュールを表示するのは、どのコ マンドか。 a.depmod   b.modinfo   c.insmod   d.lsmod 解説  現在システムに読み込まれているカーネルモジュールを表示するには、lsmod コマンドを使用します。depmodは依存関係を調査するコマンド、modinfoはカー ネルモジュールの詳細を表示するコマンド、insmodはカーネルモジュールを読み 込むコマンドです。正解はdです。 確認問題 パーティション  IDEコントローラに接続されているハードディスクについて、セカンダリスレー ブの2番目の基本パーティションのデバイスファイル名は何か。 解説  パーティションはそれぞれ専用のデバイスファイル名があります。IDEのよう なPATAディスクのセカンダリスレーブのデバイス名は/dev/hddです。その基本 パーティションは先頭から順に/dev/hdd1、/dev/hdd2、/dev/hdd3、……と いうデバイスファイル名が設定されます。正解は/dev/hdd2です。 確認問題 SCSI  SCSI-1には何台の周辺機器を接続できるか。数字のみを回答しなさい。 解説  SCSI-1は8ビットのバス幅なので、7台までの周辺機器を扱えます。SCSIコン トローラも合わせると8台になります。正解は7です。

(28)

1

-2

システムの起動

SECTION

システムの起動まで

 システムのブートの流れ(起動順序)を知っておくと、システムが起動しなかっ たときのトラブルシューティングに役立ちます。ここでは、システムの起動につ いて学習します。 BIOS MBR /boot(ブートパーティション) ブート ローダー カーネル initrd データ領域 カーネルモジュール /sbin/init

図 システムの起動の概略 BIOSの実行  コンピュータの電源を入れると、BIOSがメモリーなどの周辺機器の診断 (POST)を行い、問題がなければハードディスクの先頭512バイトをメモリー 上に読み込みます。この先頭512バイトをMBR(Master Boot Record、マスター

ブートレコード)といいます。 ブートローダーの実行  MBRには、ブートローダー(後述)の起動に必要なブートストラップコードと いう小さなプログラムが格納されています(第1ステージのブートローダー)。こ のプログラムが/boot上にあるブートローダーをメモリー上に読み込みます(第 2ステージのブートローダー)。  本来ならMBR内に、ブートストラップコードではなくブートローダーを直接 格納した方が良いのですが、MBRは512バイトしかないためブートローダー全部 を格納することができません。そこで、ブートローダーを呼び出すためのブート

(29)

第 1章 シ ス テ ム 構成 ストラップコードをMBRに格納することになりました。  ブートローダーは、ユーザーが指定したOSを起動する役割を持っています。 Linuxを指定した場合には、Linuxカーネルとinitrdファイルシステムをメモリー 上に読み込みます。その後はカーネルに制御を渡します。 カーネルの動作  カーネルはデバイスなどの初期化を行ったあとに、メモリー上にあるinitrdファ イルシステムにアクセスします。  initrdはカーネルが最初に使用する一時的なファイルシステムです。ファイル システムとは、OSがデータをファイルとして管理し、読み書きするための仕組 みのことです。initrdファイルシステムの中には、起動処理に必要なコマンド、 カーネルモジュール、設定ファイルなどが入っています。  カーネルが一時的にinitrdファイルシステムにアクセスする理由は、ハードディ スク上のファイルシステムにアクセスしたいからです。ファイルシステムにアク セスするには、そのためのカーネルモジュールが必要になります。 ファイルシステム(ext3) カーネル モジュール (ext3.ko)

図 ファイルシステムとカーネルモジュールの関係  しかし、そのカーネルモジュールはハードディスク上のファイルシステムに保 存されているため、その状態ではカーネルモジュールを読み込むことができませ ん。 ファイルシステム(ext3) ファイルシステムにアクセスする ために必要なカーネルモジュール がファイルシステムの中にある カーネル モジュール (ext3.ko) カーネル モジュール (ext3.ko)

(30)

 一方、initrdファイルシステムは、カーネルがアクセスできるような形でブー トローダーによってメモリー上に読み込まれています。したがって、カーネルは initrdファイルシステムにはアクセスできます。  カーネルはinitrdファイルシステム内にあるコマンドやカーネルモジュールを 使って、必要なデバイスファイルを作成したり、ハードディスク上のファイルシ ステムにアクセスするためのカーネルモジュールを読み込みます。  これでハードディスク上のファイルシステムにアクセスできるようになり、そ の中の/sbin/initコマンドが実行されます。これでinitrdファイルシステムは役 割を終え、メモリー上から破棄されます。 /sbin/initコマンドの実行

 initコマンドを実行すると、プロセスID(PID)が1の「init」というプロセスが 作成されます。このinitプロセスが、今後起動されるすべてのプロセスの親プロ セスになります。  initコマンドはさらに/etc/inittab設定ファイルを参照しながら、システムの 初期化や各種デーモンを起動し、最後にログイン画面を表示します。 dmesgコマンド  Linuxカーネルやモジュールのログ(システムの利用状況に関する記録のこと) はカーネルリングバッファと呼ばれるメモリー領域に保存されます。  Linuxを起動すると、システム起動の処理内容が画面に表示されます。これら の情報はカーネルリングバッファに保存されます。カーネルリングバッファの内 容を表示するにはdmesgコマンドを使用します。 # dmesg

Linux version 2.6.18-194.8.1.el5 (mockbuild@builder17. centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jul 1 19:07:06 EDT 2010

BIOS-provided physical RAM map:

BIOS-e820: 0000000000010000 - 000000000009f800 (usable) BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)

(31)

第 1章 シ ス テ ム 構成  カーネルリングバッファの容量は小さく、容量が一杯になってしまった場合に は古い情報から消されていきます。  システムをしばらく起動していると、新しい情報が次々にカーネルリングバッ ファに追加されるため、起動時の情報は失われてしまいます。  そこで、多くのLinuxディストリビューションでは起動時の情報を残すために、 システムが起動した後でカーネルリングバッファの情報を/var/log/dmesg ファイルに保存します。  また、起動時の情報はsyslogdというデーモンにより/var/log/messages ファイルにも保存されます。/var/log/messagesはカーネルレベルのログ情報が 保存されるファイルです。 Memo Linux ディストリビューションとは  Linuxは厳密にはカーネル部分のみを指します。しかし、カーネルだけではコン ピュータは私たちの役に立ちません。メールソフトやブラウザ、Officeアプリケー ションなどがインストールされていて、初めて使えるようになります。  Linuxカーネルだけの状態から実際に利用できる状態にするには、かなりの時間 とスキルが必要になります。  そこで、Linuxカーネルやドライバ、アプリケーションをパッケージ化して、イ ンストールすればすぐ使える状態にしたものが配布されるようになりました。こ れをディストリビューションといいます。

 ディストリビューションには、Debian系、Red Hat系、Slackware系など のいくつかの系統があります。 /proc/cmdlineファイル  /proc/cmdlineファイルには、ブートローダーがカーネルに渡したパラメー タが格納されています。 $ cat /proc/cmdline ro root=LABEL=/ rhgb quiet

(32)

確認問題 システムの起動  Linuxシステムの起動順序として正しいものはどれか。 a. BIOSの実行→カーネルとinitrdの読み込み→ブートローダーの実行→/sbin/ initの実行 b. BIOSの実行→/sbin/initの実行→ブートローダーの実行→カーネルとinitrdの 読み込み c. BIOSの実行→ブートローダーの実行→カーネルとinitrdの読み込み→/sbin/ initの実行 d. /sbin/initの実行→ブートローダーの実行→BIOSの実行→カーネルとinitrdの 読み込み 解説  システムの起動順序をきちんと理解しておきましょう。「図 システムの起動の 概略」に示したように、「BIOSの実行→ブートローダーの実行→カーネルとinitrd の読み込み→/sbin/initの実行」が正しい順序です。正解はcです。 確認問題 カーネリングバッファ  Linuxカーネル起動時の出力を確認したい。カーネルリングバッファの内容を 表示するには、どのようなコマンドを実行すればよいか。 解説  カーネルリングバッファの内容を表示するにはdmesgコマンドを使用します。 正解はdmesgです。 確認問題 ブートローダーとカネール  ブートローダーがカーネルに渡したパラメータを表示するには、  cat /proc/___  を実行する。下線に当てはまるファイルは何か。

(33)

第 1章 シ ス テ ム 構成 解説  ブートローダーがカーネルに渡したパラメータは/proc/cmdlineファイルに格 納されています。正解はcmdlineです。 受験のポイント  Linuxの起動に関しては、細かい問題までは出題されませんが、Linuxの理 解を深めるうえで重要な項目です。起動の流れをイメージできるようにして おきましょう。

(34)

1

-3

ランレベルと

システムの終了

SECTION

ランレベル

 Linuxにはランレベルと呼ばれる動作モードがあります。ランレベルには0か ら6まであり、通常はランレベル3または5で動作しています。各ランレベルの意 味は次のとおりです。 ■ 表 ランレベル ランレベル 説明 0 システムの停止 1 テキスト・シングルユーザーモード。システムメンテナンスで使用する S テキスト・シングルユーザーモード。ランレベル1と違い、/etc/inittabファイルを参照しない 2 テキスト・マルチユーザーモード。NFSが使用不可 3 テキスト・マルチユーザーモード 4 予約 5 グラフィカル・マルチユーザーモード。ログイン時にX Window Systemが起動 6 システムの再起動 ※ シングルユーザーモードでは root だけがシステムにアクセスでき、マルチユーザーモードでは複 数のユーザーが同時にシステムにアクセスできます。 ※ NFS とは、Linux のファイル共有機能のことです。  ランレベルを変更するにはinitコマンドを使用します。次のコマンドはランレ ベルを3に変更しています。 # init 3  telinitコマンドも、initコマンドと同様の働きをします。  telinitコマンドではさらに、telinit qコマンドを実行することで/etc/inittabファ イルを再度読み込み、内容に変更があった場合にはその変更を反映させることが

(35)

第 1章 シ ス テ ム 構成 できます。 /etc/inittabファイル  /etc/inittabファイルにはランレベルごとに起動するプロセスなど、initコマ ンドが実行する処理内容が記述されています。 id:5:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 (省略) l6:6:wait:/etc/rc.d/rc 6 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 1:2345:respawn:/sbin/mingetty tty1 (省略) 6:2345:respawn:/sbin/mingetty tty6 x:5:respawn:/etc/X11/prefdm -nodaemon

図 /etc/inittab 設定ファイル(一部抜粋)  /etc/inittabファイル内は、1行で1つの処理が記述されています。記述形式は 次のとおりです。 【書式】  <IDタグ>:<ランレベル>:<アクション>:<プロセス> ■ 表 /etc/inittab ファイルの書式 パラメータ 説明 IDタグ 他の行と区別するための識別子。2文字以内であれば任意の文字でよい ランレベル 指定した設定が有効になるランレベル アクション プロセスを実行する条件やタイミング プロセス 実行するプロセス

(36)

■ 表 主なアクション アクション 内容 sysinit システム起動時に実行 respawn プロセスを起動し、終了したら同じプロセスを再起動する initdefault デフォルトのランレベルの指定 wait プロセスを起動し、その終了を待つ  /etc/inittabファイルの内容をみていきましょう。 id:5:initdefault:  デフォルトのランレベルを5に指定しています。ここにランレベル0と6を指定 してはいけません。システムが起動しなくなります。

si::sysinit:/etc/rc.d/rc.sysinit

 システム起動時に/etc/rc.d/rc.sysinitスクリプトを実行しています。  rc.sysinitスクリプトはホスト名の設定、udevによる/devの初期化、日時の設定、 カーネルパラメータの設定などシステム全体の初期化を行います。 l1:1:wait:/etc/rc.d/rc 1  ランレベル1のときに引数「1」が与えられた/etc/rc.d/rcスクリプトを実行 し、実行が終了するまで待機します。  rcスクリプトはランレベルを表す引数「1」が与えられると、/etc/rc.d/rc1.d ディレクトリにあるスクリプトを実行します。/etc/rc.d/ディレクトリには、ラ ンレベルごとにrc0.dからrc6.dまでのディレクトリが用意されています。  /etc/rc.d/rc1.dディレクトリ内のファイルは次のようなものがあります。

K01dnsmasq K02NetworkManager K05anacron S02lvm2-monitor S06cpuspeed S99single

図 /etc/rc.d/rc1.d/ ディレクトリ内にあるファイル(一部抜粋)

 各ファイルは「K」または「S」+「2ケタの数値」+「実行するスクリプトファイ ル」となっています。先頭のK(Kill)は停止を表し、S(Start)は起動を表します。

(37)

第 1章 シ ス テ ム 構成 また、2桁の数字は実行する順番を表しています。まずKの小さな数値から大き な数値へとサービスを停止し、その後Sの小さな数値から大きな数値へとサービ スを開始します。サービスとはメモリーに常駐してさまざまなサービスを提供す るプログラムのことで、バックグラウンドで動作しているため、通常はユーザー が操作することはありません。サービスのことをデーモンともいいます。  次に、「実行するスクリプトファイル」は/etc/rc.d/init.d/ディレクトリ以下 にあります。たとえば、K05anacronであれば、/etc/rc.d/init.d/ディレクトリに anacronスクリプトファイルがあり、「K」が先頭についているのでstopの引数を つけてスクリプトファイルを実行しサービスを停止します。反対にS99singleで あれば、singleスクリプトファイルをstartの引数をつけて実行しサービスを開始 します。

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 Ctrl+Alt+Deleteキーが同時に押されたときに、「shutdown -t3 -r now」コマン ドを実行します。shutdownコマンドは後述します。

1:2345:respawn:/sbin/mingetty tty1

 ランレベルが2、3、4、5のいずれかのときに、「/sbin/mingetty tty1」を実行 します。終了した場合は自動で再起動します。  mingettyコマンドは仮想コンソール(仮想端末)を起動するコマンドです。 コンソール(端末)とはディスプレイとキーボードのセットのことで、入出力専 用の装置をいいます。昔のコンピュータは非常に高価だったため、1台のコン ピュータに複数台の端末を接続してユーザー間で共有していました。  現在のコンピュータには通常1組の端末しかついていません。仮想コンソール とは、1組の端末上でAltキーと「F1」〜「F6」キーを同時に押すことで制御画面 を切り替え、それぞれの画面で別々の処理を行えるようにした機能のことです。 各制御画面で異なるユーザーでログインし、操作することも可能です。通常は tty1 〜 tty6の6つの仮想コンソールが利用できます。

x:5:respawn:/etc/X11/prefdm -nodaemon

 ランレベルが5のときにX Window Systemを起動します。終了した場合は 自動で再起動します。

(38)

chkconfigコマンド

 chkconfigコマンドは、/etc/rc?.d(または/etc/rc.d/rc?.d。「?」には0 〜 6 までの数値が入ります)ディレクトリ以下にあるファイルの作成・変更・削除、 およびサービスの起動や停止に関する設定を行うことができます。  ランレベルごとにどのサービスが起動し、どのサービスが停止するのかを表示 するには、chkconfig --listコマンドを使用します。 【書式】  chkconfig --list [サービス名] ■ 表 chkconfig コマンドのオプション --list サービスの一覧を表示 --level ランレベルの指定 --add サービスの追加 --del サービスの削除  サービス名を省略した場合は、すべてのサービスの一覧が表示されます。 # chkconfig --list

NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off (以下略)  たとえば、anacronというサービスはランレベル0、1、6で起動せず、2 〜 5 で起動することがわかります。  chkconfigコマンドはサービスが起動するランレベルを編集することもできま す。次の例では、offフラグを使って、anacronサービスがランレベル2と4で起動 しないように設定しています。

(39)

第 1章 シ ス テ ム 構成

# chkconfig --level 24 anacron off # chkconfig --list anacron

anacron 0:off 1:off 2:off 3:on 4:off 5:on 6:off

 次の例では、onフラグを使ってanacronサービスがランレベル2で起動するよ うに設定しています。

# chkconfig --level 2 anacron on # chkconfig --list anacron

anacron 0:off 1:off 2:on 3:on 4:off 5:on 6:off

 サービスの起動状態を初期設定に戻したいときにはresetフラグを使用しま す。

# chkconfig anacron reset # chkconfig --list anacron

anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off

 サービスをchkconfigコマンドの管理対象から外したいときは、--delオプショ ンを使用します。

# chkconfig --del anacron # chkconfig --list anacron

(表示されない)

 反対に、サービスをchkconfigコマンドの管理対象に追加したいときには、

--addオプションを使用します。

# chkconfig --add anacron

現在のランレベルの表示

 現在のランレベルを表示するには、runlevelコマンドを使用します。

# runlevel N 5

(40)

テムが起動してから一度もランレベルを変更していないことを表します。2番目 の文字は現在のランレベルを表します。

システムの停止と再起動

 システムの停止再起動は、initコマンドでも可能です。しかし、initコマンド はすぐに実行が開始されるため、initコマンドによるシステムの終了を他のユー ザーに知らせることができません。  マルチユーザー環境でシステムの停止や再起動を行う場合は、スケジュールの 設定やメッセージの表示ができるshutdownコマンドが適しています。 shutdownコマンド  システムの停止や再起動を行うコマンドです。終了させる時刻を指定したり、 ログインしているすべてのユーザーにメッセージを通知することも可能です。 ■ 表 shutdown コマンドのオプション -h システムの停止(Halt) -r システムの再起動(Reboot) -c 現在実行中のシャットダウンのキャンセル(Cancel) # shutdown -h now  システムをすぐに停止します。 # shutdown -r now  システムをすぐに再起動します。

# shutdown -h +10 “Good bye”

 システムにログインしているユーザーに「Good bye」というメッセージを通知 し、10分後にシステムを停止します。

(41)

第 1章 シ ス テ ム 構成 # shutdown -h 21:30  21時30分にシステムを停止します。 # shutdown -c  システムの停止をキャンセルします。  shutdownコマンド以外にもhaltコマンドやpoweroffコマンドでシステムの停 止ができ、rebootコマンドでも再起動が可能です。 確認問題 グラフィカルベースのランレベル  グラフィカルベースのマルチユーザーモードを表すランレベルはいくつか。 解説  ランレベルは0から6まであります。そのうちグラフィカル・マルチユーザー モードはランレベル5です。正解は5です。 確認問題 メンテナンス用のランレベル  ハードディスクのパーティションに障害が発生したためメンテナンスを行いた いが、何人かのユーザーがそのパーティションを含むハードディスクにアクセス している。ユーザーをシステムから切断し安全にメンテナンスを行うためには、 次のどのコマンドを実行すればよいか(複数選択)。

a.shutdown -r now   b.init 6   c.telinit 1 d.init 1         e.linux single

解説

 ユーザーをシステムから切断しrootユーザーだけをシステムにアクセス可能に するには、ランレベル1でシステムを起動します。ランレベルを変更するにはinit コマンドまたはtelinitコマンドを使用します。正解はc、dです。

(42)

確認問題 デフォルトのランレベル  Linuxシステムのデフォルトのランレベルを変更するには、どの設定ファイルを 編集すればよいか。パス名とファイル名を回答しなさい。 解説  デフォルトのランレベルを変更するには、/etc/inittabファイルを編集します。 /etc/inittabファイルには、Ctrl+Alt+Deleteキーが同時に押されたときの挙動 を指定したり、システム起動時に実行するスクリプトを指定したりもできます。 正解は/etc/inittabです。 確認問題 ランレベルごとのサービス  ランレベルごとのサービスの起動と停止状態を表示するには、  chkconfig ___コマンド  を使用する。下線に当てはまるオプションは何か。 解説  ckconfigコマンドには、--list(サービスの一覧を表示)、--level(ランレベルの 指定)、--add(サービスの追加)、--del(サービスの削除)などのオプションがあり ます。正解は--listです。 確認問題 現在のランレベル  現在のランレベルを表示するには、どのコマンドを実行すればよいか。 解説  現在のランレベルを表示するにはrunlevelコマンドを使用します。正解は runlevelです。

(43)

第 1章 シ ス テ ム 構成 確認問題 shutdown コマンド  システムを23:00にシャットダウンするようにshutdownコマンドを実行し た。しかし、23:00以降もシステムを使用することになったため、このシステ ムの終了をキャンセルしたい。どのコマンドを実行すればよいか。オプションを 含めて回答しなさい。 解説  shutdownコマンドには、-h(システムの停止)、-r(システムの再起動)、-c(現 在実行中のシャットダウンのキャンセル)などがあります。正解はshutdown -c です。 受験のポイント  各ランレベルの内容はしっかり把握しておきましょう。また、現在のラン レベルの調べ方や、ランレベルの変更方法も重要チェックポイントです。

(44)

参照

関連したドキュメント

If the interval [0, 1] can be mapped continuously onto the square [0, 1] 2 , then after partitioning [0, 1] into 2 n+m congruent subintervals and [0, 1] 2 into 2 n+m congruent

タッチ センシング cypress.com/touch USB コントローラー cypress.com/usb ワイヤレス cypress.com/wireless. PSoC

LC06111TMT Battery Protection Controller with Integrated MOSFET, 1-Cell Lithium-Ion LC05711ARA Battery Protection Controller with Integrated MOSFET, 1-Cell Lithium-Ion

When the device is operating as a sink and it receives a Hard Reset or a Power Role Swap, the automatic discharge circuitry and SNK output will be disabled by the host processor

External interruption function 2 (exclusive with GP12 and GP42) Over current detection signal input for USB 2 (exclusive with GP52) Emphasis flag input/output for Audio (exclusive

The analog to digital converter is a 7−bit A/D which can be used as an event recorder, an input voltage sampler, output voltage sampler, input current sampler, or output

Output current is sensed via a current−sense resistor RCS, which is connected between the CSP and CSN pins. The sensed signal is internally amplified, and this amplified voltage

[r]