Linuxでのブートプロセスとサービス制御およびトラブルシューティングのデモンストレーション(超詳細図)

1.CentOSブートプロセス管理

システムの起動は、オペレーティングシステムの操作の始まりです。ユーザーがシステムに正常にログインする前に、Linuxの起動プロセスは一連の初期化タスクを完了し、ユーザーがログに記録する準備をするために必要なプログラムとコマンド端末をロードします。に。

1.1起動プロセス

1.1.1ブートプロセスの概要

Linuxオペレーティングシステムのブートプロセスには、通常、電源投入時のセルフチェック、MBRブート、GRUBメニュー、Linuxカーネルのロード、および初期化プロセスの初期化の段階が含まれます。
1)
サーバーの電源がオンになった後、CPU、メモリ、グラフィックカード、キーボード、およびその他のデバイスは、マザーボードBIOS(基本入力/出力システム)の設定に従って最初にテストされます。テストが成功すると、システムは次のようになります。事前設定された起動シーケンスに従ってシステム制御に転送されます。そうです、ほとんどの場合、ローカルハードディスクに転送されます。
概要:ハードディスクやCD-ROMドライブなど、システムを起動できる最初のデバイスが検出されます
。2)MBR起動
ローカルハードディスクからシステムを起動するときは、最初にMBR(マスターブートレコード)に従ってください。ハードディスクのセクターを設定し、システム制御権をオペレーティングシステムのブートファイルを含むパーティションに転送するか、MBRレコードのブート情報に従ってブートメニュー(GRUBなど)を直接呼び出します。
概要:MBRセクターに配置されたブートGRUBブートプログラムを実行します
。3)GRUBメニュー
Linuxオペレーティングシステムの場合、GRUB(Unified Boot Loader)は最も広く使用されているマルチシステムブートプログラムです。システム制御がGRUBに渡された後、ユーザーが選択できるブートメニューが表示され、選択したオプション(またはデフォルト値)に従ってLinuxカーネルファイルがロードされ、システム制御がに転送されます。カーネル。
CentOS7はGRUB2ブートローダーを使用します。
概要:GRUBブートプログラムはGRUB構成ファイル/boot/grub2/grub.cfgを読み取り、カーネルとミラーファイルシステムの設定とパスの場所を取得します。4。Linuxカーネルを
ロードします。
Linuxカーネルは、さまざまなハードウェアリソースとシステムプログラムの間で事前にコンパイルされた特別なバイナリファイルであり、リソースの割り当てとスケジューリングを担当します。カーネルがシステムの制御を引き継いだ後、Linuxオペレーティングシステム全体の実行プロセスを完全に制御します。
CentOSの7のシステムでは、デフォルトのカーネルファイルは、「/boot/vmlinuz-3.10.0-514.e17.x86_64」に位置しています。
概要:メモリにカーネルとミラーファイルシステムをロードします
。5.初期化中のinitプロセス
にオーダーさらにシステムブートプロセスを完了すると、Linuxカーネルは最初にシステム内の「/ sbin / init」プログラムをメモリにロードして実行します(実行中のプログラムはプロセスと呼ばれます)。initプロセスはシステム全体の初期化を完了します。 、そして最後にユーザーがログインするのを待ちます。
概要:ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します

1.1.2システム初期化プロセスのinitとSystemd

プロセス
初期化Linuxシステムのプロセス(実行中のプログラム)には番号が付けられ、各プロセスのIDにはPIDが付けられています。Linuxシステムを起動するプロセスでは、「/ sbin / init」がカーネルによってロードされる最初のプログラムであるため、initプロセスはシステムの最初のプロセスであり、対応するPID番号は常に1です
。initプロセスが最初です。システム内のプロセス。これはすべてのプロセスの親プロセスであり、ユーザーに一緒にサービスを提供します。
Systemd
Systemdは、Linuxオペレーティングシステムの一種のinitソフトウェアです。

CentOS7は、新しいSystemd起動方法を使用して、従来のSysVinitを置き換えます

CentOS7で実行される最初のinitプロセスは/ lib / systemd / systemdです

従来のSysVinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動が遅くなります。

systemdは、より多くのサービスプロセスを並行して開始でき、オンデマンドでサービスを開始する機能を備えているため、開始されるプロセスが少なくなり、システムの起動速度が向上します。
initプロセスは、システム内の最初のプロセスであり、全てのプロセスの親プロセスである
X
システムDユニットタイプ

ユニット型 拡張子名 説明
サービス 。サービス システムサービスについて説明する
ソケット 。ソケット プロセス間通信用のソケットについて説明する
端末 。端末 カーネルによって認識されるデバイスファイルを記述します
マウント 。マウント ファイルシステムのマウントポイントを説明する
自動マウント .automount ファイルシステムの自動マウントポイントについて説明する
スワップ 。スワップ メモリスワップデバイスまたはファイルについて説明する
。道 ファイルシステム内のファイルまたはディレクトリを記述します
タイマー 。タイマー タイマーについて説明する
目標 。目標 systemdユニットのセットを説明する

実行レベルに対応するsystemdターゲット

ランレベル Systemdのターゲット 説明
0 目標 シャットダウン状態、このレベルを使用するとホストがシャットダウンされます
1 レスキュー。ターゲット シングルユーザーモードでは、パスワードの確認なしでシステムにログインできます。主にシステムのメンテナンスに使用されます
2 multi-user.target ユーザー定義/ドメイン固有の実行レベル。デフォルトでは3になりますが、インターネットに接続できません。
3 multi-user.target 文字インターフェースを備えた完全なマルチユーザーモード、ほとんどのサーバーホストはこのレベルで実行されます
4 multi-user.target ユーザー定義/ドメイン固有の実行レベル。デフォルトは3に相当します
5 Graphical.target グラフィカルインターフェイスのマルチユーザーモードは、グラフィカルデスクトップオペレーティング環境を提供します
6 restart.target 再起動します。このレベルを使用すると、ホストが再起動します

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

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セクターデータを復元します

先加载好光盘镜像,重启操作系统,
当出现安装向导界面时,选择“Troubleshooting”选项,
再选择“Rescue a CentOS Linux system”选项,进入急救模式
选择“1”选择 Continue并按 Enter 键继续
再次按 Enter 键后将进入带“sh-4.2#”提示符的 Bash Shell 环境
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 环境,系统将会自动重启

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
backupdirパスがmbr.bakファイルにすでに存在することを確認できます。終了後
ここに画像の説明を挿入
、通常どおりログインできます。
ここに画像の説明を挿入

4.GRUBブートの失敗を修復します

故障の原因

  • MBRのGRUBブートプログラムが破損しています

  • grub.confファイルが見つからない、ブート構成エラー
    症状

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

  • 手動でブートコマンドを入力してみてください

  • 緊急モードに入り、バックアップからgrub.confを書き換えまたは復元します

  • grubプログラムをMBRセクターの障害回復に再構築する

/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:緊急モードに入り、GRUBブートプログラムを復元します

  • MBRは最初のハードディスク(/ dev / sda)の最初の物理セクターにあり、合計512バイト、最初の446バイトはマスターブートレコードであり、パーティションテーブルはMBRの477〜510バイトに格納されます。セクターMediumなので、最初の446バイトがここにバックアップされ、前のパーティションテーブルが保持されます。
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
  • MBR内の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

操作コマンドは、MBRを修復するための上記と同じです。512バイトを446バイトに変更するだけで、方法3は示されなくなり
ます。ブートインターフェイスが緊急モードになり、GRUBメニュー構成ファイルが再構築されます。

  • この方法は通常、/ boot / grub2 / grub.cfgファイルが誤って削除または失われたり、ブート構成が正しくない場合に対処します。
    1)失敗実験をシミュレートするには、最初に/boot/grub2/grub.cfgファイルを削除します
rm -rf /boot/grub2/grub.cfg

ここに画像の説明を挿入

48.png)
grubが表示されます>正常に起動できません
ここに画像の説明を挿入

2)緊急モードに入り、CDイメージをロードし、システムルート環境に
切り替え、緊急モードに入り、インターフェイスをロードするときにESCキーを押して、緊急モードに入ります。
ここに画像の説明を挿入

ここに画像の説明を挿入
プログレスバーが速すぎて読み取れない場合や、遅すぎてescボタンをクリックできない場合は、次の方法を使用できます
最初にシャットダウンし
ここに画像の説明を挿入
、電源を入れてファームウェアを入力します
ここに画像の説明を挿入
。矢印キーをBoot±キーに移動します。 CD-ROMドライブを最初の行に移動
ここに画像の説明を挿入
します。F10を押して保存し
ここに画像の説明を挿入
、緊急モードに入ります。
ここに画像の説明を挿入

sh-4.2# chroot /mnt/sysimage

3)GRUBブートプログラムを最初のハードディスク(/ dev / sda)のMBRセクターに再インストールします。

bash-4.2# grub2-install /dev/sda

4)GRUBメニューの構成ファイルを再構築します

bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg

5)chroot環境を終了し、再起動します
ここに画像の説明を挿入

bash-4.2# exit
sh-4.2# reboot

正常に起動できます
ここに画像の説明を挿入

5.rootユーザーのパスワードを忘れる

1)障害の原因:
rootユーザーのパスワードを忘れた
。2)障害の現象
。root権限を必要とする管理操作を実行できない。
他に利用可能なアカウントがない場合、システムは実行されない。ログインできます
。3)解決策:
緊急モードに入り、パスワードをリセットします
。4)rootユーザーのパスワードを忘れて
緊急モード入り、システムイメージをロードし、システムルート環境に切り替えます。

sh-4.2# chroot /mnt/sysimage     //进入急救模式,加载系统镜像,切换到系统根环境
bash-4.1# passwd root      //重设 root 用户密码
**按照步骤重设即可**

緊急モードに入る手順は↑と同じであり、デモンストレーションは行われません。

2.システムサービスの制御と起動プロセスの最適化

1.コマンドフォーマット

systemctl 控制类型 服务名称

2.一般的な制御タイプ:

  • 開始:開始
  • 停止:停止
  • 再起動:再起動
  • リロード:リロード
  • ステータス:サービスステータスの表示

3.ランレベル

  1. 実行レベルの表示
  • runlevelコマンド(切り替え前の実行レベルと現在の実行レベルを表示します。Nは前に切り替えがないことを意味します)
  • systemctlツール
  • systemctl get-default(システムのデフォルトの実行レベルを表示します)
  1. 一時的/永続的なスイッチの実行レベル
    一時的なスイッチ
  • initコマンド
  • systemctlツールの
    永続的なスイッチ

2つのコマンド:

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target      
或
systemctl set-default multi-user.target    

systemctl get-default    查看系统默认的运行级别

4.起動プロセスを最適化します

ntsysvツール

  • インタラクティブで視覚的なウィンドウを提供する
  • キャラクター端末で実行可能
  • 複数のサービスを一元管理するのに便利
  • 起動後にサービスが自動的に開始するかどうかを制御するために使用されます
    ■systemctツール
  • インタラクティブなビジュアルウィンドウは提供されていません
  • 単一のサービスをより効率的に管理する

5.システムサービスの開始と制御

■ntsysvシステムサービス管理ツール

ntsysv
ntsysv --level 级别列表
  • スペースバーを押して、サービスオプションをマークします
  • ↑、↓を押してサービスオプションを切り替えます
  • Tabキーを押してカーソルを切り替えます
    ここに画像の説明を挿入

6.システムサービスの開始と制御

(1)システムサービスの起動状態を表示します
systemctl is-enabled service name
2、
servicenameシステムの起動状態を設定しますsystemctlenable service name // enable boot auto-start
systemctl disable service name // disable boot auto-開始

7.ホスト名を恒久的に変更し、ホスト名のステータスを表示します

hostnamectl set-hostname newname          永久修改主机名
hostnamectl status                        查看主机名的状态

8.システム言語を中国語に設定します

localetcl set-locale LANG=zh_CN.utf8      设置系统语言为中文
localectl [status]                        查看当前系统使用的语言

9.システムの起動時間を表示します

systemd-analyze

おすすめ

転載: blog.csdn.net/zhangyuebk/article/details/113730617