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 の役割といくつかの簡単な使用シナリオ

推薦する

JavaScript のクロージャの詳細な説明

導入クロージャは JavaScript の非常に強力な機能です。いわゆるクロージャは関数内の関数です...

IE5.0以降のHTCコンポーネントの定義の概要

Microsoft IE 5.0 がリリースされる前は、Web プログラミングにおける最大の課題は、...

React の 3 つの主要属性における Ref の使用に関する詳細な説明

目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...

JS 1次元配列を3次元配列に変換する例

今日、CSDN の Q&A セクションで友人が質問をしているのを見ました。彼は 1 次元配列...

base target="" はリンクのターゲットオープンフレームを制御します

<base target=_blank> は、基本リンクのターゲット フレームを新しいペ...

MySQL における KEY、PRIMARY KEY、UNIQUE KEY、INDEX の違い

タイトルで提起された問題は、段階的に分解して解決することができます。 MySQL では KEY と ...

NginxはURLのパスに応じてアップストリームに動的に転送します

Nginx では、URL のパス パラメータに基づいて、到達不可能なアップストリームに動的に転送する...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

HTML でフォーム コントロールを無効にする 2 つの方法: readonly と disabled

Web ページを作成する過程では、フォームがよく使用されます。しかし、フォーム上のコントロールを変更...

テキストスクロール後の自動停止効果の例

効果は非常にシンプルで、次のコードを自分のページにコピーして実行するだけです。コードをコピーコードは...

Linux で推奨される 9 つの優れたコード比較ツールの概要

コードを書くとき、2 つのファイル間の違い、または同じファイルの異なるバージョン間の違いを知る必要が...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...

3Dカルーセル効果を実現するjs

この記事では、3Dカルーセル効果をjsで実装するための具体的なコードを参考までに共有します。具体的な...

Ubuntuサーバーの一般的なコマンドの概要

以下のコマンドのほとんどは、コンソール/ターミナル/シェルで入力する必要があります。 'su...

Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。

目次1. 準備2. グローバルコンポーネント quill-editor を定義する1. テンプレート...