助け合いフォーラム
LinuC Lv1-101(Ver10.0)
問題ID : 14331
問題を開く
システム起動時においてのカーネルの説明として正しいものは次のうちどれか。(全て選択)
正解
高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う
/sbin/initを起動する
解説
カーネルは起動されると、高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行います。
ブートローダはカーネルと初期RAMディスク(initramfs)の内容をメモリ上に展開し、カーネルはメモリ上に展開された初期RAMディスク内の、ファイルシステムへアクセスするために必要なドライバやスクリプトを使用してルートファイルシステムをマウントします。その後、initという特別な最初のプロセスをルートファイルシステムから起動します。
「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、initプロセスとして「/sbin/init」が起動されます。なお、カーネルはブートローダの次に起動されます。
したがって正解は
・高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う
・/sbin/initを起動する
です。
その他の選択肢については以下のとおりです。
・記憶装置(HDD)内のカーネルをロードし、制御を移す
ブートローダについての説明ですので、誤りです。
・設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ちあげるなど、アプリケーションレベルの初期化を行う
initについての説明ですので、誤りです。
・記憶装置(HDD)等に関して最低限の認識を行う
BIOSについての説明ですので、誤りです。
ブートローダはカーネルと初期RAMディスク(initramfs)の内容をメモリ上に展開し、カーネルはメモリ上に展開された初期RAMディスク内の、ファイルシステムへアクセスするために必要なドライバやスクリプトを使用してルートファイルシステムをマウントします。その後、initという特別な最初のプロセスをルートファイルシステムから起動します。
「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、initプロセスとして「/sbin/init」が起動されます。なお、カーネルはブートローダの次に起動されます。
したがって正解は
・高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う
・/sbin/initを起動する
です。
その他の選択肢については以下のとおりです。
・記憶装置(HDD)内のカーネルをロードし、制御を移す
ブートローダについての説明ですので、誤りです。
・設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ちあげるなど、アプリケーションレベルの初期化を行う
initについての説明ですので、誤りです。
・記憶装置(HDD)等に関して最低限の認識を行う
BIOSについての説明ですので、誤りです。
参考
一般的なLinuxシステムでは、BIOS、ブートローダ、カーネル、initの順にブートプロセスが進行します。
それぞれの役割と、各段階の詳細は以下のとおりです。
この知識は、OS起動に失敗する場合の問題特定の際にも重要なので、自分で順を追って説明できるようにしておきましょう。
・BIOS(Basic I/O System)
最もハードウェアに近い部分を司るシステムで、物理的なハードウェア(マザーボード)上に書き込まれています。
コンピュータの電源を入れると、まずBIOSが起動し、記憶装置(HDD)等に関して最低限の認識をして起動デバイスの優先順位を決定します。その後、優先順位に従って各デバイスの先頭セクタにあるMBR(ブート用の特殊領域。ブートローダが格納されている)を読み込み、得られたブートローダに制御を移します。ブートローダが得られない場合は次のデバイスのMBRを読み込みます。
起動デバイスの優先順位は、BIOSセットアップ画面で任意の順序に設定変更できます。BIOSセットアップ画面はコンピュータの起動時に特定のキー(DEL、F2など)を押すことで呼び出せます。
最近のシステムではUEFI(Unified Extensible Firmware Interface)への移行が進んでいます。
・ブートローダ
LinuxシステムではGRUBが該当します。
MBRに格納されている第一段階部分と、記憶装置内の別の場所に格納されている第二段階部分があります。
このように分かれている理由は、MBRには厳しいサイズ制限があるためです。
ブートローダは記憶装置内のカーネルをロードし、カーネルに制御を移す役割を果たします。
第一段階のブートローダはMBRの先頭446バイトの領域にインストールされます。
・カーネル
カーネルは起動されると、高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行います。
ブートローダはカーネルと初期RAMディスク(initramfs)の内容をメモリ上に展開し、カーネルはメモリ上に展開された初期RAMディスク内の、ファイルシステムへアクセスするために必要なドライバやスクリプトを使用してルートファイルシステムをマウントします。その後、initという特別な最初のプロセスをルートファイルシステムから起動します。
カーネルイメージと、カーネルのバージョンに対応する初期RAMディスクは「/boot」ディレクトリに格納されます。初期RAMディスクは展開してイメージ内のディレクトリ、ファイルを参照することができます。
・init
最初に起動されるプロセスで、PID(プロセス ID)は必ず1です。「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、「/sbin/init」が起動されます。
initプロセスは設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ちあげるなど、アプリケーションレベルの初期化を行います。
以降、initプロセスは全てのプロセスの先祖(直接・間接的な呼び出し元)として存在し続けます。
なお、最近のシステムではinitプログラムとして、初期化処理を高速化したUpstartやsystemdを採用している場合があります。その場合は基本的に「/etc/inittab」ファイルは使用されません。
それぞれの役割と、各段階の詳細は以下のとおりです。
この知識は、OS起動に失敗する場合の問題特定の際にも重要なので、自分で順を追って説明できるようにしておきましょう。
・BIOS(Basic I/O System)
最もハードウェアに近い部分を司るシステムで、物理的なハードウェア(マザーボード)上に書き込まれています。
コンピュータの電源を入れると、まずBIOSが起動し、記憶装置(HDD)等に関して最低限の認識をして起動デバイスの優先順位を決定します。その後、優先順位に従って各デバイスの先頭セクタにあるMBR(ブート用の特殊領域。ブートローダが格納されている)を読み込み、得られたブートローダに制御を移します。ブートローダが得られない場合は次のデバイスのMBRを読み込みます。
起動デバイスの優先順位は、BIOSセットアップ画面で任意の順序に設定変更できます。BIOSセットアップ画面はコンピュータの起動時に特定のキー(DEL、F2など)を押すことで呼び出せます。
最近のシステムではUEFI(Unified Extensible Firmware Interface)への移行が進んでいます。
・ブートローダ
LinuxシステムではGRUBが該当します。
MBRに格納されている第一段階部分と、記憶装置内の別の場所に格納されている第二段階部分があります。
このように分かれている理由は、MBRには厳しいサイズ制限があるためです。
ブートローダは記憶装置内のカーネルをロードし、カーネルに制御を移す役割を果たします。
第一段階のブートローダはMBRの先頭446バイトの領域にインストールされます。
・カーネル
カーネルは起動されると、高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行います。
ブートローダはカーネルと初期RAMディスク(initramfs)の内容をメモリ上に展開し、カーネルはメモリ上に展開された初期RAMディスク内の、ファイルシステムへアクセスするために必要なドライバやスクリプトを使用してルートファイルシステムをマウントします。その後、initという特別な最初のプロセスをルートファイルシステムから起動します。
カーネルイメージと、カーネルのバージョンに対応する初期RAMディスクは「/boot」ディレクトリに格納されます。初期RAMディスクは展開してイメージ内のディレクトリ、ファイルを参照することができます。
・init
最初に起動されるプロセスで、PID(プロセス ID)は必ず1です。「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、「/sbin/init」が起動されます。
initプロセスは設定ファイル「/etc/inittab」の記述に基づいて、自動起動するべきプロセスを立ちあげるなど、アプリケーションレベルの初期化を行います。
以降、initプロセスは全てのプロセスの先祖(直接・間接的な呼び出し元)として存在し続けます。
なお、最近のシステムではinitプログラムとして、初期化処理を高速化したUpstartやsystemdを採用している場合があります。その場合は基本的に「/etc/inittab」ファイルは使用されません。
カーネルについて
k
kyuri116
公開日 2024/06/07
Q.システム起動時においてのカーネルの説明として正しいものは次のうちどれか。
A・高度にハードウェアを認識・制御し、ルートファイルシステムのマウントなど様々な初期化処理を行う
・/sbin/initを起動する
説明を読んだところ、「/sbin/initを起動する」はカーネルではなくinitなのではと思ったのですが、
なぜ正解になるのか教えてください。
2024/06/09 00:11
疑問の内容がちょっとうまく掴めないのですが、「 init と言うものが /sbin/init
を起動する」と言う説明があると言うことでしょうか?
解説の
その後、initという特別な最初のプロセスをルートファイルシステムから起動します。
「SysVinit」と呼ばれる従来のinitプログラムを採用しているシステムでは、initプロセスとして「/sbin/init」が起動されます。
で「カーネルがinitプロセス( バイナリは /sbin/init
)を起動する」と説明されていると思うのですが、ご指摘のポイントはこことは違う箇所でしょうか?
コメント
この投稿に対して返信しませんか?
k kyuri116
2024/06/10 10:14
ご回答ありがとうございます。 『initプロセスとして「/sbin/init」が起動されます』 と記述されているのに、『/sbin/initを起動する』がカーネルの役割とされていることが腑に落ちませんでした。