1はじめにマシンを制御するには、オペレーティングシステムの主要コンポーネント〜すなわちカーネルを、ブートローダー(bootloader)というプログラムでロードする必要があります。このプログラム自体は、BIOSやUEFIなどのプリインストールされたファームウェアによってロードされます。ブートローダーは、ルートファイルシステムを含むパーティションやオペレーティングシステムを実行するモードなどのパラメータを、カーネルに渡すようにカスタマイズできます。カーネルがロードされると、ブートの過程でハードウェアを識別して構成します。最後にカーネルは、システムサービスの開始と管理を担当するユーティリティを呼び出します。Note一部のLinuxディストリビューションでは、このレッスンで実行するコマンドにroot権限が必要なことがあります。BIOSまたはUEFIx86マシンでブートローダーを実行する手順は、BIOSとUEFIのどちらを使用するかによって異なります。System)は、マザーボードに搭載された不揮発性メモリチップに保存され、コンピュータの電源がオンになると実行されるプログラムです。呼ばれ、そのシステムに搭載されたストレージデバイスとは異なる場所に保存されています。呼ばれる)が置かれていると想定します。Record)と呼ばれて、ブートローダーの最初のステージと、DOSパーティションスキーマに基づく標準的なパーティションテーブルを含んでいます。MBRに正しいデータが含まれていない場合は、通常の方法ではシステムを起動できません。self-test)処理は、マシンの電源がオンになるとすぐに、単純なハードウェア診断を実行します。BIOSは、ビデオ出力、キーボード、ストレージメディアなど、システムをロードするための基本コンポーネントを起動します。BIOSは、MBRからブートローダーの最初のステージをロードします(BIOS設定で指定したデバイスの最初の440バイト)。ブートローダーの第1ステージは、ブートオプションの提示とカーネルのロードを行う、ブートローダーの第2ステージを呼び出します。Interface)は、いくつかの重要な点でBIOSとは異なります。UEFIもBIOSと同様にファームウェアの一種ですが、パーティションを識別して、そこにあるファイルシステムを読み取ることができます。UEFIはMBRではなく、マザーボードに搭載された不揮発性メモリ(NVRAM)に保存されている設定情報を利用します。呼ばれるプログラムが実行されます。EFIアプリケーションには、ブートローダー、オペレーティングシステムセレクター、システム診断および修復用のツールなどがあります。これらは、伝統的なストレージデバイス上のパーティション上の、UEFIと互換性のあるファイルシステムに存在する必要があります。標準的なUEFI互換のファイルシステムは、ブロックデバイスの場合はFAT12、FAT16、FAT32、光メディアの場合はISO-9660です。UEFIのこのアプローチにより、BIOSよりもはるかに高度なツールの実装が可能になっています。このパーティションを、ルートファイルシステムやユーザーデータのファイルシステムなどに使用してはいけません。ESPパーティションのEFIディレクトリには、NVRAMに保存されているエントリが指すアプリケーションが含まれています。UEFIを備えたシステムにおいては、一般的にオペレーティングシステムの起動前に以下の処理が行われます。self-test)処理は、マシンの電源がオンになるとすぐに、単純なハードウェア診断を実行します。UEFIは、ビデオ出力、キーボード、ストレージメディアなど、システムをロードするための基本コンポーネントを起動します。UEFIのファームウェアは、NVRAMに格納されている設定情報に従って、ESPパーティションのファイルシステムに格納されているEFIアプリケーションを実行します。通常、実行されるEFIアプリケーションはブートローダーです。事前定義されたEFIアプリケーションがブートローダーの場合、それがカーネルをロードしてオペレーティングシステムを起動します。呼ばれる機能もサポートしています。この機能は、署名されたEFIアプリケーション、つまりハードウェアメーカーによって承認されたEFIアプリケーションの実行のみを許可します。この機能により、悪意のあるソフトウェアに対する保護が強化されますが、製造元の保証対象外のオペレーティングシステムのインストールが困難になることがあります。Bootloader)です。BIOSまたはUEFIによって呼び出されるとすぐに、GRUBは起動可能なオペレーティングシステムのリストを表示します。リストが自動的に表示されない場合もありますが、BIOSからGRUBが呼び出されているときにShiftを押すとリストを呼び出すことができます。UEFIシステムでは、代わりにEscキーを使用します。GRUBメニューから、インストールされているカーネルのどれをロードするかを選択し、それに新しいパラメータを渡すことができます。いうパターンで指定します。使う機会が多いいくつかのパラメータを以下に示します:acpiACPIサポートを有効/無効にします。ACPIのサポートを無効にします。init代替の初期化デーモンを指定します。Bashシェルを初期化デーモンに指定します。これにより、カーネルがブートすると直ぐにシェルセッションが開始されることになります。ターゲットを指定します。定義されているランレベルも受け入れます。memシステムで使用可能なRAMの量を指定します。このパラメータは、仮想マシンゲストが使用できるRAMの量を制限する場合に便利です。使用すると、そのゲストシステムで使用可能なRAMの量が512メガバイトに制限されます。maxcpus対称型マルチプロセッサマシンにおいて、システムが認識するプロセッサ(またはプロセッサコア)の数を制限します。仮想マシンにも役立ちます。オペレーティングシステムで使用可能なプロセッサの数を2つに制限します。quietほとんどのブートメッセージを非表示にします。vgaビデオモードを選択します。選択可能なモードのリストを表示します。rootブートローダーで指定されたものとは異なるルートパーティションを設定します。rootflagsルートファイルシステムのマウントオプション。roルートファイルシステムを読み取り専用で初期マウントします。rwルートファイルシステムを読み書き両用で初期マウントします。通常はカーネルパラメータの変更は必要ありませんが、オペレーティングシステム関連の問題を検出して解決するのに役立つ場合があります。行に追加すると、再起動後にも有効となります。コマンドを実行して、ブートローダーの新しい構成ファイルを再生成する必要があります。ファイルから読み取ることができます。NoteGRUBの構成については、後のレッスンで詳しく説明します。システムの初期化オペレーティングシステムは、カーネルだけではなく、さまざな機能を提供する多数のコンポーネントから成っています。これらのコンポーネントの多くは、単純なシェルスクリプトから複雑なサービスプログラムまで、システムの初期化処理によって読み込まれます。システムの初期化中に実行されてすぐに終了する短期間のタスクの多くにはスクリプトが使用されます。オペレーティングシステムの本質的な側面を担当するサービス(デーモン(daemons)とも呼ばれる)は、常に実行され続けます。さまざまな特徴があるスタートアップスクリプトやデーモンをLinuxディストリビューションに組み込む方法は、バラエティに富んだものでした。そのため、すべてのLinuxディストリビューションのメンテナーとユーザーの期待に応える決定的な解決方法は、長い期間存在しませんでした。ソフトウェアの更新後に再起動などの操作が自動的に実行されることもありますが、構成ファイルに変更を加えた後のほとんどの場合には、システム管理者がサービスを手動で再起動する必要があります。システム管理者が、状況に応じて特定のデーモン群をアクティブ化できると便利です。システムメンテナンスタスクを実行するために、最小限のサービス群のみを実行するといった場面があります。Note厳密に言えば、オペレーティングシステムとは、ハードウェアを制御しすべてのプロセスを管理するカーネルとそのコンポーネントを指します。いう用語をより大きくとらえ、ユーザーが基本的な計算タスクを実行できるソフトウェア環境のさまざまなプログラムのグループ全体を指します。ブートローダーがカーネルをRAMにロードした直後に、オペレーティングシステムの初期化が開始されます。CPUをカーネルが専有して、基本的なハードウェア構成やメモリアドレス指定など、オペレーティングシステムの基本的な機能のセットアップを行います。(RAM上の初期ファイルシステム)を開きます。initramfsは、ブート処理中に一時的なルートファイルシステムとして使用されるファイルシステムを格納したアーカイブです。ルートファイルシステムにアクセスするために必要なモジュールを提供することです。いう名前のユーティリティを実行します。プログラムは、すべての初期化スクリプトとシステムデーモンの実行を担当します。従来のinitとは異なる初期化デーモンの実装もあります。initプログラムが起動すると、initramfsはRAMから削除されます。ランレベルには0から6の番号が付けられ、ディストリビューションのメンテナがそれぞれの番号に特定の目的を割り当てます。すべてのディストリビューション間で共通するランレベルは、ランレベル0、1、6のみです。systemdsystemdは、SysVinitのコマンドとランレベルに対する互換性を備えた、最新のシステムとサービスのマネージャーです。よるプロセス監視、スナップショットのサポート、システムセッションの回復、マウントポイントの制御、依存関係に基づくサービス制御などを、並行して行います。近年、主要なLinuxディストリビューションでは、デフォルトのシステムマネージャーとしてsystemdの採用が増えています。UpstartUpstartは、systemdと同様に、SysVinitの代わりになります。Upstartの目標は、システムサービスを並列的に起動することにより、ブート処理を高速化することです。Upstartは、以前のUbuntuベースのディストリビューションなどで使用されていましたが、今日ではsystemdに取って代わられました。起動処理の最中に、オペレーティングシステムを完全に停止するほどには重要ではないエラーが発生することがあります。そのようなエラーが、システムの所定の動作を損なうかもしれません。エラーメッセージには、エラーがいつどのように発生したかを示す貴重な情報が含まれているので、後の調査に役立ちます。エラーメッセージが発生しない時でも、起動処理中に収集された情報は、チューニングや設定に役立ちます。呼ぶメモリ領域に記録します。初期化処理中にアニメーションが表示されてメッセージが表示されない場合でも、メッセージはカーネルリングバッファに格納されます。コマンドを実行すると、カーネルリングバッファ内のすべてのメッセージは消えてしまいます。コマンドは、カーネルリングバッファ内の現在のメッセージを表示します。出力は数百行に達することがあるため、上記のリストには、カーネルがsystemdサービスマネージャーを呼び出す部分を抜粋して示しています。行の先頭の値は、カーネルのロードが開始された時から経過した秒数です。オプションを指定すると、ブート時のメッセージを表示します。コマンドは、現在のブートからの相対的なブート番号とそのハッシュ値、最初と最後のメッセージのタイムスタンプをリスト表示します。-03systemdに基づくシステムでは過去のブートログも保持されるので、過去のブートにおけるオペレーティングシステムからのメッセージも調べることができます。オプションを指定すると、現在のブート時のメッセージが表示されます。オプションを指定すると、前回のブート時のメッセージを表示します。オプションを指定すると、さらにその前のブート時のメッセージを表示します。次の抜粋は、直前のブート時にカーネルがsystemdサービスマネージャーを呼び出した部分を示しています。ディレクトリ内のファイルに保存されます。カーネルとinitramfsをロードした後に重大なエラーが発生し、オペレーティングシステムが初期化プロセスを続行できない場合は、別のブートメディアを使用してシステムを起動して、エラー発生時に対応するファイルシステムにアクセスします。下にあるファイルを検索して、起動プロセスの中断の原因を探します。以外のディレクトリにあるログメッセージを読み取ることができます。コマンドを使用します。演習BIOSファームウェアを搭載したマシンで、ブートストラップのバイナリはどこにありますか?UEFIファームウェアは、EFIアプリケーションと呼ばれる外部プログラムによる機能拡張をサポートします。これらのアプリケーションは所定の位置に置く必要があります。EFIアプリケーションはシステムのどこに配置されますか?ブートローダーは、カーネルをロードする際にカスタムパラメータを渡すことができます。指示するにはどうしますか?Linuxマシンの起動プロセスが、次のメッセージで終了しました。shell!この問題の原因として何が考えられますか?発展演習マシンに複数のオペレーティングシステムがインストールされている場合、ブートローダーは選択できるオペレーティングシステムのリストを表示します。新しくオペレーティングシステムをインストールしたときに、ハードディスクのMBRを上書きしてブートローダーの最初のステージを消去してしまい、他のオペレーティングシステムにアクセスできなくなることがあります。コマンドなどのページャーにパイプすることがよくあります。コマンドのオプションは何ですか?停止中のマシンから、ファイルシステム全体を含むハードドライブを取り外して、稼働中のマシンのセカンダリドライブとして接続しました。コマンドで調べるにはどうしますか?まとめこのレッスンでは、標準的なLinuxシステムのブートシーケンスについて説明しました。Linuxシステムのブート処理がどのように行われるかを知っていると、システムにアクセスできなくなるおそれがあるエラーを防ぐのに役立ちます。このレッスンでは、以下のトピックについて説明しました:BIOSとUEFIにおける起動方法の違い。システムの一般的な初期化手順。ブート時のメッセージを取り出す方法。以下のコマンドと手順を取り上げました:よく使うカーネルパラメータ。journalctl。演習の解答BIOSファームウェアを搭載したマシンで、ブートストラップのバイナリはどこにありますか?BIOS構成で最初のストレージデバイスとして定義したデバイスのMBRの中にあります。UEFIファームウェアは、EFIアプリケーションと呼ばれる外部プログラムによる機能拡張をサポートします。これらのアプリケーションは所定の位置に置く必要があります。EFIアプリケーションはシステムのどこに配置されますか?EFIアプリケーションは、任意のストレージブロック上のファイルシステム(通常はFAT32ファイルシステム)であるEFIシステムパーティション(ESP)に配置されます。ブートローダーは、カーネルをロードする際にカスタムパラメータを渡すことができます。パラメータを使用します。Linuxマシンの起動プロセスが、次のメッセージで終了しました。見つけることができませんでした。発展演習の解答マシンに複数のオペレーティングシステムがインストールされている場合、ブートローダーは選択できるオペレーティングシステムのリストを表示します。新しくオペレーティングシステムをインストールしたときに、ハードディスクのMBRを上書きしてブートローダーの最初のステージを消去してしまい、他のオペレーティングシステムにアクセスできなくなることがあります。UEFIファームウェアを搭載したマシンでは、このような問題が発生しないのはなぜですか?UEFIマシンは、ブートローダーの最初のステージを格納するために、ハードディスクのMBRを使用しないからです。カスタムカーネルをインストールするときに、適切なinitramfsの提供を忘れるとどうなりますか?ルートファイルシステムが、カーネルモジュールとしてコンパイルされているタイプの場合には、ルートファイルシステムにアクセスできません。コマンドなどのページャーにパイプすることがよくあります。コマンドでは、ページャーが有効になります。停止中のマシンから、ファイルシステム全体を含むハードドライブを取り外して、稼働中のマシンのセカンダリドライブとして接続しました。コマンドを使用します。Licenseの下でライセンスされています。Licenseの下でライセンスされています。LPIは非営利団体です。Institute(LPI)は、オープンソースプロフェッショナル向けのグローバルな認定基準およびキャリアサポート組織です。200,000人以上の認定保持者を擁する、世界初かつ最大のベンダー中立Linuxおよびオープンソース認定機関です。LPIは180か国以上で認定プロフェッショナルを擁し、複数の言語で試験を実施し、何百ものトレーニングパートナーを擁しています。私たちの目的は、オープンソースの知識とスキルの認定資格を世界中からアクセスできるようにすることで、誰にとっても経済的で創造的な機会を可能にすることです。私たちに知らせてください。