Linux の 101 試験対策: システムのブート

BIOS から Linux システムが稼働状態になるまでの流れ

Linux システムのブート・プロセスを操作する方法を学んでください。この記事の内容は、Linux のシステム管理者として認定するための LPI 101 試験に備えるためにも、ブート・プロセスについて学ぶ上でも役立ちます。

Ian Shields, Senior Programmer, IBM

Ian ShieldsIan Shields は、developerWorks Linux ゾーンの様々な Linux プロジェクトに関わっています。彼はノースキャロライナ州 Research Triangle Park にある IBM のシニア・プログラマーです。1973年にオーストラリアのキャンベラでシステム・エンジニアとして IBM に入社して以来、カナダのモントリオールやノースキャロライナ州 Research Triangle Park で、コミュニケーション・システムやパーベイシブ・コンピューティングに携わってきました。彼はいくつかの特許を保持しています。Australian National University にて純粋数学および哲学で学位を取得し、また North Carolina State University にてコンピューター・サイエンスで修士号と博士号を取得しています。Ian について詳しく知るには、My developerWorks で彼のプロフィールを見てください。


developerWorks 貢献著者レベル

2011年 10月 21日

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-1 (Linux Professional Institute Certification レベル 1) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-1 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-1 試験の最新の目標 (2009年 4月) を反映しています。完成した記事はその都度ロードマップに追加されていきますが、当面は developerWorks の LPI 認定試験対策チュートリアルで同様の教材の以前のバージョンを調べてください。これらのバージョンは、2009年 4月より前の LPIC-1 目標に対応しています。

概要

この記事では、BIOS からブート完了までのブート・シーケンスを理解するために、以下の内容を学びます。

  • ブート・ローダーに一般的なコマンドを与える方法
  • ブート時にカーネルにオプションを指定する方法
  • ログ・ファイルでブート時のイベントを確認する方法

ブート・プロセスには、ほとんどのシステムに共通している側面もありますが、ハードウェアに関連する側面は、具体的なアーキテクチャーによって変わってきます。この記事でターゲットとするのは、BIOS を使用してシステムをブートする x86 および x86_64 アーキテクチャー・システムです。サイズが 2TB を超えるドライブには、EFI (Extensible Firmware Interface) と GPT (GUID Partition Table) を使用した比較的新しいシステムがよく使われるようになっていますが、このようなシステムは現在 LPI の目標には含まれていないため、この記事では取り上げません。詳細については「参考文献」を参照してください。

特に断りのない限り、記事に記載する例では、2.6.35 カーネルを搭載した Fedora 14 を使用しています。他のシステムでは、結果が異なる場合もあります。

この記事は、Linux Professional Institute の Junior Level Administration (LPIC-1) 101 試験の主題 101 の目標 101.2 の試験対策となります。この目標の重要度は 3 です。

前提条件

Ian とつながるには

Ian は developerWorks で人気の高いお馴染みの著者の 1 人です。Ian が書いたすべての developerWorks 記事を閲覧してみてください。また、My developerWorks では、Ian のプロフィールを調べることや、彼やその他の著者、そして他の読者とつながることができます。

この連載の記事を最大限に活用するには、Linux の基礎知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。プログラムのバージョンによって出力のフォーマットに違いが出てくる場合もあるため、コマンドの実行結果は必ずしもここに記載するリストや図とまったく同じであるとは限りません。特に、BIOS の設定はシステムによって大幅に異なり、ブート・ローダーのスプラッシュ画面もディストリビューションごとにかなりの違いがあります。

また、記事「Linux の 101 試験対策: ハード・ディスクのレイアウト」で説明している内容についても十分に理解している必要があります。


ブート・シーケンス

LILO と GRUB などのブート・ローダーについて詳しく検討する前に、PC が起動 (つまり、ブート) する仕組みを復習しておきましょう。ROM、EEPROM、あるいはフラッシュ・メモリーなどの不揮発性メモリーには、BIOS (Basic Input Output Service) と呼ばれるコードが格納されています。このコードは、PC の電源を入れたとき、あるいは PC をリブートすると実行され、電源投入時自己診断テスト (Power-On Self Test、略称 POST) を行ってマシンをチェックします。さらに、使用可能なリムーバブル・ストレージ・デバイスまたは固定ストレージ・デバイスからブート・ドライブを判断し、そのブート・ドライブ上のマスター・ブート・レコード (Master Boot Record、略称 MBR) から 1 番目のセクターをロードします。ブート・ドライブは、従来のハード・ディスク・ドライブや、フラッシュ・メモリー・ドライブ (SSD)、USB メモリーまたは USB ドライブであることもあれば、フロッピー・ディスク、CD、DVD などのリブーバブル・メディアを搭載したドライブであることもあります。この記事ではこれ以降、ハード・ディスク・ドライブを中心に説明を進めますが、その他のタイプのストレージ・デバイスの場合でもプロセスは同様です。

記事「Linux の 101 試験対策: ハード・ディスクのレイアウト」で説明したように、MBR にはパーティション・テーブルも含まれているため、MBR 内に格納される実行可能コードのサイズは 512 バイト未満と、あまり大きくありません。フロッピー・ディスク、CD、DVD、または USB メモリーなどの半導体デバイスを含め、すべてのディスクでは実行可能コードが MBR に格納されることに注意してください。実行可能コードが「Non-bootable disk in drive A: (ドライブ A のディスクはブート可能なディスクではありません)」のようなメッセージを出力することしかできないほどのサイズであっても、このことに変わりはありません。BIOS が 1 番目のセクターからロードするこのコードは、「第 1 ステージ・ブート・ローダー」、あるいは「ステージ 1 ブート・ローダー」と呼ばれます。

MS-DOS、PC DOS、そして Windows オペレーティング・システムが使用する標準的なハード・ディスクの MBR は、パーティション・テーブルを調べて、「アクティブ」であることを示すマークが付けられたブート・ドライブのプライマリー・パーティションを見つけます。そしてそのパーティションから最初のセクターをロードし、ロードしたコードの先頭に制御を渡します。ロードされたこの新しいコードは、「パーティション・ブート・レコード」としても知られています。パーティション・ブート・レコードは、実際にはもう 1 つのステージ 1 ブート・ローダーですが、これにはパーティションからブロック一式をロードするだけのインテリジェンスしかありません。この新しいブロック一式に格納されているコードは、「ステージ 2 ブート・ローダー」と呼ばれます。ステージ 2 ブート・ローダーは MS-DOS および PC DOS で使用されることから、そのまま直接、オペレーティング・システムの残りの部分をロードします。これが、オペレーティング・システムが自ら起動して、稼働状態になる仕組みです。

上記のプロセスは、オペレーティング・システムが 1 つしかないシステムでは上手く動作しますが、複数のオペレーティング・システムを使用するとしたらどうなるでしょうか。例えば、OS/2、Windows XP、そして 3 つの異なる Linux ディストリビューションを使用する場合を考えてみてください。この場合、何らかのプログラム (DOS FDISK プログラムなど) を使用してアクティブ・パーティションを変更し、リブートするという方法もありますが、それでは厄介です。さらに、ディスク上に作成できるプライマリー・パーティションは最大 4 つしかなく、標準的な MBR が管理できるアクティブなプライマリー・パーティションは 1 つだけで、論理パーティションからのブートには対応することができません。けれども、この仮説の例で引用しているオペレーティング・システムは 5 つあり、そのそれぞれにパーティションが必要です。これは困ったことになりました。

この問題を解決するには、特殊なコードを使用して、ブート対象のオペレーティング・システムをユーザーが選択できるようにします。特殊なコードとは、例えば以下のプログラムのことです。

Loadlin
実行中の DOS システムから Linux パーティションをブートするために呼び出される DOS 実行可能プログラム。マルチブート・システムのセットアップが複雑で危険なプロセスであった頃に、よく使われていました。
OS/2 Boot Manager
小さなサイズの専用パーティションにインストールして使うプログラム。このプログラムがインストールされたパーティションにはアクティブのマークが付けられ、標準的な MBR ブート・プロセスが OS/2 Boot Manager を起動すると、ブートするオペレーティング・システムを選択できるメニューが表示されます。
スマート・ブート・ローダー
オペレーティング・システムのパーティションに常駐可能なプログラムで、アクティブ・パーティションのパーティション・ブート・レコード、またはマスター・ブート・レコードのいずれかから呼び出されます。スマート・ブート・ローダーの例には以下のものがあります。
  • BootMagic: Norton PartitionMagic に含まれています。
  • LILO (LInux LOader)
  • GRUB (GRand Unified Boot loader): 現在、GRUB Legacy と呼ばれています。
  • GRUB 2: 共通ディストリビューションに最近登場するようになった新しいブート・ローダー。

システムの制御を 512 バイトより大きなコードのプログラムに渡すことができれば、論理パーティションから、あるいはブート・ドライブ上にはないパーティションからブートするのも不可能な話でないのは明らかです。上記のソリューションはいずれも、そうしたことが可能です。そのような形でのブートが実現可能な理由は、これらのソリューションが任意のパーティションからブート・レコードをロードできるため、あるいはブート・プロセスを開始するためにはどのファイルをロードすればよいかを理解しているためです。

チェーン・ロード

制御を受け取ったブート・マネージャーがロードできるものの 1 つは、別のブート・マネージャーです。ブート・マネージャーが別のブート・マネージャーをロードすることを、チェーン・ロードと呼びます。最も頻繁に行われるチェーン・ロードは、マスター・ブート・レコード (MBR) に置かれたブート・マネージャーが、パーティション・ブート・レコードにあるブート・ローダーをロードする場合です。Linux ブート・ローダーが Windows または DOS のパーティションをブートするように指示されると、ほぼ必ずと言ってよいほどチェーン・ロードが行われます。また、あるシステムの Linux ブート・ローダーが別のシステムのブート・ローダーをロードするように指示されたときにチェーン・ロードが行われることもあります。例えば、あるパーティションの LILO を使用して別のパーティションの GRUB をチェーン・ロードすることによって、その別のパーティションの GRUB にアクセスするなどです。

Linux のブート・ローダー

ここからは、ほとんどの Linux ディストリビューションに付属している 2 つのブート・ローダー、LILO と GRUB に話題を絞ります。LILO は以前から使われているブート・ローダーで、GRUB はその後に登場しました。当初の GRUB は現在、GRUB Legacy と呼ばれるようになっています。これは、GRUB2 の開発が Free Software Foundation の主導の下に進められているためです (詳細は「参考文献」を参照)。この記事では、GRUB と GRUB2 との主な違いと、この 2 つがどのようにして共存できるかを理解してもらえるように、GRUB2 についても簡単に説明します。記事では以降、GRUB と表記したら GRUB Legacy を意味することとします (ただし、文脈的に明らかに GRUB2 を意味する場合は別です)。LILO でもまた、ELILO という新しいバージョンが使用できるようになっています (ELILO は、BIOS ではなく Intel の EFI (Extensible Firmware Interface) を使用するシステムのブート用に設計されています)。GRUB2 および ELILO についての詳細は、「参考文献」を参照してください。

お使いのディストリビューションのインストール・プロセスでは、どのブート・ローダーをセットアップするかを選択できるはずです。GRUB または LILO は、サイズが 2TB 以下の最近のほとんどのディスクで動作しますが、Fedora をはじめ、一部のディストリビューションには LILO が付属しなくなっています。ディスク技術は急速に進歩していることを念頭に置いて、選択するブート・ローダー、選択する Linux ディストリビューション (またはその他のオペレーティング・システム)、さらには使用しているシステム BIOS が最新のディスクで動作することを必ず確認してください。この確認を怠ると、データを失うことになりかねません。同様に、新しいディストリビューションを既存のシステムに追加する場合には、MBR の LILO または GRUB が最新のものであることを確認してください。さらに、LVM または RAID ディスクからブートすることを予定しているとしたら、かなり新しいバージョンの GRUB または LILO が必要です。

LILO と GRUB で使用されているステージ 2 ローダーでは、ロードする対象を複数のオペレーティング・システムまたは複数のバージョンから選択することができます。ただし、LILO と GRUB は、システムに対する変更を行う際の操作に大きな違いがあります。LILO の場合、カーネルのアップグレードなどといったシステムに対する特定の変更を行うときには、常にコマンドを使用して LILO ブート・セットアップを作成し直さなければなりません。一方、GRUB では構成テキスト・ファイルの編集をすることで、システムに対する変更を行います。GRUB 2 でもシステムに対する変更を行うには、構成ファイル (通常 /etc に格納されています) を再作成する必要があります。

PC のブート・プロセスは、以下のように要約することができます。

  1. PC の電源を入れると、BIOS (Basic Input Output Service) が自己診断テストを行います。
  2. マシンが自己診断テストに合格すると、BIOS はマスター・ブート・レコード (MBR、通常はブート・ドライブの最初の 512 バイトのセクター) をロードします。ブート・ドライブは通常、システム上の最初のハード・ディスク・ドライブですが、フロッピー・ディスク、CD、または USB メモリーにすることもできます。
  3. ハード・ディスク・ドライブ用に、MBR はステージ 1 ブート・ローダーをロードします。Linux システムで一般にロードするのは、LILO または GRUB ステージ 1 ブート・ローダーです。これも同じく、512 バイトの単一セクターのレコードです。
  4. 一般に、ステージ 1 ブート・ローダーは一連のレコードをロードします。このレコード一式は、ステージ 2 ブート・ローダーと呼ばれます (ステージ 1.5 ローダーと呼ばれることもあります)。
  5. ステージ 2 ブート・ローダーはオペレーティング・システムをロードします。Linux の場合、これはカーネルと、おそらくは初期 RAM ディスク (initrd) です。

お使いのシステムでは、よく使われているブート・ローダーである LILO (LInux LOader) または GRUB GRand Unified Boot loader) のうち、いずれかをインストールできるはずです。そして、インストールしたブート・ローダーを使用して、既に説明した通常の方法でブートすることができます。ブート・ローダーのインストールや基本的なブート操作について復習するには、この連載の記事「Linux の 101 試験対策: ブート・マネージャー」を参照してください。

システムのブート・プロセスを操作したい場合には、次の方法があります。

  1. ブート対象のデバイスを変更します。一般にはハード・ディスク・ドライブからブートしますが、ときにはフロッピー・ディスクや USB メモリー、CD、DVD、あるいはネットワークからブートしなければならない場合もあります。このような代わりのブート・デバイスをセットアップするには、そのデバイスに応じてBIOS を適切に構成する必要があります。さらに、ブート時に特定のキー入力をして選択項目を表示する必要があるかもしれません。図 1 に、私が使っているシステムで表示される選択項目の 1 つを示します。ブート・デバイスをセットアップして起動時にブート・デバイスを選択する方法は、システムとその BIOS によって異なります。この点についても、この LPI の目標で必要とされる範囲には含まれないため、詳細についてはお使いのシステムのドキュメントを参照してください。
    図 1. ブート・デバイスの選択
    起動デバイス・メニューのスクリーン・キャプチャー。表示されているブート・デバイスの選択項目のうち、「USB KEY: Sony Storage Media」が選択されて強調表示されています。
  2. ブート・ローダーを操作して、選択可能な構成のうち、どの構成をブートするかを選択することができます。この記事では、LILO での選択方法と GRUB での選択方法の両方を説明します。
  3. ブート・ローダーによってカーネルがロードされたら、カーネルがシステムを起動する方法を制御するためのパラメーターを、GRUB または LILO を使用してカーネルに渡すことができます。

LILO

デフォルトの LILO 構成ファイルは /etc/lilo.conf です。リスト 1 に一例として、現在 /dev/sda10 で Slackware を、/dev/sda1 で Windows を、/dev/sdb12 で Fedora 14 を実行しているシステムの構成ファイルを記載します。この例は、/sbin/liloconfig コマンドを使用して作成しました。

リスト 1. LILO の構成例
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
lba32 # Allow booting past 1024th cylinder with a recent BIOS
boot = /dev/root
#compact # faster, but won't work on all systems.
# Boot BMP Image.
# Bitmap in BMP format: 640x480x8
bitmap = /boot/slack.bmp
# Menu colors (foreground, background, shadow, highlighted
# foreground, highlighted background, highlighted shadow):
bmp-colors = 255,0,255,0,255,0
# Location of the option table: location x, location y, number of
# columns, lines per column (max 15), "spill" (this is how many
# entries must be in the first column before the next begins to
# be used. We don't specify it here, as there's just one column.
bmp-table = 60,6,1,16
# Timer location x, timer location y, foreground color,
# background color, shadow color.
bmp-timer = 65,27,0,255
# Standard menu.
# Or, you can comment out the bitmap menu above and
# use a boot message with the standard menu:
#message = /boot/boot_message.txt

# Append any additional kernel parameters:
append=" vt.default_utf8=0"
prompt
timeout = 300
# Normal VGA console
vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769
# ramdisk = 0 # paranoia setting
# End LILO global section
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/sda10
label = Slackware13
read-only # Partitions should be mounted read-only for checking
# Linux bootable partition config ends
# Windows bootable partition config begins
other = /dev/sda1
label = Windows
table = /dev/sda
# Windows bootable partition config ends
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/sdb13
label = Fedora14
read-only # Partitions should be mounted read-only for checking
# Linux bootable partition config ends

リスト 1 の構成ファイルでは、bitmap パラメーターが /boot/slack.bmp に設定されています。これは、従来の LILO テキスト・プロンプトに代わって表示されるビットマップ・イメージです。図 2 に、このビットマップ・イメージを示します。この図では、デフォルトのブート・イメージ Slackware13 が反転表示されており、その下に Windows と Fedora14 が普通に表示されています。カーソル・キーを使ってブート・イメージを選択してから Enter キーを押すと、選択したブート・イメージがブートされます。構成ファイルに設定されたタイムアウトが 0 でない場合、システムはその値 (10 分の 1 秒単位) が経過してから (この例での値は 300、つまり 30 秒)、選択されたブート・イメージをブートします。

図 2. Slackware 13 LILO ブート画面
ビットマップを使用してブートの選択項目を表示する、グラフィカル Slackware 13 LILO ブート画面のスクリーン・キャプチャー

テキスト・プロンプトを使用する

上記の例では、ブートの選択項目がビットマップで表示されていますが、従来の LILO ブート・プロンプトは、この画面で Tab キーを押すと表示されるような、かなり簡潔なテキスト・プロンプトでした。このプロンプトに対しては、ブートするディストリビューションの名前を入力することも、あるいは Enter キーを押して最初の選択項目をブートすることもできます。リスト 2 と図 3 に、従来の LILO テキスト・プロンプトを示します。

リスト 2. LILO の基本的なテキスト・プロンプト
Slackware13      Windows         Fedora14
boot:
図 3. LILO の基本的なテキスト・プロンプト
テキストでブートの選択項目を示す、基本的な LILO テキスト・プロンプトのスクリーン・キャプチャー

グラフィカル・プロンプトの代わりにテキスト・プロンプトを表示するには、bitmap エントリーと bmpxxx エントリーをコメントアウトし、message パラメーターをコメントでなくして、表示したいテキスト・メッセージが含まれるファイルを message パラメーターの値として指定します。現在のテキスト・プロンプトは以前のように簡潔ではなく、選択項目を表示するのに curses ライブラリーを使用しています。パラメーターは、以前と同じように入力することができます。図 4 で使用しているサンプルのメッセージ・ファイルには、「Booting pinguino >>>」というテキストが含まれています。この場合も、S パラメーターを使用してシングル・ユーザー・モードでブートします。

図 4. Slackware 13 LILO のテキスト (curses) ブート画面
テキスト・メッセージが含まれるファイルを使用した、LILO のテキスト・ブート画面のスクリーン・キャプチャー

注: システムがプロンプトをバイパスするように構成されている場合、プロンプトを表示するにはブート中に Shift キーを押し下げたままにする必要があります。

lilo コマンド

/etc/lilo.conf に対して変更を行った場合、または新しいカーネルをインストールした場合には、必ずlilo を実行してください。lilo プログラムは変更を反映するために MBR またはパーティション・ブート・レコードを再書き込みします。この処理には、カーネルの完全なディスク・ロケーションを記録することも含まれます。lilo コマンドはパーティションにアクセスしてイメージの場所を突き止めなければならないため、構成ファイルに複数のパーティションからの Linux イメージが含まれているとしたら、そのすべてのパーティションをマウントする必要があります。

lilo コマンドの -q オプションを使用すると、LILO 構成ファイルを表示するのに加え、LILO のブート選択項目に関する情報を表示することができます。この情報をさらに詳細に出力するには、-v オプションを追加します。リスト 3 に、リスト 1 のグラフィック構成ファイルを使用した例と、図 4 のテキスト構成ファイルを使用した例の 2 つを記載します。

リスト 3. LILO 構成ファイルを表示する
root@echidna:~# lilo -q -C /etc/lilo-graphic.conf
Slackware13     *
Windows
Fedora14

root@echidna:~# lilo -q -v -C /etc/lilo-text.conf
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007 and compiled at 20:09:28 on Feb 14 2010

Reading boot sector from /dev/root
Installed:  Tue Sep  6 15:51:49 2011

Global settings:
  Delay before booting: 0.0 seconds
  Command-line timeout: 30.0 seconds
  No unattended booting
  No PC/AT keyboard hardware presence check
  Always enter boot prompt
  Boot-time BIOS data saved
  Boot-time BIOS data auto-suppress write bypassed
  Large memory (>15M) is NOT used to load initial ramdisk
  Non-RAID installation
  Boot device will not be used for the Map file
  Serial line access is disabled
  Boot prompt message is 1083 bytes
  No default boot command line
Images:
  Slackware13     *
    No password
    Boot command-line won't be locked
    No single-key activation
    VGA mode: NORMAL
    Kernel is loaded "high"
    No initial RAM disk
    No fallback
    Options: "ro root=80a  vt.default_utf8=0"
  Windows
    No password
    Boot command-line won't be locked
    No single-key activation
    No fallback
    No options
  Fedora14
    No password
    Boot command-line won't be locked
    No single-key activation
    VGA mode: NORMAL
    Kernel is loaded "high"
    No initial RAM disk
    No fallback
    Options: "ro root=81d  vt.default_utf8=0"

LILO でのチェーン・ロード

お気付きかもしれませんが、Windows のパーティション定義にはデバイス (/dev/sda1) が示されている一方、Slackware と Fedora のパーティション定義にはそれぞれ、ルート・パーティション上のブート・イメージ、/dev/sda10 と /dev/sdb13 が示されています。ブート可能なパーティションが複数になる可能性のあるシステムの場合、私は大抵、GRUB を格納した小さなパーティションをセットアップします。GRUB は、通常はチェーン・ロードを使用して他のパーティションをブートすることができますが、例えばパーティション上のシステムが GRUB2 などのブート・ローダーを使用する場合には、チェーン・ロード以外の手段でブートすることができます。この例でのパーティションは GRUB Legacy を実行するため、このパーティションはチェーン・ロードによってロードすることができます。例えば、この GRUB パーティションなどの別のパーティションのチェーン・ロードを行うための LILO エントリーを追加するには、リスト 4 に記載するようなエントリーを追加することができます。

リスト 4. GRUB のチェーン・ロードを行うパーティションを追加する
# Linux bootable partition config begins
other = /dev/sda2
  label = GRUB
# Linux bootable partition config ends

GRUB

GRUB のデフォルト構成ファイルは、/boot/grub/grub.conf または /boot/grub/menu.lst です。この 2 つが両方とも存在するとしたら、一方のファイルがもう一方のファイルへのシンボリック・リンクであるのが通常です。リスト 5 に、上で説明した LILO と同じシステムを使用した場合の構成ファイルの例を記載します。読みやすくするために、3 つのカーネル定義文を複数の行に分けていることに注意してください。

リスト 5. GRUB の構成例
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd1,12)
#          kernel /boot/vmlinuz-version ro root=/dev/sdb13
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sdb13
default=0
timeout=5
splashimage=(hd1,12)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.35.14-95.fc14.x86_64)
        root (hd1,12)
        kernel /boot/vmlinuz-2.6.35.14-95.fc14.x86_64 ro 
            root=UUID=5e22a2e0-5ac2-47d5-b98a-d5b25eff585a 
            rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 
            KEYTABLE=us rhgb quiet
        initrd /boot/initramfs-2.6.35.14-95.fc14.x86_64.img
title Fedora (2.6.35.13-92.fc14.x86_64)
        root (hd1,12)
        kernel /boot/vmlinuz-2.6.35.13-92.fc14.x86_64 ro 
            root=UUID=5e22a2e0-5ac2-47d5-b98a-d5b25eff585a 
            rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 
            KEYTABLE=us rhgb quiet
        initrd /boot/initramfs-2.6.35.13-92.fc14.x86_64.img
title Fedora (2.6.35.13-91.fc14.x86_64)
        root (hd1,12)
        kernel /boot/vmlinuz-2.6.35.13-91.fc14.x86_64 ro 
            root=UUID=5e22a2e0-5ac2-47d5-b98a-d5b25eff585a 
            rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM 
            LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 
            KEYTABLE=us rhgb quiet
        initrd /boot/initramfs-2.6.35.13-91.fc14.x86_64.img
title GRUB
        rootnoverify (hd0,1)
        chainloader +1
title Slackware 13
        rootnoverify (hd0,9)
        chainloader +1
title Windows
        rootnoverify (hd0,0)
        chainloader +1

GRUB にはメニュー・インターフェースが用意されています。また、LILO での平文パスワードとは対照的に、MD5 アルゴリズムで暗号化したパスワードを使用することもできます。その上、おそらく最も重要なことに、GRUB 構成ファイルに変更を加えても、GRUB を MBR に再インストールする必要はありません。多くのディストリビューションでは、新しいカーネル・レベルにアップグレードするときに自動的に GRUB (あるいは LILO) の構成ファイルを更新します。ただし、ユーザーが自ら新しいカーネルをインストールした場合、あるいは新しい初期 RAM ディスクを作成した場合には、構成ファイルを編集しなければならない場合があることに注意してください。

パーティションのブート・エントリーを構成する場合にも、GRUB ではパーティションをマウントする必要はありません。rootnoverify (hd0,9)splashimage=(hd1,12)/boot/grub/splash.xpm.gz などのエントリーがあることに注目してください。GRUB はハード・ディスクを hdn として参照します。ここで、n は 0 から始まる整数です。同様に、ディスク上のパーティションにも 0 から番号が付けられます。注: GRUB2 ではディスクの命名方法が変更されているため、GRUB と GRUB2 を切り替える場合には注意してください。

したがって、このシステムでは (hd0,0) が Windows のプライマリー・パーティション /dev/sda1 を表し、(hd0,9) が Slackware の論理パーティション /dev/sda10 を表します。フロッピー・ドライブは通常 (fd0) です。bash シェルからパラメーターを使用して GRUB を呼び出す際には、必ずこれらの名前を引用してください (例えば、GRUB をフロッピー、USB メモリー、または MRB にインストールする場合など)。

GRUB の最近のバージョンでは、ラベルまたは UUID のいずれかを使用してルート要素を指定できるようになっています。ラベルおよび UUID についての詳細は、この連載の記事「Linux の 101 試験対策: ファイルシステムのマウント、アンマウントの制御」のセクション「ラベル、UUID、リンク」を参照してください。

GRUB を使ってシステムをブートするときには、デフォルトの選択項目が表示されることがよくあります (図 5 を参照)。何もしなければ、構成済みのタイムアウトが経過すると、デフォルトの項目がブートされます。タイムアウトは秒数で指定されるので、リスト 5 の timeout=5 は、タイムアウトが 5 秒であることを意味します。

図 5. デフォルトの選択項目での GRUB のブート
GRUB でのブートを示すスクリーン・キャプチャー。構成されたタイムアウト時間の経過後にブートされるデフォルトの選択項目が示されています。

デフォルトのブートを中止するためにキーを押すと、図 6 のような選択メニューが表示されます。

図 6. GRUB メニューの選択項目
オペレーティング・システムを選択してブートするための GRUB メニューの選択項目のスクリーン・キャプチャー。

この GRUB メニューが表示されたら、カーソル移動キーでリストを上下に移動して、ブート・イメージを選択します。

カスタムの背景

GRUB のスプラッシュ画面の背景画像を変更したい場合、使用できるのは 14 色のX Window ピックスマップ (.xpm) ファイルに限られます。このファイルは、gzip で圧縮する必要があります。お気に入りの JPEG 画像でも、14 色に減らすと違って見える場合があるので、まずは試してみてください。14 色に減らすには、GIMP などのグラフィカル・プログラムを使用することができます。GIMP の場合には、「Image (画像)」 > 「Mode(モード)」 > 「Indexed...(インデックス…)」の順にメニューを選択して、「Maximum number of colors (色の最大数)」フィールドを 14 に設定します。あるいは別の方法として、ImageMagick などのコマンドライン・ツールを使用することもできます。リスト 6 に示しているのは、元は 800x531 ピクセルの画像を、要求される 640x480 ピクセルの画像にする 1 つの方法です。ここではまず、(アスペクト比を保ったまま) 画像の高さを 640 ピクセルに変更した後、画像の一部を切り取って、要求される画像のサイズと同じになるようにキャンバスを縮小します。次に、色の数を 14 に減らし、画像を .jpg から .xpm に変換します。そして最後に、画像を gzip で圧縮します。

リスト 6. カスタムの GRUB スプラッシュ画像を作成する
$ identify woodenbong.jpg
woodenbong.jpg JPEG 800x531 800x531+0+0 8-bit DirectClass 210KB 0.000u 0:00.000
$ convert -resize "800x640" woodenbong.jpg woodenbong2.jpg
$ convert -crop "640x480+40+0" +repage  woodenbong2.jpg  grub-in.jpg
$ convert -colors 14 grub-in.jpg grub-menu.xpm
$ gzip grub-menu.xpm

GRUB シェル

LILO とは異なり、小さなシェルとして振る舞う GRUB では、いくつかのコマンドを使用して、コマンドを編集してから実行したり、構成ファイルを見つけてロードしたり、cat コマンドでファイルを表示したりするといった操作を実行することができます。メニューから、エントリーを編集するには e を、GRUB コマンドラインに切り替えるには c を、システムをブートするには b を、パスワードを入力するには p を、そしてメニューや前のステップに戻るには Esc キーを押します。また、grub コマンドによってシミュレートされたシェルを作成し、そこで GRUB 構成や GRUB コマンドのスキルをテストすることもできます。一部の基本コンポーネントは一般ユーザー・モードでも使用できますが、多くのコマンドは root 権限がなければ実行できません。リスト 7 に、root として GRUB シェルを起動する方法を示します。通常、grub コマンドは /sbin または /usr/sbin にあります。

リスト 7. GRUB シェルを起動する
# grub

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub>

GRUB シェル内で help コマンドを使用すると、コマンドの一覧が表示されます。特定のコマンドのヘルプを表示するには、そのコマンドの名前を指定した help commandname を使用します。リスト 8 に、使用可能なコマンドと、rootnoverify コマンドのヘルプを示します。

リスト 8. GRUB シェルを使用する
grub> help
blocklist FILE                         boot
cat FILE                               chainloader [--force] FILE
color NORMAL [HIGHLIGHT]               configfile FILE
device DRIVE DEVICE                    displayapm
displaymem                             find FILENAME
geometry DRIVE [CYLINDER HEAD SECTOR [ halt [--no-apm]
help [--all] [PATTERN ...]             hide PARTITION
initrd FILE [ARG ...]                  kernel [--no-mem-option] [--type=TYPE]
makeactive                             map TO_DRIVE FROM_DRIVE
md5crypt                               module FILE [ARG ...]
modulenounzip FILE [ARG ...]           pager [FLAG]
partnew PART TYPE START LEN            parttype PART TYPE
quit                                   reboot
root [DEVICE [HDBIAS]]                 rootnoverify [DEVICE [HDBIAS]]
serial [--unit=UNIT] [--port=PORT] [-- setkey [TO_KEY FROM_KEY]
setup [--prefix=DIR] [--stage2=STAGE2_ terminal [--dumb] [--no-echo] [--no-ed
terminfo [--name=NAME --cursor-address testvbe MODE
unhide PARTITION                       uppermem KBYTES
vbeprobe [MODE]

grub> help rootnoverify
rootnoverify: rootnoverify [DEVICE [HDBIAS]]
    Similar to `root', but don't attempt to mount the partition. This
    is useful for when an OS is outside of the area of the disk that
    GRUB can read, but setting the correct root device is still
    desired. Note that the items mentioned in `root' which derived
    from attempting the mount will NOT work correctly.

grub>

実用的な例として、リスト 9 では前に使用した例で GRUB の find コマンドを使って構成ファイルを検索し、見つかった構成ファイルのうち、/dev/sdb13 に相当する (hd1,12) の構成ファイルをロードします。

リスト 9. GRUB を使用した GRUB 構成ファイルの検索とロード
grub> find /boot/grub/menu.lst
 (hd0,1)
 (hd0,5)
 (hd1,6)
 (hd1,8)
 (hd1,9)
 (hd1,10)
 (hd1,11)
 (hd1,12)

grub> configfile (hd1,12)/boot/grub/menu.lst
Press `ESC' to enter the menu... 24

構成ファイルをロードすると、リスト 10 のようなメニューが表示されます。この操作は、GRUB シェル内で行っていることに注意してください。つまり、これは実際の GRUB 環境をシミュレートするシェルなので、スプラッシュ画像は表示されません。ただし、表示される内容は、GRUB を使用して実際にシステムをブートするときにスプラッシュ画像に重なって表示される内容と非常によく似ています。

注: メニューが以下の表示とは異なり、矢印キーが ^[[A のように表示されるとしたら、使用している grub コマンドのバージョンに、正しくメニューを表示するために必要な curses のサポートが含まれていない可能性があります。この場合、最近の特定の Federa リリースに影響することが判明しており、grub シェルを使用してテストできる内容が限られることになります。

リスト 10. GRUB のメニュー
    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 +-------------------------------------------------------------------------+
 | Fedora (2.6.35.14-95.fc14.x86_64)                                       |
 | Fedora (2.6.35.13-92.fc14.x86_64)                                       |
 | Fedora (2.6.35.13-91.fc14.x86_64)                                       |
 | GRUB                                                                    |
 | Slackware 13                                                            |
 | Windows                                                                 |
 |                                                                         |
 |                                                                         |
 +-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press enter to boot the selected OS, 'e' to edit the
      commands before booting, or 'c' for a command-line.

例えば、Fedora の 3 番目のエントリー (2.6.35.13-91.fc14.x86_64) を編集するために、このエントリーを強調表示して e を押したとします。すると、リスト 11 のような出力が表示されます。

リスト 11. GRUB 構成エントリーを編集する
    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 +-------------------------------------------------------------------------+
 | root (hd1,13)                                                           |
 | kernel /boot/vmlinuz-2.6.35.13-91.fc14.x86_64 ro root=UUID=5e22a2e0-5>  |
 | initrd /boot/initramfs-2.6.35.13-91.fc14.x86_64.img                     |
 |                                                                         |
 |                                                                         |
 +-------------------------------------------------------------------------+
      Use the ^ and v keys to select which entry is highlighted.
      Press 'b' to boot, 'e' to edit the selected command in the
      boot sequence, 'c' for a command-line, 'o' to open a new line
      after ('O' for before) the selected line, 'd' to remove the
      selected line, or escape to go back to the main menu.

ここでも同じく矢印キーを使って編集する行を選択してから、e を押して編集を開始します。この例では、当初 /dev/sdb14 に Fedora をインストールし、その後、下位のパーティション (例えば /dev/sdb8) を削除したとします。これによって、Fedora パーティションは /dev/sdb13 (GRUB の概念では hd1,12) に移動するため、カーソル・キーを使って「hd1,13」の「3」の後ろに移動してから、カーソルを戻して「3」を削除し、代わりに「2」を挿入してください。これが済んだら、Enter キーを押して変更を確定するか、Esc を押して変更を取り消します。GRUB シェルを実行するのではなく、実際にシステムをブートするとしたら、最後に b を押してシステムをブートします。

GRUB シェルにブートする場合、このシェルではファイルシステム上のファイルを表示することができ、あたかも root ユーザーであるかのように実行されるため、システムを GRUB パスワードで保護することは必須です。ただし、ユーザーがリムーバブル・メディアからブートできるとしたら、ユーザー独自の GRUB 構成を提供することができます。GRUB のセキュリティーやその他の側面についての詳細は、GRUB マニュアル (「参考文献」を参照) のセキュリティーに関するセクションを参照してください。このマニュアルは、info grub コマンドを使用してシステム上に表示することもできます。


カーネル・パラメーター

カーネル・パラメーター (ブート・パラメーターとも呼ばれます) は、カーネル自体では判断できないようなハードウェア・パラメーターに関する情報をカーネルに提供することで、無効にしなければ検出されてしまう可能性がある値を無効にしたり、不適切な値が検出されないようにしたりします。これに該当するのは、例えば、システムを修復するためにシングル・ユーザー・モードでブートする場合や、SMP システムをユニプロセッサー・モードでブートする場合、あるいは代替ルート・ファイルシステムを指定する場合です。また、カーネル・レベルによっては、特定の容量よりも大きい RAM を持つシステムで、大きいメモリーをサポートできるようにするためのパラメーターが必要になります。

場合によっては、ブート・プロセスにパラメーターを追加する必要があります。例えば、システムを \single-user モードで立ち上げたい場合には、S パラメーターを追加しなければなりません。別の例として、新しくビルドしたカスタム・カーネルがブートしない理由を調べるために、前に動作していたカーネルを指定する必要があるとします。その場合、Tab キーを押して、ブートするイメージのリストと、オリジナルの簡潔な LILO テキスト・プロンプト、boot: を表示します。この時点で、イメージの名前を入力するか、Enter キーを押して 1 番目のエントリーを選択することができますが、パラメーターを追加する必要がある場合には、イメージの名前の後に続けてパラメーターを入力します。リスト 12 と図 7 に一例として、Tab キーを押した後、「Slackware13」と入力して Slackware 13 イメージを選択し、シングル・ユーザー・モードでブートするための S パラメーターを追加してから Enter キーを押してブート・プロセスを起動する方法を示します。

リスト 12. LILO でブート・パラメーターを指定する
Slackware 13     Windows        Fedora 14
boot: Slackware13 S
図 7. シングル・ユーザー・モードでの Slackware のブート
シングル・ユーザー・モードで起動する Slackware ブート・プロセスを示すスクリーン・キャプチャー

GRUB でも、カーネルに対して一連のコマンドと initrd 文を入力することができますが、それよりも、上記で説明した編集機能を使って既存のエントリーを編集することをお勧めします。例えば、シングル・ユーザー・モードでブートするには、エントリーに S パラメーターを追加します。

init プロセス

カーネルがロードを完了すると、通常は /sbin/init を起動します。このプログラムは、システムがシャットダウンされるまで実行され続けます。リスト 13 を見るとわかるように、このプログラムには必ずプロセス ID として 1 が割り当てられます。

リスト 13. init プロセス
[root@echidna ~]# ps --pid 1
  PID TTY          TIME CMD
    1 ?        00:00:00 init

init プログラムはシステムの残りの部分をブートするために、一連のスクリプトを実行します。これらのスクリプトは通常、/etc/rc.d/init.d または /etc/init.d にあり、システムのホスト名の設定、ファイルシステムのエラー・チェック、追加ファイルシステムのマウント、ネットワークの有効化、印刷サービスの起動、などのサービスを実行します。これらのスクリプトがすべて完了した時点で、initgetty というプログラムを起動します。このプログラムによって、コンソールにログイン・プロンプトが表示されるという仕組みです。グラフィカル・ログイン画面は、グラフィカル・ディスプレイ・マネージャー (例えば Gnome の GDM など) によって処理されます。

システムがカーネルをロードしても、init を正常に実行できない場合には、代わりの初期化プログラムを指定してリカバリーを試みてください。例えば、init=/bin/sh を指定すると、システムは root 権限でシェル・プロンプトにシステムをブートするので、そこからシステムを修復できる可能性があります。

使用できるブート・パラメーターについて詳しく調べるには、bootparam の man ページを利用するか、/usr/src/linux/Documentation/ramdisk.txt (一部のシステムでは、/usr/src/linux-$(uname -r)/Documentation/kernel-parameters.txt という名前になっていることもあります) を参照してください。

言うまでもありませんが、ブートするたびに同じ追加パラメーター一式を適用しなければならない場合には、それらのパラメーターを構成ファイルに追加してください。LILO を使用している場合には、忘れずに lilo を再実行してください。


ブート・イベント

Linux のブート・プロセスが実行されている間、コンソールにはカーネルがブート中であることや、システムのハードウェアやその他のカーネル関連の情報を伝えるために、メッセージが大量に出力されます。これらのメッセージは次々と現れては消えるので、ブート・プロセスが、例えばタイム・サーバーやチェック対象のファイルシステムに到達できないために待機状態になって遅延が生じない限り、メッセージを読むことはできないのが通常です。けれども Linux Bootsplash プロジェクト (「参考文献」を参照) の登場により、メッセージをグラフィカル背景に重ねて表示することや、メッセージを非表示にして単純なステータス・バーに置き換えることができるようになっています。お使いのディストリビューションが非表示モードをサポートしているとしたら、通常は F2 などのキーを押すことによって、ブート・メッセージを表示するように切り替えることができるはずです。

dmesg

カーネル・メッセージを再表示して確認できるのは便利なことです。標準出力はプロセスに関連しており、さらにカーネルにはプロセス ID がないことから、カーネル (およびモジュール) の出力メッセージはカーネル・リング・バッファーに保持されます。dmesg コマンドを使用してカーネル・リング・バッファーを表示すると、これらのメッセージが標準出力に表示されます。もちろん、後で分析したり、デバッグのためにカーネル開発者に転送したりできるように、このコマンドの出力はファイルにリダイレクトすることが可能です。リスト 14 に例として、出力の一部を抜粋して記載します。

リスト 14. dmesg を実行した場合の出力の抜粋
[root@echidna ~]# dmesg | head -n 30
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.35.14-95.fc14.x86_64 (mockbuild@x86-07.phx2.fedoraprojec
t.org) (gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) ) #1 SMP Tue Aug 16 21:01:58 U
TC 2011
[    0.000000] Command line: ro root=UUID=5e22a2e0-5ac2-47d5-b98a-d5b25eff585a rd_NO_LUKS
 rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=us rhgb 
quiet
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
[    0.000000]  BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bf6b0000 (usable)
[    0.000000]  BIOS-e820: 00000000bf6b0000 - 00000000bf6c8000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000bf6c8000 - 00000000bf6cb000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bf6cb000 - 00000000c0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved)
[    0.000000]  BIOS-e820: 0000000100000000 - 0000000134000000 (usable)
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] DMI present.
[    0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserv
ed)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[    0.000000] No AGP bridge found
[    0.000000] last_pfn = 0x134000 max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-C7FFF write-protect
[    0.000000]   C8000-E3FFF uncachable

カーネル・リング・バッファーは、システムがブートした後に発生したイベントにも使用されます。例えば、特定のプログラムの失敗や、ホットプラグなどのイベントです。リスト 15 に、USB メモリーの接続に関するエントリーを示します。

リスト 15. カーネル・リング・バッファーに保持されたブート後のイベント
[root@echidna ~]# dmesg | tail -n 19
[70259.964953] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[70259.964957] usb 1-4: Product: Storage Media
[70259.964960] usb 1-4: Manufacturer: Sony
[70259.964963] usb 1-4: SerialNumber: 0205093006441
[70260.228187] Initializing USB Mass Storage driver...
[70260.229608] scsi4 : usb-storage 1-4:1.0
[70260.229749] usbcore: registered new interface driver usb-storage
[70260.229752] USB Mass Storage support registered.
[70261.232195] scsi 4:0:0:0: Direct-Access     Sony     Storage Media    0100 PQ: 0 ANSI:
 0 CCS
[70261.233159] sd 4:0:0:0: Attached scsi generic sg3 type 0
[70261.237931] sd 4:0:0:0: [sdc] 1014784 512-byte logical blocks: (519 MB/495 MiB)
[70261.238809] sd 4:0:0:0: [sdc] Write Protect is off
[70261.238814] sd 4:0:0:0: [sdc] Mode Sense: 43 00 00 00
[70261.238818] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[70261.243554] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[70261.243566]  sdc:
[70261.317555] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[70261.317561] sd 4:0:0:0: [sdc] Attached SCSI removable disk
[70261.616396] SELinux: initialized (dev sdc, type vfat), uses genfs_contexts

/var/log/messages

システムが /sbin/init を実行する時点になると、カーネルは引き続き前述のリング・バッファーにイベントを記録する一方、プロセスは syslog デーモンを使用してメッセージをログに記録します。このログは、通常は /var/log/messages に格納されます。リング・バッファーとは対照的に、syslog の各行にはタイム・スタンプが付けられ、このファイルはシステムが再起動しても維持されます。ブート・プロセスで init スクリプトの実行段階に発生したエラーを調べる場合、最初に調べるのはこのファイルです。

ほとんどのデーモンの名前は、「d」で終わります。リスト 16 に、リブート後に記録された最新のデーモン・ステータス・メッセージを、件数を指定して表示する方法を示します。

リスト 16. /var/log/messages に記録されたデーモン・メッセージ
[root@echidna ~]# grep "^Sep.*d\:" /var/log/messages|tail -n 14
Sep  7 18:21:08 echidna acpid: waiting for events: event logging is off
Sep  7 18:21:12 echidna abrtd: Registered Analyzer plugin 'Kerneloops'
Sep  7 18:21:12 echidna abrtd: Registered Analyzer plugin 'Python'
Sep  7 18:21:12 echidna abrtd: Registered Reporter plugin 'Logger'
Sep  7 18:21:13 echidna abrtd: Registered Analyzer plugin 'CCpp'
Sep  7 18:21:13 echidna abrtd: Registered Action plugin 'KerneloopsScanner'
Sep  7 18:21:13 echidna abrtd: Registered Reporter plugin 'Bugzilla'
Sep  7 18:21:13 echidna abrtd: Registered Reporter plugin 'KerneloopsReporter'
Sep  7 18:21:13 echidna abrtd: Checking for unsaved crashes (dirs to check:5)
Sep  7 18:21:13 echidna abrtd: Registered Database plugin 'SQLite3'
Sep  7 18:21:13 echidna abrtd: Done checking for unsaved crashes
Sep  7 18:21:13 echidna abrtd: Init complete, entering main loop
Sep  7 18:21:26 echidna auditd[2032]: Started dispatcher: /sbin/audispd pid: 2034
Sep  7 18:21:26 echidna audispd: audispd initialized with q_depth=120 and 1 active plugins

/var/log には、その他多くのシステム・プログラムのログも格納されます。例えば、X Window システムの起動ログもここにあります。

以上で、Linux システムのブート・プロセスについての説明は終わりです。

参考文献

学ぶために

製品や技術を入手するために

  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=765662
ArticleTitle=Linux の 101 試験対策: システムのブート
publish-date=10212011