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

推薦する

時刻を保存するために適切な MySQL の datetime 型を選択する方法

データベースを構築してプログラムを書くとき、日付と時刻の使用は避けられません。データベースには、ti...

MySql テーブル、データベース、シャーディング、パーティショニングの知識ポイントの紹介

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

TypeScript の Enum が問題となる理由

目次どうしたの?いつ使うか列挙の数を制御するビット値コントロールインデックス非数値列挙結論はType...

HTMLフレームワーク_Powernode Javaアカデミー

1. フレームワークブラウザのドキュメント ウィンドウには 1 つの Web ページ ファイルしか表...

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...

MySQL の分離レベルの包括的な分析

データベースが同じデータ バッチを同時に追加、削除、および変更すると、ダーティ書き込み、ダーティ読み...

MySQL InnoDB テーブルスペース暗号化の例の詳細な説明

序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...

VUE ユニアプリの基本コンポーネントの簡単な紹介

1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...

CSS に基づいて MaterialUI ボタン​​クリックアニメーションを実装し、それを React コンポーネントにカプセル化します。

序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

MySQL メタデータで Hive テーブル作成ステートメントのコメント スクリプトを生成する方法

序文この記事は主にMySQLメタデータ生成Hiveテーブル作成ステートメントコメントスクリプトに関す...

JavaScript エラー処理 try..catch...finally + は throw+TypeError+RangeError をカバーします

目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...