Linuxオペレーティングシステムの起動プロセス

Linuxオペレーティングシステムの起動プロセス

 

目次

Linuxオペレーティングシステムの起動プロセス

役職

MBRブート

GRUBメニュー

Linuxカーネルをロードします

initプロセスの初期化

システム初期化プロセス

初期化プロセス

Systemdユニットタイプ

起動時の障害のトラブルシューティング

MBRセクターの障害を修復する

GRUBブートの失敗を修正

rootユーザーのパスワードを忘れた


役職

サーバーホストの電源を入れた後、CPU、メモリ、グラフィックカード、キーボード、およびその他のデバイスは、マザーボードBIOSの設定に従って最初にテストされます。テストが成功すると、システム制御は事前設定された起動に従って転送されます。シーケンス、およびほとんどの時間はローカルハードディスクに転送されます。
概要:ハードディスクやオプティカルドライブなど、システムを起動できる最初のデバイスが検出されました

MBRブート

ローカルハードディスクからシステムを起動する場合は、最初に、ハードディスクの最初のセクターのMBR(マスターブートレコード)設定に従って、またはブートに従って直接、オペレーティングシステムのブートファイルを含むパーティションにシステム制御権を転送します。 MBRレコード内この情報は、ブートメニュー(GRUBなど)を呼び出します。
概要:MBRセクターに配置されたブートGRUBブートプログラムを実行します

GRUBメニュー

Linuxオペレーティングシステムの場合、GRUB(Unified Boot Loader)は最も広く使用されているマルチシステムブートローダープログラムです。システム制御がGRUBに渡された後、ユーザーが選択できるブートメニューが表示され、選択したオプション(またはデフォルト値)に従ってLinuxカーネルファイルがロードされ、システム制御がに転送されます。カーネル。
CentOS7はGRUB2ブートローダーを使用します。
概要:GRUBブートプログラムはGRUB構成ファイル/boot/grub2/grub.cfgを読み取り、カーネルとミラーファイルシステムの設定とパスの場所を取得します

Linuxカーネルをロードします

Linuxカーネルは、さまざまなハードウェアリソースとシステムプログラムの間で事前にコンパイルされた特別なバイナリファイルであり、リソースの割り当てとスケジューリングを担当します。カーネルがシステムの制御を引き継いだ後、Linuxオペレーティングシステム全体の実行プロセスを完全に制御します。
CentOS 7システムでは、デフォルトのカーネルファイルは「/boot/vmlinuz-3.10.0-514.el7.x86_64」にあります。
概要:カーネルとミラーファイルシステムをメモリにロードします

initプロセスの初期化

さらなるシステムブートプロセスを完了するために、Linuxカーネルは最初にシステム内の「/ sbin / init」プログラムを実行するメモリにロードし(実行中のプログラムはプロセスと呼ばれます)、initプロセスは初期化を完了する責任がありますシステム全体の、そして最後にユーザーがログインを続行するのを待ちます。
概要:ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します

従来のsysvinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動が遅くなります
。Systemdは、より多くのサービスプロセスを並行して開始でき、オンデマンドの起動サービスを提供できるため、開始できるプロセスが少なくなります。 、それによってシステムの起動速度が向上します。

システム初期化プロセス

初期化プロセス

/ sbin / initプログラム
、Linuxカーネルによってロードおよび実行されます。initプロセスは、システムの最初のプロセスです。initプロセスの
PID(プロセスタグ)番号は常に1です。

Systemd

Systemdは、Linuxオペレーティングシステムの一種のinitソフトウェアです
。CentOS7は、従来のSysVinitに代わる新しいSystemd起動方法を採用しています。CentOSで
実行される最初のinitプロセスは/ lib / systemd / systemdです。

Systemdユニットタイプ

  1. .services:サービスユニットは、サーバー上のサービスまたはアプリケーションを管理する方法を記述します。これには、サービスを開始または停止する方法、サービスを自動的に開始する必要がある状況、および関連するソフトウェアの依存関係とシーケンス情報が含まれます。
  2. .socket:ソケットユニットファイルは、systemdが基本的なソケットのアクティブ化に使用するネットワークまたはIPCソケットまたはFIFOバッファーを記述します。.servicesファイルは、このユニットで定義されたソケットがアクティブになると開始されます。
  3. .devic:udevまたはsysfsによってsystemdマネージャーのユニットとして指定されたデバイスについて説明します。すべての設定に.deviceファイルがあるわけではありません。場合によっては、デバイスにコマンドを送信し、マウントして、アクセスするために.deviceユニットが必要になることがあります。
  4. .mount:このユニットは、システム上のsystemdによって管理されるマウントポイントを定義します。これらのファイルはマウントパスにちなんで名付けられ、スラッシュはダッシュに変更されます。/ etc / fstabのエントリには、自動的にユニットが作成されます。
  5. .automount:.automountユニットは、自動的にマウントされるマウントポイントで構成されます。これらは、関連するマウントポイントに従って注文する必要があり、マウントの詳細を定義するために一致する.mountユニットが必要です。
  6. .swap:このユニットは、システム内のスワップスペースを記述します。これらのファイルの名前は、デバイスまたはスペースファイルを反映している必要があります。
  7. .target:ターゲットユニットは、状態の開始または変更時に他のユニットに同期ポイントを提供します。また、システムを新しい状態にするために使用することもできます。他のユニットは、ターゲットの操作をバインドするために同等のターゲットを指定します。
  8. .path:このユニットは、パスベースのアクティベーションに使用できるパスを定義します。デフォルトでは、パスが指定された状態に達すると、同じベース名の.serviceユニットが開始されます。これは、inotifyを使用してパスの変更を監視します。
  9. .timer:.timerユニットは、アクティベーションを遅延またはスケジュールするcronジョブと同様に、systemdによって管理されるタイマーを定義します。タイマーが到着すると、マッチングユニットが起動します。
  10. .snapshot:.snapshotユニットは、systemctlsnapshotコマンドによって自動的に作成されます。変更を加えた後、システムの現在の状態を再構築できます。スナップショットはセッション間で存続しません。スナップショットは、一時的な状態をロールバックするために使用されます。
  11. .slice:.sliceユニットはLinuxコントロールグループノードに関連付けられており、リソースを制限したり、関連するプロセスに一致するタイムスライスを割り当てたりすることができます。この名前は、cgroupツリーでの階層的な位置を反映しています。ユニットは、タイプに応じてデフォルトで特定の位置に配置されます。
  12. .scope:スコープユニットは、バスインターフェイスから受信した情報に基づいてsystemdによって自動的に作成されます。これらは、外部で作成されたシステムプロセスの管理セットに使用されます。
  13. .targetは、systemdユニットのセットを記述します

起動時の障害のトラブルシューティング

MBRセクターの障害を修復する

問題の原因

ウイルス、トロイの木馬などによる損傷、誤ったパーティション操作、ディスクの読み取りおよび書き込みエラー

故障現象

起動プログラムが見つからない、起動が中断される、オペレーティングシステムを読み込めない、起動後に黒い画面が表示される

ソリューション

バックアップファイルは事前に準備し、インストールCDを使用して緊急モードで起動してから、バックアップファイルから復元する必要があります。

GRUBブートの失敗を修正

問題の原因

MBRのGRUBブートプログラムが破損しており、grub.confファイルが欠落しており、ブート構成が正しくありません。

故障現象

システムの起動が停止し、「grub>」プロンプトが表示されます

ソリューション

手動でbootコマンドを入力してレスキューモードに入り、バックアップからgrub.confを書き換えまたは復元してから、grubプログラムをMBRセクターに再構築してみてください。

GRUBブートの失敗を修正

/ boot / grub /ディレクトリ内のパッケージは、ブートメニューの背景画像とスタイルに使用されます

/boot/grub2/grub.cfg#GRUB構成ファイル

方法1:ガイドコマンドを手動で入力します(不器用で面倒、お勧めしません)

grub> insmod xfs#指定されたモジュールをカーネルにロードします

grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root = UUID = 8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG = zh_CN.UTF-8#カーネルの名前と場所およびその他の情報

grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img#Mirrorシステムファイル

grub> boot #boot boot

方法2:緊急モードに入り、GRUBブートプログラムを復元します

MBRは最初のハードディスク(/ dev / sda)の最初の物理セクターにあり、合計512バイト、最初の466バイトはマスターブートレコードであり、パーティションテーブルはMBRの477〜510バイトに格納されます。のセクター。

mkdir / look

マウント/ dev / sdb1 / bak

dd if = / dev / sda of = / bak / grub.bak bs = 446 count = 1

#MRBでGRUBブートプログラムの破棄をシミュレートしますが、パーティションテーブルは破棄しません

dd if = / dev / zero of = / dev / sda bs = 446 count = 1

#ブートインターフェイスが緊急モードに入り、バックアップファイルからGRUBブートプログラムを復元します

sh-4.2#mkdir / backupdir

sh-4.2#マウント/ dev / sdb1 / backupdir

sh-4.2#dd if = / backupdir / grub.bak of = / dev / sda

sh-4.2#終了

方法3:緊急モードに入り、GRUBメニュー構成ファイルを再構築します

rm -rf /boot/grub2/grub.cfg

レスキューモード、画像読み込みシステムに入り、システムはルート環境に切り替えられます
sh-4.2#chroot / mnt / sysimage

再GRUBのブートは(は/ dev / sdaに)のMRBセクターの最初のハードディスクにインストールする
のbash-4.2#GRUB2インストール/ devの/ sdaに

リビルドGRUBメニュー設定ファイル
のbash-4.2#GRUB2-mkconfig -o /boot/grub2/grub.cfg

chroot環境を終了し、再起動
のbash-4.2#終了を
SH-4.2#リブート

rootユーザーのパスワードを忘れた

緊急モードに入り、システムイメージをロードし、システムルート環境に切り替えます
sh-4.2#chroot / mnt / sysimage
ルートユーザーパスワードをリセットします
bash-4.2#passwd root

systemctlツール

インタラクティブで視覚的なウィンドウを提供せず、単一のサービスをより効率的に管理します

システムサービスの起動ステータスを表示する

systemctlis-enabledサービス名

システムサービスの起動ステータスをオン/オフに設定します

systemctlはサービス名を有効/無効にします

ホスト名を恒久的に変更する

hostnamectl set-hostname newname

ホスト名のステータスを表示する

hostnamectl status

システム言語を中国語に設定する

localectl set-locale LANG = zh_CN.utf8

現在のシステムで使用されている言語を表示する

localectl [ステータス]

システムの起動時間を表示する

systemd-analyze

 

 

 

 

おすすめ

転載: blog.csdn.net/Alen686/article/details/113931815