Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxの起動プロセスを徹底解説!BIOSからランレベルまで知っておくべき流れ

Linuxの起動プロセスを徹底解説!BIOSからランレベルまで知っておくべき流れ

オープンソースOS「Linux」の起動には、いくつかの重要な段階があります。起動プロセス全体を理解しておくと、トラブル発生時の切り分けや復旧作業に大きく役立ちます。特にシステム管理者にとっては、押さえておきたい必須知識と言えるでしょう。

では、電源ボタンを押した瞬間からシステムが立ち上がるまでの間、裏側では一体何が起こっているのでしょうか。順を追って詳しく見ていきましょう。

BIOS(基本入出力システム)

BIOS(Basic Input/Output System)は、マザーボード上の小さなメモリチップに格納された低レベルのファームウェアです。このファームウェアは起動プロセスを支援するとともに、マウス、プリンター、ビデオアダプターなど、接続された周辺機器との間のデータのやり取りを管理します。

Linuxの起動プロセスを徹底解説!BIOSからランレベルまで知っておくべき流れ

上図のとおり、BIOSの主な役割はPOST(Power-On Self Test:電源投入時セルフテスト)の実行です。このテストでは、システムハードウェアが正常に動作しているかを確認し、後続の処理に必要なソフトウェアを含むブートセクターを探します。POSTが成功すると、BIOSは次のステップである「第1段階ブートローダー」をシステムのRAMに読み込みます。

一方、POSTが失敗した場合は、BIOSがトラブルシューティングに使えるエラーコードを返します。

ブートローダー 第1段階

ブートローダーの第1段階は、MBR(Master Boot Record:マスターブートレコード)またはGPT(GUID Partition Table:GUIDパーティションテーブル)と呼ばれ、次のプログラムを起動させるための仕組みです。

MBRは非常にシンプルなソフトウェアで、ファイルシステムを認識する機能を持っていません。そのため、第2段階のブートローダーは、必ずMBRとハードディスクの最初のパーティションとの間に配置する必要があります。

MBRが第2段階のブートローダーを検出すると、そこに制御を引き渡します。

ブートローダー 第2段階

第2段階ブートローダーの役割は、カーネルを見つけ出してメモリに読み込むことです。

ほとんどのLinuxディストリビューションでは、GRUB、GRUB2、LILOの3種類のうちいずれかのブートローダーが使用されます。中でも最新のGRUB2(下図)を採用しているケースが最も多いでしょう。

Linuxの起動プロセスを徹底解説!BIOSからランレベルまで知っておくべき流れ

ブートローダーがカーネルを検出してRAMに読み込むと、制御をカーネルへ引き渡します。同時に、カーネルがモジュールを探せるよう、ファイルシステムのイメージも一緒に渡します。

カーネル

すべてのカーネルは、ハードディスクの容量を節約するために圧縮形式で保存されています。そのため、制御を受け取ったカーネルが最初に行うのは自己展開(セルフ解凍)です。その後、ブートローダーから受け取ったファイルシステムのイメージをマウントします。

続いて、カーネルはシステムのハードウェアを検出し、メモリ上のイメージからディスク上のルートファイルシステムへと切り替えます。

init(systemd)

次に、カーネルは初期化(init)システムを起動します。これは、起動プロセスに必要なすべてのプロセスを生成する、最初のプロセスです。近年の多くのシステムでは、systemdが採用されています。

systemdの主な役割は、システムの稼働に必要なデーモン(バックグラウンドプロセスやサービス)をすべて起動することです。これらのサービスは初期化完了後も動作し続け、各種システムメッセージのログ記録、デバイスの監視、ファイルシステムとシステムメモリの同期維持など、重要なシステムプロセスを管理します。

systemdが現在どのサービスを実行しているのかを確認したい場合は、systemctlコマンドを単独で実行すれば、完全な一覧が表示されます。

また、systemctlコマンドとサービス名を組み合わせれば、起動時に特定のサービスを開始することもできます。例えば、NFSの状態を確認したい場合は systemctl status nfs-server.service と入力します。さらに、start、stop、enable、disable といったサブコマンドと組み合わせることで、サービスの開始・停止・自動起動の有効化/無効化も柔軟に行えます。

ランレベル

ランレベルとはinitの動作状態を表す概念で、どのサービスを実行するかを定義します。標準的なLinuxカーネルは、以下の7つのランレベルをサポートしています。

  • 0: システム停止(電源オフ可能な状態)
  • 1: シングルユーザーモード
  • 2: マルチユーザーモード(ネットワークファイルシステムなし)
  • 3: GUIではなくCLI(コマンドラインインターフェース)で動作するマルチユーザーモード
  • 4: ユーザー定義
  • 5: GUIを使用するマルチユーザーモード(多くのLinuxシステムのデフォルト起動モード)
  • 6: 再起動

Linuxの起動プロセスを徹底解説!BIOSからランレベルまで知っておくべき流れ

何らかの理由でランレベルを変更したい場合は、上図のように telinit コマンドを使ってINITに変更を指示します。

まとめ:起動プロセスを理解してトラブルに備えよう

ここまで紹介した内容は、Linuxの起動プロセスの全体像をつかむための概要であり、細部までは網羅していません。それでも、BIOSからランレベルまでの一連の流れを把握しておけば、実際に問題が発生した際に、どこに原因があるのかを切り分けやすくなるはずです。ぜひ本記事を参考に、トラブルシューティングの基礎知識として活用してください。

  1. Linuxのスワップパーティションとは?仕組みから追加方法、チューニングまで徹底解説

    Linuxをインストールすると、セットアッププロセスがLinux本体用のパーティションとともに、ハードディスク上に「スワップパーティション」を作成するのが一般的です。では、このスワップパーティションは一体何のために使われ、本当に必要なのでしょうか?本記事では、スワップの基本的な仕組みから、その必要性、適切なサイズの目安、追加方法、そして動作を最適化するためのチューニング手法まで、わかりやすく解説します。スワップとは何か?マルチタスクOSが物理メモリを使い果たすと、新しいプロセスを起動できなくなり、既存のプロセスにメモリを追加で割り当てることもできなくなります。この問題を解決するために、ローカル

  2. Windows 10 May 2019 Update(バージョン1903):知っておくべきこと

    アップデート失敗の報告が相次ぐ 大型機能アップデート「Windows 10 May 2019 Update(バージョン1903)」は、まだ正式リリースには至っていませんが、MSDNコミュニティや先行テスターの間で早くも問題が報告されています。アップグレードを試みたユーザーの一部に、「お使いのPCはこのアップデートの準備ができていません」という趣旨のエラーメッセージが表示されるというものです。メッセージは「注意が必要な項目」という見出しから始まり、PCがアップデートの準備未了である理由を伝える仕組みになっています。 注意が必要な項目インストールを続行し、Windowsの設定・個人ファイル