Centos7 の起動プロセスと Systemd での Nginx の起動構成

Centos7 の起動プロセスと Systemd での Nginx の起動構成

Centos7 の起動プロセス:

1.post(電源投入時のセルフテスト) 電源投入時のセルフテスト

1 主な機能は、各周辺ハードウェアデバイスが存在し、正常に動作できるかどうかを検出することです。マザーボード上のROM(主にCMOSで表されます)チップ上に固定されたBIOS(Basic Input/Output System)プログラムがこのセルフテスト機能を実現します。たとえば、BIOSはCPU、メモリ、I/Oデバイスが正常に動作できるかどうかを検出します。パソコンの場合は、ディスプレイも検出することがあります。電源を入れるとすぐに、CPU は ROM チップ上の BIOS プログラムを自動的にロードします。これが実現される仕組みです。検出が完了すると、ハードウェア デバイスが初期化されます。

2. bootsequence (BIOS、ブートデバイスの選択)

1 主な機能は、起動するハードウェアデバイスを選択することです。選択後、このデバイスの MBR にあるブートローダーを読み取ることができます。このステップは次のように実装されます。BIOS のブート順序設定に従って、BIOS は各ブート デバイスを順番にスキャンし、ブート ローダーでスキャンされた最初のデバイスが起動するブート デバイスとして使用されます。

3.ブートローダー(MBR)

このステップには実装するステップが多数あります。以前の BIOS はブート デバイスの MBR 内のブートローダーを読み取って実行し、ブートローダーの機能はユーザーにメニューを提供することです。
ユーザーが起動するシステムまたは異なるカーネル バージョンを選択できるようにし、ユーザーが選択したカーネル バージョンを RAM 内の特定の領域にロードし、RAM 内で解凍して展開し、システム制御をカーネルに転送します。

Grub はブートローダの一種です。ブートローダの保存に MBR の 446 バイトしか使用できないという制限を打破するために、このステップは次のように実装されます。Grub はカーネルをロードする機能を、ステージ 1、ステージ 1.5、ステージ 2 の 3 つのステージに分けて実装します。で:

stage1: MBR の最初の 446 バイトに格納され、stage2 (または /boot) が配置されているパーティションのファイル システムを識別して駆動するために、stage1.5 をロードするために使用されます。

stage1.5: MBR の後のセクターに格納され、stage2 が配置されているパーティションのファイル システム ドライバーをロードします。これにより、stage1 のブートローダーは stage2 が配置されているパーティションのファイル システムを認識できます。

stage2: ディスク パーティション、具体的には /boot/grub ディレクトリに保存され、主にカーネル ファイル (vmlinuz-VERSION-RELEASE) と一時ルート ファイル システム RAM ディスク (initrd-VERSION-RELEASE.img または initramfs-VERSION-RELEASE.img) を読み込むために使用されます。

概要: 起動するデバイスがハードディスクの場合、まずハードウェア プラットフォームのマザーボード BIOS がハードディスクを認識できなければならず、その後 BIOS はハードディスク内のブートローダをロードできます。ブートローダ自体がロードされると、現在のホスト上のハードディスク デバイスを直接認識できます。ただし、ハードディスク デバイスを認識できることは、ハードディスク デバイス内のファイル システムを認識できることを意味しません。ファイル システムはソフトウェアで編成されたファイル構造の追加レイヤーであるため、ファイル システムに接続するには、このファイル システムを認識して理解できる対応するドライバーが必要であり、このドライバーはファイル システム ドライバーと呼ばれます。 Stage1.5 は grub にファイル システム ドライバーを提供するため、stage1 は stage2 とカーネルが配置されているパーティション (/boot) にアクセスできます。
注: kernel と initramfs のファイル パスは両方とも、grub の「ルート」を開始ディレクトリとして使用し、stage2 が配置されているパーティションに保存されます。

GRUB は LVM や高度なソフト RAID などの複雑な論理デバイスを駆動できないため、ステージ 2、カーネル、および RAM ディスク ファイルは通常、基本ディスク パーティションに配置されることに注意してください。複雑なドライバー インターフェイスが提供されない限り、ステージ 2 およびカーネル ファイルが LVM などの複雑な論理デバイスに保存されている場合、それらはステージ 1 によって認識されず、ロードされることもありません。

4. カーネルの初期化

Kerenl がシステムの制御を取得したら、まず自分自身を初期化する必要があります。初期化の主な機能は次のとおりです。

(1)識別可能なすべてのハードウェアデバイスを検出する。

ブートローダーは、後の王朝が前の王朝を倒すのと同じように、システム制御をカーネルに移します。支配者 (カーネル) が権力を握った後、最初に行うことは、領土、人力、財源、軍事力など、前の王朝から何が残っているかを確認することです。

(2)ハードウェアドライバをロードする。つまり、実際のルートファイルシステムが配置されているデバイスのドライバをロードする(ramdiskの助けを借りてロードされることもある)。

これは、支配者(核)が、自分の下にいる人的資源や財政的資源について知った後、自分の目的に利用できる人々を自分の指揮下に置き、自分の命令に従わない人々を殺し始めるようなものです。

(3)ルートファイルシステムを読み取り専用モードでマウントする。

ramdisk などの一時ファイル システム (仮想ルート) が使用されている場合は、この手順の後にルート スイッチが実行されます。それ以外の場合は、ルート スイッチは実行されません。

(4)ユーザー空間で最初のアプリケーションであるsystemdを実行します。

この時点でカーネル空間の起動プロセスは終了し、次のステップはユーザー空間が後続のシステム起動プロセスを完了することです。

5. initはユーザー空間のサービスプロセスを管理する

Systemdはデフォルトのターゲット設定、設定ファイル/etc/systemd/system/default.targetを実行します。
systemdは、システムを初期化するためにsysinit.targetを実行し、オペレーティングシステムを準備するためにbasic.targetを実行します。systemdは、multi-user.targetの下でローカルサービスとサーバーサービスを開始します。systemdは、multi-user.targetの下で/etc/rc.d/rc.localを実行します。
Systemdはgetty.targetとmulti-user.target下のログインサービスを実行します。Systemdはグラフィカルユーザーインターフェイスに必要なサービスを実行します。

起動時にnginxプロセスを起動するためにNginxのsystemd設定ファイルを記述する

vim /lib/systemd/system/nginx.service
 [ユニット]
 説明=nginx サーバー
 後=ネットワーク.ターゲット
 
 [サービス]
 タイプ=フォーク
 実行開始=/usr/sbin/nginx
 
 [インストール]
 WantedBy=マルチユーザー.ターゲット

[root@localhost ~]#systemctl nginx.service を有効にする

要約する

上記は、編集者が紹介したSystemdでのCentos7の起動プロセスとNginxの起動構成です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • systemd を使用して Golang プロジェクトをデプロイする方法
  • CentOS7 systemdにカスタムシステムサービスを追加する方法
  • Centos7 の systemd の詳細な分析
  • systemdにカスタムシステムサービスを追加し、カスタムスタートアップを設定する方法
  • Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明
  • Nginx アクセス ログとエラー ログ パラメータの説明
  • Nginx 502 Bad Gateway エラーの原因と解決策
  • Nginx サーバーが Systemd カスタム サービス プロセス分析を追加

<<:  mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

>>:  Vue における nextTick の役割といくつかの簡単な使用シナリオ

推薦する

Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策

Docker コンテナを適用する場合、多くの場合、ホスト ディレクトリを Docker コンテナにマ...

詳細なアイデアを備えたシンプルな計算機の HTML 実装

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

JavaScript は 3 つの一般的な Web 効果 (オフセット、クライアント、スクロール シリーズ) を実装します。

目次1. 要素オフセットシリーズ2. 要素表示領域クライアントシリーズ3. 要素スクロールシリーズ1...

ハッシュテーブルのJavaScript実装の詳細な説明

目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...

MySQL の中国語ソートの詳細と例

MySQL の漢字ソートの詳細な説明デフォルトでは、MySQL は日付、時刻、および英語の文字列の並...

カタツムリ映画システムのDocker展開の詳細なプロセス分析

環境に関する声明ホストOS: Cetnos7.9 最小インストールdocker バージョン: 20....

CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します

1. CSSスタイルは、テキストが長すぎる場合に省略記号を表示する問題を解決します1. 一般的なスタ...

同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ

テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...

バッチファイルを処理するLinuxの1行コマンドの詳細な説明

序文最良の方法は、あなたが思いつく最も速い方法ではないかもしれません。職場で一時的に使用するスクリプ...

Linux ファイルとユーザー管理の実践

1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...

ReactとReduxの関係を詳しく説明

目次1. reduxとreactの関係2. Reactのマルチコンポーネント共有3. reduxの3...

Reactはtodolistの追加、削除、変更、クエリを実装します

目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...

AngularとIonicのライフサイクルとフック関数を素早く理解するための記事

目次角度成し遂げる呼び出し順序知らせイオニックionic はページのライフサイクルをどのように処理し...