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