記事のディレクトリ
Linuxオペレーティングシステムの起動プロセス
1.1。役職
- サーバーの電源がオンになると、電源投入時セルフテストが実行され、CPU、メモリ、グラフィックカード、キーボード、その他のデバイスなどのハードウェアデバイスに障害がないかどうかが検出されます。障害がない場合、システムは次のように転送されます。通常のマシンハードドライブであるプリセットブートシーケンスに。
- 概要:ハードディスクやオプティカルドライブなど、システムを起動できる最初のデバイスが検出されました
2.2。MBRブート
- ローカルハードディスクからシステムを起動する場合は、最初に、ハードディスクの最初のセクターのMBR(マスターブートレコード)設定に従って、またはブートに従って直接、オペレーティングシステムのブートファイルを含むパーティションにシステム制御権を転送します。 MBRレコード内この情報は、ブートメニュー(GRUBなど)を呼び出します。
- MBRのサイズは512バイトで、起動前の情報、パーティションテーブル、その他の情報を格納します。
- 概要:MBRセクターに配置されたブートGRUBブートプログラムを実行します
3.3。GRUBメニュー
- Linuxオペレーティングシステムの場合、GRUB(Unified Boot Loader)は最も広く使用されているマルチシステムブートローダープログラムです。システム制御がGRUBに渡されると、ユーザーが選択できるブートメニューが表示され、選択したオプション(またはデフォルト値)に従ってLinuxカーネルファイルがロードされ、システム制御がに転送されます。カーネル。
- CentOS7はGRUB2ブートローダーを使用します。
- GRUBは、MBRプログラムの最初の446バイトです。
- 概要: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プロセスの初期化
- カーネルがロードされた後、最初に実行されるプログラムは「/ sbin / init」です(実行中のプログラムはプロセスと呼ばれます)。initプロセスはシステム全体の初期化を担当し、最後にユーザーがログインするのを待ちます。 。
- 概要:ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します
システム初期化プロセス
初期化プロセス
- Linuxカーネルで/ sbin / initプログラムをロードして実行します
- initプロセスは、システムの最初のプロセスであり、すべてのプロセスの親プロセスです。
- initプロセスのPID(プロセスID)番号は常に1です。
Systemd
- Systemdは、Linuxオペレーティングシステムの一種のinitソフトウェアです。
- CentOS7は、新しいSystemd起動方法を使用して、従来のSysVinitを置き換えます
- CentOS7で実行される最初のinitプロセスは/ lib / systemd / systemdです
従来のsysvinitとsystemdの比較
- 従来のsysVinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動が遅くなります。
- systemdは、より多くのサービスプロセスを並行して開始でき、オンデマンドでサービスを開始できるため、開始されるプロセスが少なくなり、システムの起動速度が向上します。
Systemdユニットタイプ
ユニット型 | 拡張子名 | 説明 |
---|---|---|
サービス | 。サービス | システムサービスについて説明する |
ソケット | 。ソケット | プロセス間通信用のソケット(IPポート)を記述します |
端末 | 。端末 | カーネルによって認識されるデバイスファイルを記述します |
マウント | 。マウント | ファイルシステムのマウントポイントを説明する |
自動マウント | .automount | ファイルシステムの自動マウントポイントについて説明する |
スワップ | 。スワップ | メモリスワップデバイスまたはスワップファイルについて説明する |
道 | 。道 | ファイルシステム内のファイルまたはディレクトリを記述します |
タイマー | 。タイマー | タイマーについて説明します(cronのようなスケジューリングタスクを実装するために使用されます) |
スナップショット | .snapshot | systemdの状態を保存するために使用されます |
範囲 | 。範囲 | systemdのバスインターフェースを使用して、プログラムで外部プロセスを作成します |
スライス | 。スライス | 階層的組織を通じてCgroupに存在するマネジメントシステムプロセスのグループを説明する |
タージ | 。目標 | systemdユニットのセットを説明する |
実行レベルに対応する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 | 再起動します。このレベルを使用すると、ホストがシャットダウンされ、通常どおり再起動されます。 |
起動時の障害のトラブルシューティング
MBRセクターの障害を修復する
問題の原因:
- ウイルス、トロイの木馬などによる被害。
- 誤ったパーティション操作、ディスクの読み取りと書き込みの誤操作
トラブル現象:
- ブートプログラムが見つかりません。起動が中断されました
- オペレーティングシステムを読み込めません。起動後に黒い画面が表示されます
ソリューション:
- バックアップファイルは事前に作成する必要があります
- インストールCDを使用して緊急モードで起動します
- バックアップファイルから復元
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 环境,系统将会自动重启
GRUBブートの失敗
問題の原因
- MBRのGRUBブートプログラムが破損しています
- grub。cfgファイルが欠落しており、ブート構成が正しくありません(centos7ファイルの場所は/boot/grub2/grub。cfgです)
故障現象
- システムの起動が停止し、「grub>」プロンプトが表示されます
ソリューション
- 手動でブートコマンドを入力してみてください
- 緊急モードに入り、バックアップから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 #镜像系统文件
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
-
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:インターフェイスを緊急モードで起動し、GRUBメニュー構成ファイルを再構築します
-
grub.cfgファイルを削除して、障害をシミュレートします
rm -rf /boot/grub2/grub.cfg
-
緊急モードに入り、システムイメージをロードして、システムルート環境に切り替えます
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
rootユーザーのパスワードを忘れた
問題の原因
- rootユーザーのパスワードを忘れない
- root権限を必要とする管理操作を実行できません
- 他に利用可能なアカウントがない場合、システムにログインすることはできません。
解決策 - 緊急モードに入り、パスワードをリセットします
rootユーザーのパスワードをリセットします
sh-4.2# chroot /mnt/sysimage #进入急救模式,加载系统镜像,切换到系统根环境
bash-4.1# passwd root #重设 root 用户密码
システムサービス制御
システムサービス制御
systemctl 控制类型 服务名称
コントロールタイプ
start:启动
stop:停止
restart:重新启动
reload:重新加载
status:查看服务状态
Linuxシステムの実行レベル
実行レベルの表示
- ランレベルコマンド
- systemctlツール
一時的に実行レベルを切り替える
- initコマンド
- systemctlツール
実行レベルに対応するコマンド
init 0 systemctl isolate poweroff.target systemctl poweroff shutdown -h now
init 1 systemctl isolate rescue.target
init 3 systemctl isolate multi-user.target
init 5 systemctl isolate graphical.target
init 6 systemctl isolate reboot.target systemctl reboot shutdown -r now
永続的な実行レベルを設定する
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target #设置永久运行级别
或
systemctl set-default multi-user.target #设置永久运行级别
systemctl get-default #查看系统默认的运行级别
スタートアッププロセスを最適化する
ntsysvツール
- インタラクティブで視覚的なウィンドウを提供する
- キャラクター端末で実行可能
- 複数のサービスを一元管理するのに便利
- 起動後にサービスが自動的に開始されるかどうかを制御するために使用されます
systemctツール
- インタラクティブなビジュアルウィンドウは提供されていません
- 単一のサービスをより効率的に管理する
システムサービスの開始と制御
ntsysvシステムサービス管理ツール
ntsysv
ntsysv --level 级别列表
- スペースバーを押して、サービスオプションをマークします
- ↑、↓を押してサービスオプションを切り替えます
- Tabキーを押してカーソルを切り替えます
システムサービスの開始と制御
-
システムサービスの起動ステータスを表示する
systemctl is-enabled 服务名称
-
サービス名は、システムサービスの起動ステータスを設定します
systemctl enable 服务名称 #开启开机自启动 systemctl disable 服务名称 #关闭开机自启动