GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS / RHEL 7 :起動プロセス

ブートの問題をトラブルシューティングするには、Linux のブート プロセスを理解することが重要です。これらは、ブート プロセスの大まかな手順です。これらのファイルのエラーが起動の問題を引き起こす可能性があるため、起動プロセスに関連するファイルに注意する必要があります。

起動中に問題が発生した場合は、起動プロセスのどのフェーズに問題があるかを特定して、問題を解決するための適切な措置を講じることができるようにする必要があります。

systemd の紹介

systemd CentOS/RHEL 7 の新しいシステムおよびサービス マネージャーです。RHEL 6 を含む以前のバージョンの RedHat Linux で使用されていた SysV init スクリプトと下位互換性があります。デフォルトの初期化システムとして Upstart を置き換えます。

次の手順は、RHEL/CentOS 7 で起動手順がどのように行われるかをまとめたものです。

<オール>
  • コンピュータの BIOS が POST を実行します。
  • BIOS はブートローダーの MBR を読み取ります。
  • GRUB 2 ブートローダーが vmlinuz カーネル イメージをロードします。
  • GRUB 2 は initramfs イメージの内容を抽出します。
  • カーネルはドライバ モジュールを initramfs から読み込みます。
  • カーネルがシステムの最初のプロセスである systemd を開始します。
  • systemd プロセスが引き継ぎます。それ:
    • /etc/systemd ディレクトリから構成ファイルを読み取ります
    • /etc/systemd/system/default.target によってリンクされたファイルを読み取ります
    • システム ターゲットによって定義された状態にシステムを移行します
    • /etc/rc.local を実行
  • 1. POST (パワーオンセルフテスト)

    最新の Universal Extended Firmware Interface (UEFI) である可能性があるシステム ファームウェアから ) または従来の基本入出力システム (BIOS) )、電源投入時セルフテスト (POST) が実行され、システムの起動に必要なハードウェアが初期化されます。

    2.ブータブル デバイスの選択 (MBR あり)

    – マスター ブート レコード (MBR) は、BIOS によってメモリに読み込まれるブート ドライブの最初の 512 バイトです。
    – 次の 64 バイトには、ディスクのパーティション テーブルが含まれます。最後の 2 バイトは、エラー検出に使用される「マジック ナンバー」です。

    – MBR は起動可能なデバイスを検出し、GRUB2 ブートローダーをメモリにロードして制御を転送します。

    3.ブートローダー (GRUB2) の読み込み

    – RHEL 7 で使用されるデフォルトのブートローダー プログラムは GRUB 2 です。GRUB は GRand Unified Bootloader の略です。 . GRUB 2 は、レガシー GRUB とも呼ばれる古い GRUB ブートローダーを置き換えます。
    – GRUB 2 構成ファイルは /boot/grub2/grub.cfg にあります (このファイルを直接編集しないでください)。

    – GRUB 2 メニュー構成設定は、grub.cfg の生成時に /etc/default/grub から取得されます。
    – /etc/default/grub ファイルのサンプル:

    # cat /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0"
    GRUB_DISABLE_RECOVERY="true"

    – これらのパラメータのいずれかを変更した場合は、grub2-mkconfig を実行する必要があります /boot/grub2/grub.cfg ファイルを再生成します。

    # grub2-mkconfig –o /boot/grub2/grub.cfg

    – GRUB2 は、/boot ディレクトリで vmlinuz とも呼ばれる圧縮されたカーネル イメージ ファイルを検索します。
    – GRUB2 は vmlinuz カーネル イメージ ファイルをメモリにロードし、initramfs イメージ ファイルの内容を一時的なメモリ ベースのファイル システムに抽出します。 (tmpfs).
    – 初期 RAM ディスク (initrd) は、実際のルート ファイル システムの前にマウントされる初期ルート ファイル システムです。

    initramfs
    – 初期 RAM ファイル システムの役割は、IDE、SCSI、RAID などのブロック デバイス モジュールをプリロードして、これらのモジュールが通常存在するルート ファイル システムにアクセスしてアクセスできるようにすることです。
    – initramfs はカーネルにバインドされ、カーネルはこの initramfs を 2 段階のブート プロセスの一部としてマウントします。
    – dracut ユーティリティは、新しいカーネルがインストールされるたびに initramfs を作成します。
    – lsinitrd コマンドを使用して、dracut によって作成されたイメージの内容を表示します:

    # lsinitrd | less

    4.カーネルのロード

    – カーネルは、プロセス ID 1 (PID 1) で systemd プロセスを開始します。

    – また、initrd イメージから必要なドライバー モジュールをロードします。
    – ブート ローダー (GRUB2) は、ユーザーにブート メニューを表示するか、デフォルトのオペレーティング システムを自動的に起動するように構成できます。
    – Linux をロードすると、カーネルが initramfs と一緒にロードされます。 initramfs には、起動に必要なすべてのハードウェアのカーネル モジュールと、起動の次の段階に進むために必要な初期スクリプトが含まれています。
    – RHEL 7 では、initramfs には完全な運用システムが含まれています (トラブルシューティングの目的で使用されます)。

    5. systemd の起動

    – カーネルは、プロセス ID 1 (PID 1) で systemd プロセスを開始します。

    root          1      0  0 02:10 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

    – systemd は、システムの起動後に開始される最初のプロセスであり、システムのシャットダウン時に実行される最後のプロセスです。
    – 起動の最終段階を制御し、システムを使用できるように準備します。また、サービスを同時にロードすることで起動を高速化します。
    – systemd は、/etc/systemd/system/default.target (たとえば、/usr/lib/systemd/system/multi-user.target) によってリンクされたファイルを読み取ります。デフォルトのシステム ターゲット (実行レベルに相当) を決定します。システム ターゲット ファイルは、systemd が開始するサービスを定義します。
    – systemd を使用すると、サービス (name.service) とターゲット (name.target)、デバイス (name.device) など、システム上のさまざまなタイプのユニットを管理できます。 、ファイル システム マウント ポイント (name.mount)、およびソケット (name.socket)。

    SysV 実行レベルとターゲット ユニットの比較

    実行レベル 対象ユニット 説明
    0 runlevel0.target, poweroff.target シャットダウンして電源を切る
    1 runlevel1.target、rescue.target レスキュー シェルを設定する
    2,3,4 runlevel[234].target, multi-user.target 非グラフィカル マルチユーザー シェルのセットアップ
    5 runlevel5.target、graphical.target グラフィカル マルチユーザー シェルをセットアップする
    6 runlevel6.target、reboot.target システムをシャットダウンして再起動

    systemd は、システム ターゲットによって定義された状態にシステムを移行し、次のようなシステム初期化タスクを実行します。
    1.ホスト名の設定
    2.ネットワークの初期化
    3.構成に基づく SELinux の初期化
    4.ウェルカム バナーの印刷
    5.カーネル ブート引数に基づくシステム ハードウェアの初期化
    6. /proc ファイル システムなどの仮想ファイル システムを含むファイル システムのマウント
    7. /var 内のディレクトリをクリーンアップする
    8.スワッピング開始

    デフォルト/現在のターゲット単位を表示

    次のコマンドを使用して、デフォルトで使用されるターゲット ユニットを表示します:

    # systemctl get-default
    graphical.target

    graphical.target target unit は、システムがグラフィカルなマルチユーザー状態で実行されていることを示します。これは、SysV init システムの実行レベル 5 に似ています。古いコマンド runlevel を使用してこれを確認できます :

    # runlevel
    N 5

    デフォルトのターゲット ユニットは /etc/systemd/system/default.target で表されます ファイル。このファイルは、現在のデフォルトのターゲット ユニットへのシンボリック リンクです。例:

    # ls -lrt /etc/systemd/system/default.target
    lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

    デフォルトのターゲット単位を変更

    次のコマンドを使用して、デフォルトのターゲット ユニットを変更します (たとえば、デフォルトを multi-user.target ユニットに変更するには):

    # systemctl set-default multi-user.target
    Removed symlink /etc/systemd/system/default.target.
    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

    default.target シンボリック リンクが変更され、現在 multi-user.target ユニットを指していることに注意してください:

    # ls -lrt /etc/systemd/system/default.target
    lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

    以下の表は、特定のフェーズが構成されている場所と、問題が発生した場合にトラブルシューティングを行うためにできることをまとめたものです。

    起動フェーズ 構成
    投稿 ハードウェア構成 (F2、ESC、F10 または別のキー)
    起動可能なデバイスを選択 BIOS/UEFI 構成またはハードウェア ブート メニュー
    ブートローダーのロード grub2-install と /etc/defaults/grub への編集
    カーネルのロード GRUB 構成と /etc/dracut.conf の編集
    /sbin/init の開始 initramfs にコンパイル
    initrd.target を処理しています initramfs にコンパイル
    ルート ファイルシステムに切り替える /etc/fstab
    デフォルト ターゲットの実行 /etc/systemd/system/default.target
    CentOS / RHEL 7 :systemd の初心者向けガイド
    CentOS / RHEL 7 :systemd ターゲットの初心者向けガイド (SysV init ラン レベルの置き換え)


    Cent OS
    1. CentOS 7システムにSkypeをインストールする-ステップバイステップのプロセス?

    2. Auditd で Linux OS を起動できない (CentOS/RHEL)

    3. CentOS/RHEL 7 で ACPI を無効にする方法

    1. CentOS 7 /RHEL7のシングルユーザーモード

    2. CentOS/RHEL 7 および 8 の起動時にファイル システムの問題を修復する

    3. CentOS/RHEL 7 および 8 で systemd ブート プロセスをデバッグする方法

    1. RHEL 8 / CentOS8LinuxシステムにRをインストールして構成する方法

    2. RHEL 8 /CentOS8はrootパスワードを回復します

    3. CentOS/RHEL 7 および 8 で systemd ブート プロセスをデバッグする方法