Linuxブートプロセスのさまざまな段階への基本ガイド


Linux PCの電源を入れるたびに、一連の段階を経て、最終的にユーザー名またはパスワードの入力を求めるログイン画面が表示されます。すべてのLinuxディストリビューションが通常の起動プロセスで通過する4つの異なる段階があります。

このガイドでは、Linux OSの電源を入れてからログインするまでのさまざまな手順について説明します。このガイドでは、現在使用されているGRUB2ブートローダーとsystemdinitのみを考慮していることに注意してください。最新のLinuxディストリビューションの大多数によって。

起動プロセスでは、次の4つの手順を実行します。これについては、後で詳しく説明します。

  • BIOS Integrity check (POST)
  • Loading of the Boot loader (GRUB2)
  • Kernel initialization
  • Starting systemd, the parent of all processes

1. BIOS整合性チェック(POST)

起動プロセスは通常、ユーザーが電源オンボタンを押すと(PCがすでにシャットダウンされている場合)、またはGUIまたはコマンドラインを使用してシステムを再起動すると初期化されます。

Linuxシステムの電源が入ると、BIOS(基本入出力システム)が起動し、電源投入時自己診断(POST)を実行します。これは、多数の診断チェックを実行する整合性チェックです。

POSTは、HDDまたはSSD、キーボード、RAM、USBポート、およびその他のハードウェアなどのコンポーネントのハードウェア操作性を調査します。一部のハードウェアデバイスが検出されない場合、またはHDDやSSDの破損など、いずれかのデバイスに誤動作がある場合は、介入を促すエラーメッセージが画面に表示されます。

場合によっては、特にRAMモジュールがない場合に、ビープ音が鳴ります。ただし、期待されるハードウェアが存在し、期待どおりに機能している場合、起動プロセスは次の段階に進みます。

2.ブートローダー(GRUB2)

POSTが完了し、コーストがクリアになると、BIOSはMBR(マスターブートレコード)でブートローダーとディスクのパーティション情報を調べます。

MBRは512バイトのコードで、ハードドライブの最初のセクターにあります。通常はハードドライブに応じて/dev/sda または/dev/hda です。建築。ただし、MBRはLinuxのライブUSBまたはDVDインストールに配置できる場合があることに注意してください。

Linuxのブートローダーには、LILO、GRUB、GRUB2の3つの主要なタイプがあります。 GRUB2ブートローダーは、最新のLinuxディストリビューションの最新のプライマリブートローダーであり、時間の経過とともに時代遅れになった他の2つを除外するという私たちの決定を通知します。

GRUB2はGRandUnified Bootloaderバージョン2の略です。BIOSがgrub2ブートローダーを見つけると、それを実行してメインメモリ(RAM)にロードします。

grub2メニューでは、いくつかのことができます。使用するLinuxカーネルのバージョンを選択できます。システムを数回アップグレードしている場合は、異なるカーネルバージョンが表示される場合があります。さらに、キーボードのキーの組み合わせを押すことにより、いくつかのカーネルパラメータを編集する機能を提供します。

また、複数のOSがインストールされているデュアルブートセットアップでは、grubメニューを使用して、起動するOSを選択できます。 grub2構成ファイルは/boot/grub2/grub2.cfgファイルです。 GRUBの主な目的は、Linuxカーネルをメインメモリにロードすることです。

3.カーネルの初期化

カーネルは、あらゆるLinuxシステムのコアです。 PCのハードウェアを基盤となるプロセスとインターフェースします。カーネルは、Linuxシステム上のすべてのプロセスを制御します。選択したLinuxカーネルがブートローダーによってロードされると、タスクを実行する前に、圧縮バージョンから自己解凍する必要があります。自己解凍時に、選択されたカーネルはルートファイルシステムをマウントし、一般にinitと呼ばれる/ sbin/initプログラムを初期化します。

Initは常に最初に実行されるプログラムであり、プロセスIDまたはPID 1が割り当てられます。これは、さまざまなデーモンを生成し、/ etc/fstabファイルで指定されているすべてのパーティションをマウントするinitプロセスです。

次に、カーネルは、実際のルートファイルシステムがマウントされるまで、一時的なルートファイルシステムである初期RAMディスク(initrd)をマウントします。すべてのカーネルは、初期RAMディスクイメージとともに/boot ディレクトリにあります。

4.Systemdの起動

カーネルは最終的にSystemdをロードします。これは、古いSysVinitの置き換えです。 SystemdはすべてのLinuxプロセスの母であり、とりわけファイルシステムのマウント、サービスの開始と停止を管理します。

Systemdは、/ etc/systemd/system/default.targetファイルを使用して、Linuxシステムを起動する必要がある状態またはターゲットを決定します。

  • For a desktop workstation (with a GUI) the default target value is 5 which is the equivalent of run level 5 for the old SystemV init.
  • For a server, the default target is multi-user.target which corresponds to run level 3 in SysV init.

systemdターゲットの内訳は次のとおりです。

  • poweroff.target (runlevel 0): Poweroff or Shutdown the system.
  • rescue.target (runlevel 1): launches a rescue shell session.
  • multi-user.target (runlevel 2,3,4): Configures the system to a non-graphical (console) multi-user system.
  • graphical.target (runlevel 5): Set the system to use a graphical multi-user interface with network services.
  • reboot.target (runlevel 6): reboots the system.

システム上の現在のターゲットを確認するには、次のコマンドを実行します。

$ systemctl get-default

ターミナルで次のコマンドを実行すると、あるターゲットから別のターゲットに切り替えることができます。

$ init runlevel-value

たとえば、init 3は、システムを非グラフィック状態に構成します。

init 6コマンドはシステムをリブートし、init0はシステムの電源をオフにします。これら2つのターゲットに切り替える場合は、必ずsudoコマンドを呼び出してください。

systemdがすべてのデーモンをロードし、ターゲットまたは実行レベルの値を設定すると、起動プロセスが終了します。この時点で、Linuxシステムにアクセスするためのユーザー名とパスワードの入力を求められます。