1つは、Linuxオペレーティングシステムの起動プロセスです。
システムの起動は、オペレーティングシステムの操作の始まりです。ユーザーがシステムに正常にログインする前に、Linuxの起動プロセスは一連の初期化タスクを完了し、ユーザーログインの準備に必要なプログラムとコマンド端末をロードします。
1.ブートプロセスの概要
1.1パワーオンセルフテスト
サーバーホストの電源を入れた後、CPU、メモリ、グラフィックカード、キーボードなどのデバイスは、マザーボードBIOS(基本入力出力システム)の設定に従って事前にテストされます。テストが成功すると、システム制御は事前設定された起動シーケンスに従って転送されます。ほとんどの場合、転送されます。ローカルハードドライブへ
ハードディスクや光ドライブなど、システムを起動できる最初のデバイスを検出します
1.2MBRブート
ローカルハードディスクからシステムを起動する場合は、最初に、ハードディスクの最初のセクターのMBR(マスターブートレコード)設定に従って、またはMBRレコードのブートに従って直接、オペレーティングシステムのブートファイルを含むパーティションにシステム制御を転送します。ブートメニューを呼び出すための情報(例:GRUB)
MBRセクターに配置されたブートGRUBブートプログラムを実行します
1.3GRUBメニュー
Linuxオペレーティングシステムの場合、GRUB(Unified Boot Loader)は、最も広く使用されているマルチシステムブートローダープログラムです。 システム制御がGROBに渡されると、ユーザーが選択できるように、選択したオプションに従って(またはデフォルト値を使用して)ブートメニューが表示されます。 )Linuxカーネルファイルをロードしてから、システム制御をカーネルに転送し ます。Centos7はGRUB2ブートローダーを使用します。GRUB ブートプログラムはGRUB構成ファイル/boot/grub2/grub.cfgを読み取り、カーネルとミラーファイルシステムの設定を取得します。
1.4Linuxカーネルをロードする
Linuxカーネルは、さまざまなハードウェアリソースとシステムプログラムの間にある、コンパイル済みの特別なバイナリファイルであり、リソースの割り当てとスケジューリングを担当します。 カーネルがシステムの制御を引き継いだ 後、 Linuxオペレーティングシステム全体の実行プロセスを完全に制御します。
Centos 7システムでは、デフォルトのカーネルファイルは「/boot/vmlinuz-3.10.0-514.e17.x86_64」にあります。
カーネルとミラーファイルシステムをメモリにロードします
1.5初期化プロセスの初期化
さらなるシステムブートプロセスを完了するために、Linuxカーネルは最初にシステム内の「/ sbin / init」プログラムをメモリにロードして実行し(実行中のプログラムはプロセスと呼ばれます)、initプロセスはシステム全体の初期化を完了し、最後にユーザーが続行するのを待ちます。ログインする
ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します
2.initプロセス
Linuxシステムのプロセス(実行中のプログラム)には番号が付けられています。各プロセスの識別番号はPIDと呼ばれます。Linuxを起動するプロセスでは、「/ sbin / init」がカーネルによってロードされる最初のプログラムです。 したがって、初期化プロセスに対応するPID番号は常に「1」です。
initプロセスの実行後、システム内の他のプログラムを実行し続け、新しいプロセスを継続的に生成します。これらのプロセスは、initプロセスの子プロセスと呼ばれます。一方、initプロセスは、これらのプロセスの親プロセスです。 もちろん、これらの子プロセスは、さらに生成することもできます。それぞれのサブプロセスは一度に増殖し続け、最終的には緑豊かなプロセスツリーを形成し、ユーザーにサービスを提供します。
Initは、Linuxシステム全体を維持するすべてのプロセスの「祖先」であるため、initプロセスを簡単に終了することはできません。 異なるシステム動作状態を切り替える必要がある場合は、initプロセスに正しい実行パラメーターを送信できます。これはinit自体によって実行されます。関連する操作
3.Systemd
Systemdは、Linuxオペレーティングシステムの初期化ソフトウェアです。
CentOS7は、新しいSystemd起動方法を使用して、従来のSysVinitを置き換えます
従来のSysVinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動が遅くなります。
Systemdは、より多くのサービスプロセスを並行して開始でき、オンデマンドでサービスを開始する機能を備えているため、開始されるプロセスが少なくなり、システムの起動速度が向上します。
CentOS7で実行される最初の初期化プロセスは/ lib / systemd / systemdです
4.システム化されたユニットタイプ
ユニット型
拡張子名
説明
サービス
。サービス
システムサービスについて説明する
ソケット
。ソケット
プロセス間通信用のソケットについて説明する
端末
。端末
カーネルによって認識されるデバイスファイルを記述します
マウント
。マウント
ファイルシステムのマウントポイントを説明する
自動マウント
.automount
メモリスワップデバイスまたはスワップファイルについて説明する
スワップ
。スワップ
メモリスワップデバイスまたはスワップファイルについて説明する
道
。道
ファイルシステム内のファイルまたはディレクトリを説明する
タイマー
。タイマー
説明-タイマー(cronのようなスケジューリングタスクを実装するために使用されます)
スナップショット
.snapshot
systemdの状態を保存するために使用されます
範囲
。範囲
systemdのバスインターフェイスを使用して、プログラムで外部プロセスを作成します
スライス
。スライス
Cgroupの階層別に編成された管理システムプロセスのグループを説明する
目標
。目標
systemdユニットのセットを説明する
5.実行レベルに対応するSystemdターゲット
実行レベル
Systemdのターゲット
説明
0
目標
シャットダウン状態、このレベルを使用するとホストがシャットダウンされます
1
レスキュー。ターゲット
シングルユーザーモードでは、パスワードの確認なしでシステムにログインできます。主にシステムのメンテナンスに使用されます
2
multi-user.target
ユーザー定義/ドメイン固有の実行レベル。 デフォルトは3です(ネットワークへのアクセスはサポートされていません)
3
multi-user.target
文字インターフェイスを備えた完全なマルチユーザーモード。ほとんどのサーバーホストはこのレベルで実行されます
4
multi-user.target
ユーザー定義/ドメイン固有の実行レベル。 デフォルトは3に相当します
5
Graphical.target
グラフィカルインターフェイスのマルチユーザーモードは、グラフィカルなデスクトップ操作環境を提供します
6
restart.target
再起動します。このレベルを使用すると、ホストが再起動します
2.起動時の障害を排除します
1.MBRセクターの障害を修復します
1.1失敗の原因
ウイルス、トロイの木馬などによる被害。
誤ったパーティション操作、ディスクの読み取りおよび書き込みエラー
1.2故障現象
ブートプログラムが見つかりません。開始が中断されました
オペレーティングシステムを読み込めません
1.3ソリューション
バックアップファイルは事前に作成する必要があります
インストールCDを使用して緊急モードで起動します
バックアップファイルから復元
1.4練習
1.4.1 MBRセクターデータを他のディスクにバックアップする(/ dev / sdb1)
まず、新しいハードドライブを追加します
新しいパーティション
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xbd9ad88f 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-83886079,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079):
将使用默认值 83886079
分区 1 已设置为 Linux 类型,大小设为 40 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=2621376 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10485504, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5119, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mkdir /backup
[root@localhost ~]# mount /dev/sdb1 /backup/
[root@localhost ~]# cd /backup/
[root@localhost backup]# ls
[root@localhost backup]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000197902 秒,2.6 MB/秒
[root@localhost backup]# ls
mbr.bak
1.4.2MBRブートセクター破壊のシミュレーション
[root@localhost backup]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,9.7308e-05 秒,5.3 MB/秒
[root@localhost backup]# init 6
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(CentOS 7-3) at 16:58:38.
Type `help' to learn how to use Xshell prompt.
[D:\~]$
1.4.3ブートインターフェイス
再起動後、システムインターフェイスが入力されていないことがわかりましたが、インストールウィザードが表示されました
ここでは、「トラブルシューティング」オプションを選択して緊急モードに入ります
「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 bs=512 count=1 ##恢复备份数据
sh-4.2# exit ##执行exit命令退出临时Shell环境,系统将会自动重启
OKシステムが再起動を開始し、正常であることが判明した場合は、システムに直接入ることができます
2.GRUBブート障害を修復します
2.1失敗の原因
MBRのGRUBブートプログラムが破損しています
grub.confファイルがありません、ブート構成が正しくありません
2.2故障現象
システムの起動が停止し、「grub>」プロンプトが表示されます
2.3ソリューション
手動でbootコマンドを入力してみてください
緊急モードに入り、バックアップからgrub.confを書き換えまたは復元します
grubプログラムをMBRセクターに再構築します
2.4練習
ブートインターフェイスが緊急モードになり、GRUBメニュー構成ファイルが再構築されます
2.4.1シミュレートされた障害
/boot/grub/目录下的包是用于启动菜单的背景图片及样式
/boot/grub2/grub.cfg ##Grub配置文件
grub.cfgを削除して、障害をシミュレートします
ここでは直接再構築されるため、バックアップする必要はありません。
[root@localhost boot]# cd grub2
[root@localhost grub2]# ls
device.map fonts grub.cfg grubenv i386-pc locale
[root@localhost grub2]# rm -rf grub.cfg
[root@localhost grub2]# ls
device.map fonts grubenv i386-pc locale
再起動を入力して再起動すると、このインターフェイスに入ります
注意してください、この時点でどのようにブートインターフェイスに入るのですか、手の速度は速くなければなりません、再起動をクリックした直後に「ESC」を押して、数回試してください、それは常に成功します
ここではCDを選択します
2.4.2ブートインターフェイス
緊急モードに入り、CenOSシステムを復元します
1を入力し、Enterキーを押します
システムルート環境に切り替えます(今回はTABキーを使用して完了できます)
sh-4.2# chroot /mnt/sysimage
bash-4.2#
GRUBブートプログラムを最初のハードディスク(/ dev / sda)のMRBセクターに再インストールします
bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
bash-4.2# exit
sh-4.2# reboot
OK、システムインターフェイスに入ることができます。もう一度確認して、grub.cfgにもう一度あることを確認しましょう。
[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map fonts grub.cfg grubenv i386-pc locale