起動プロセスとサービス制御
記事のディレクトリ
1.Linuxオペレーティングシステムの起動プロセス
起動プロセスのフローチャート
1.1。役職
サーバーホストの電源を入れた後、CPU、メモリ、グラフィックカード、キーボード、およびその他のデバイスは、マザーボードBIOSの設定に従って最初にテストされます。テストが成功すると、システム制御は事前設定された起動に従って転送されます。シーケンス、およびほとんどの時間はローカルハードディスクに転送されます。
概要:ハードディスクやオプティカルドライブなど、システムを起動できる最初のデバイスが検出されました
2.2。MBRブート
ローカルハードディスクからシステムを起動する場合は、最初に、ハードディスクの最初のセクターのMBR(マスターブートレコード)設定に従って、またはブートに従って直接、オペレーティングシステムのブートファイルを含むパーティションにシステム制御権を転送します。 MBRレコード内この情報は、ブートメニュー(GRUBなど)を呼び出します。
概要:MBRセクターに配置されたブートGRUBブートプログラムを実行します
3.3。GRUBメニュー
Linuxオペレーティングシステムの場合、GRUB(Unified Boot Loader)は最も広く使用されているマルチシステムブートローダープログラムです。システム制御がGRUBに渡された後、ユーザーが選択できるブートメニューが表示され、選択したオプション(またはデフォルト値)に従ってLinuxカーネルファイルがロードされ、システム制御がに転送されます。カーネル。
CentOS7はGRUB2ブートローダーを使用します。
概要:GRUBブートプログラムはGRUB構成ファイル/boot/grub2/grub.cfgを読み取り、カーネルとミラーファイルシステムの設定とパスの場所を取得します
4.4。Linuxカーネルをロードします
Linuxカーネルは、さまざまなハードウェアリソースとシステムプログラムの間で事前にコンパイルされた特別なバイナリファイルであり、リソースの割り当てとスケジューリングを担当します。カーネルがシステムの制御を引き継いだ後、Linuxオペレーティングシステム全体の実行プロセスを完全に制御します。
CentOS 7システムでは、デフォルトのカーネルファイルは「/boot/vmlinuz-3.10.0-514.el7.x86_64」にあります。
概要:カーネルとミラーファイルシステムをメモリにロードします
5.5。initプロセスの初期化
さらなるシステムブートプロセスを完了するために、Linuxカーネルは最初にシステム内の「/ sbin / init」プログラムを実行するメモリにロードし(実行中のプログラムはプロセスと呼ばれます)、initプロセスは初期化を完了する責任がありますシステム全体の、そして最後にユーザーがログインを続行するのを待ちます。
概要:ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します
次に、システムの初期化プロセス
1.initプロセス
- Linuxカーネルで/ sbin / initプログラムをロードして実行します
- initプロセスは、システムの最初のプロセスです
- initプロセスのPID(プロセスID)番号は常に1です。
2.Systemd
- Systemdは、Linuxオペレーティングシステムの一種のinitソフトウェアです。
- CentOS7は、従来のSysVinitに代わる、新しいSystemd起動方法を使用します
- CentOSで実行される最初のinitプロセスは/ lib / systemd / systemdです
従来のSysVinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動速度が遅くなります。Systemdは、
より多くのサービスプロセスを並行して開始でき、オンデマンドの起動サービスを提供できるため、より少ないプロセスを実行できます。起動し、システムの起動速度を向上させました。
3.systemdユニットタイプ
ユニット型 | 拡張子名 | 説明 |
---|---|---|
サービス | 。サービス | システムサービスについて説明する |
ソケット | 。ソケット | プロセス間通信用のソケットについて説明する |
端末 | 。端末 | カーネルによって認識されるデバイスファイルを記述します |
マウント | 。マウント | ファイルシステムのマウントポイントを説明する |
自動マウント | .automount | ファイルシステムの自動マウントポイントについて説明する |
スワップ | 。スワップ | メモリスワップデバイスまたはファイルについて説明する |
道 | 。道 | ファイルシステム内のファイルまたはディレクトリを記述します |
タイマー | 。タイマー | タイマーについて説明する |
目標 | 。目標 | systemdユニットのセットを説明する |
スナップショット | .snapshot | systemdの状態を保存するために使用されます |
範囲 | 。範囲 | systemdのバスインターフェースを使用して、プログラムで外部プロセスを作成します |
スライス | 。スライス | 階層的組織を通じてCgroupに存在するマネジメントシステムプロセスのグループを説明する |
4.実行レベルに対応するsystemdターゲット
初期実行レベル | systemdのターゲット | 説明 |
---|---|---|
0 | 目標 | シャットダウン状態。このレベルを使用すると、ホストがシャットダウンされます。 |
1 | レスキュー。ターゲット | シングルユーザーモードでは、パスワードの確認なしでシステムにログインできます。主にシステムのメンテナンスに使用されます |
2 | multi-user.target | ユーザー定義/ドメイン固有の実行レベル。デフォルトは3に等しいのに対し、ネットワークはありません。 |
3 | multi-user.target | 文字インターフェースを備えたフルユーザーモード、ほとんどのサーバーホストはこのレベルで実行されます |
4 | multi-user.target | ユーザー定義/ドメイン固有の実行レベル。centos6ではデフォルトで使用されません。予約済みです。centos7では3に相当します。 |
5 | Graphical.target | グラフィカルインターフェイスのマルチユーザーモードは、グラフィカルデスクトップオペレーティング環境を提供します |
6 | restart.target | 再起動します。このレベルを使用すると、ホストがシャットダウンされ、通常どおり再起動されます。 |
2と4は一般的に使用されておらず、5は個人に使用されることが多く、0、3、5、および6はサーバーに使用され、より一般的に使用されます。
第三に、起動障害のトラブルシューティング
1.MBRセクターの障害分析
1)故障の原因
- ウイルス、トロイの木馬などによる被害。
- 誤ったパーティション操作、ディスクの読み取りと書き込みの誤操作
2)故障現象
- ブートプログラムが見つかりません。起動が中断されました
- オペレーティングシステムを読み込めません。起動後に黒い画面が表示されます
3)ソリューション
- バックアップファイルは事前に作成する必要があります
- インストールCDを使用して緊急モードで起動します
- バックアップファイルから復元
2.MBRセクターの障害と修復をシミュレートします
- MBRは、最初のハードディスク(/ dev / sda)の最初の物理セクターにあり、合計512バイトです。
1)MBRセクターデータを他のディスク(/ dev / sdb1)にバックアップします
mkdir /backup #创建一个文件夹作为挂载点
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
2)MBRブートセクターの破壊をシミュレートする
dd if=/dev/zero of=/dev/sda bs=512 count=1
3)ブートインターフェイスが緊急モードに入り、バックアップファイルからMBRセクターデータを復元します
最初にCDイメージをロードし、オペレーティングシステムを再起動し
、インストールウィザードのインターフェイスが表示されたら、[トラブルシューティング]オプション
を選択し、[CentOS Linuxシステムのレスキュー]オプションを
選択して緊急モードに入ります。[1]を選択し、[続行]を選択します。
Enterキーを押して、もう一度押し続けます。Enterキーを押すと、「sh-4.2#」プロンプトでBashShell環境に入ります。
sh-4.2# mkdir /backupdir
sh-4.2# mount /dev/sdb1 /backupdir #挂载带有备份文件的分区
sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda #恢复备份数据
sh-4.2# exit #执行exit命令退出临时Shell 环境,系统将会自动重启
①シャットダウン状態の新しいハードディスクを追加する
②電源を入れてパーティションを確認してください
③パーティション管理、パーティション番号、パーティションタイプ
④フォーマットとマウント
⑤/ dev / sda1のMBRマスターブートレコードの内容をバックアップし、/ dev / sdaマスターブートパーティションを破損させるタスクを作成して、再起動してください。
⑥次に、仮想マシン側に移動して操作し、緊急モードに入り、システムのレスキューを選択します
✓1を入力して続行を選択し、Enterをダブルクリックしてシェル環境に入ります。フォローアップ操作は次のとおりです。最終的な修復が完了したら、exitを入力し、Enterを押して通常どおり開始します。
3.GRUBブートの失敗を修復します
/ boot / grub /ディレクトリ内のパッケージは、ブートメニューの背景画像とスタイルに使用されます
/boot/grub2/grub.cfg #GRUB配置文件
1)方法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 #镜像系统文件
grub> boot #引导boot
2)方法2:緊急モードに入り、GRUBブートプログラムを復元します(MBRブートセクターと同様)。
MBRは最初のハードディスク(/ dev / sda)の最初の物理セクターにあり、合計512バイト、最初の446バイトはマスターブートレコードであり、パーティションテーブルはMBRの447〜510バイトに格納されます。のセクター。
mkdir /bak
mount /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# mount /dev/sdb1 /backupdir
sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda
sh-4.2# exit
3)方法3:インターフェイスを緊急モードで起動し、GRUBメニュー構成ファイルを再構築します
rm -rf /boot/grub2/grub.cfg
緊急モードに入り、CDイメージをロードして、システムルート環境に切り替えます。
sh-4.2# chroot /mnt/sysimage
GRUBブートプログラムを最初のハードディスク(/ dev / sda)のMRBセクターに再インストールします
bash-4.2# grub2-install /dev/sda
GRUBメニューの構成ファイルを再構築します
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
chroot環境を終了して再起動します
bash-4.2# exit
sh-4.2# reboot
①まず、ブートプログラムの下にある設定ファイル/boot/grub2/grub.cfgを削除します。
この構成ファイルには、カーネルとミラーファイルシステムの設定とパス設定が含まれています。GRUBブートプログラムは、この構成ファイルを読み取って関連する設定を取得できます。このファイルを削除すると、ブートが失敗します。
②開始方法を変更する
起動モードが変更された後、保存して終了するには、F10を忘れないでください
緊急モードに入る
レスキューシステム
③システムルート環境に切り替え、grubブートプログラムを再インストールし、設定ファイルを再構築します
④元の起動モードF10に戻し、保存して終了します
4、rootユーザーのパスワードを忘れて
1)緊急モードに入り、システムイメージをロードして、システムルート環境に切り替えます。
sh-4.2# chroot /mnt/sysimage
2)rootユーザーのパスワードをリセットします
bash-4.2# passwd root
緊急モードに入り、システムをレスキューした後のフォローアップ操作は次のとおりです(上記の数字キーを使用するにはパスワード入力をお勧めします)