起動プロセスとサービス制御
1.Linuxオペレーティングシステムの起動プロセス
1.起動プロセスの概要
電源投入時セルフテスト(BIOS)→MBRブート→GRUBメニュー→カーネルのロード(カーネル)→プロセスの初期化の初期化
- 電源投入時セルフテスト(BIOS)
サーバーホストの電源を入れた後、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オペレーティングシステム全体の実行プロセスを完全に制御します。
CentOS 7システムでは、デフォルトのカーネルファイルは「/boot/vmlinuz-3.10.0-514.e17.x86_64」にあります。
概要:カーネルとミラーファイルシステムをメモリにロードします。 - initプロセスの初期化
さらなるシステムブートプロセスを完了するために、Linuxカーネルは最初にシステム内の「/ sbin / init」プログラムを実行するメモリにロードし(実行中のプログラムはプロセスと呼ばれます)、initプロセスが責任を負います。システム全体の初期化を完了し、最後にユーザーがログインするのを待ちます。
概要:ハードウェアドライバーをロードすると、カーネルはinitプロセスをメモリにロードして実行します
2.システム初期化プロセス
- initプロセス
は、Linuxカーネル/ sbin / initプログラムによってロードおよび実行され
ます。initプロセスは、システムの最初のプロセスであり、すべてのプロセスの親プロセスです
。initプロセスのPID(プロセスタグ)番号は常に1です。 - Systemd
- Systemdは、Linuxオペレーティングシステムの一種のinitソフトウェアです。
- CentOS7は、新しいSystemd起動方法を使用して、従来のSysVinitを置き換えます
- CentOS7で実行される最初のinitプロセスは/ liblsystemd / systemdです
- 従来のsysVinitは、シェルスクリプトのシリアル実行に依存してサービスを開始するため、効率が低下し、システムの起動が遅くなります。
- systemdは、より多くのサービスプロセスを並行して開始でき、オンデマンドでサービスを開始する機能を備えているため、開始されるプロセスが少なくなり、システムの起動速度が向上します。
- Systemdユニットタイプ
ユニット型 | 拡張子名 | 説明 |
---|---|---|
サービス | 。サービス | システムサービスについて説明する |
ソケット | 。ソケット | 説明-プロセス間通信用のソケット |
端末 | 。端末 | カーネルによって認識されるデバイスファイルを記述します |
マウント | 。マウント | ファイルシステムのマウントポイントを説明する |
自動マウント | .automount | ファイルシステムの自動マウントポイントについて説明する |
スワップ | 。スワップ | メモリスワップデバイスまたはスワップファイルについて説明する |
道 | 。道 | ファイルシステム内のファイルまたはディレクトリを記述します |
タイマー | 。タイマー | タイマーについて説明します(cronのようなスケジューリングタスクを実装するために使用されます) |
スナップショット | .snapshot | systemdの状態を保存するために使用されます |
範囲 | 。範囲 | systemdのバスインターフェースを使用して、プログラムで外部プロセスを作成します |
スライス | 。スライス | Cgroupの階層別に編成されたマネジメントシステムプロセスのグループを説明する |
目標 | 。目標 | 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 | 再起動します。このレベルを使用すると、ホストが再起動します |
2.起動時の障害を排除します
1.MBRセクターの障害を修復します
障害の原因ウイルス、トロイの木馬などによる損傷。
誤ったパーティション操作、ディスクの読み取りおよび書き込みエラー- トラブル現象
起動プログラムが見つから
ない、中断を開始するオペレーティングシステムをロードできない、起動後に黒い画面 - 解決策:
事前にバックアップファイル
を作成
し、インストールCDから起動して緊急モードに入り、バックアップファイルから復元します
2.例:MBRセクターの障害を修復する
MBRは、最初のハードディスク(/ dev / sda)の最初の物理セクターにあり、合計512バイトです。
- 仮想マシンは10Gハードディスクを作成します
- 新しいハードディスクパーティションを作成し、
fdisk-lをフォーマットします-ハードディスクが作成されているかどうかを確認しますfdisk
/ dev / sdb-ハードディスクを作成します
mkfs.xfs / dev / sdb1-format
- MBRセクターデータを他のディスクに
バックアップします(dev / sdb1)mkdir backup-baukupディレクトリを作成します
mount / dev / sdb1 / backup-mount
dd if = / dev / sda of = / backup / mbr.bak bs = 512 count = 1 -バックアップ
- MBRブートセクターの破壊をシミュレートするddif
= / dev / zero of = / dev / sda bs = 512 count = 1——破壊をシミュレートする
- ブートインターフェイスが緊急モードになり、MBRセクターデータがバックアップファイルから復元されます。
最初にCDイメージをロードし、オペレーティングシステムを再起動し
、インストールウィザードインターフェイスが表示されたら、[トラブルシューティング]オプション
を選択してから、[レスキュー]を選択します。緊急モードに入る「centosLinuxシステム」オプション
「1」を選択し、「続行」を選択し、Enterキーを押して続行します。
もう一度Enterキーを押すと、「sh-4.24プロンプト」を使用してBashシェル環境に入ります
。mkdir/ backupdir
mount / dev / sdb1 / backupdir#バックアップファイルを使用してパーティションをマウントします
dd if = / backupdir / mbr.bak of = / dev / sda#Restore backup data
exitメインはexitコマンドを実行して一時シェル環境を終了し、システムは自動的に再起動します
3.例:GRUBブート障害の修復
/ boot / grub /ディレクトリ内のパッケージは、ブートメニュー
/boot/grub2/grub.cfg#GRUB構成ファイルの背景画像とスタイルに使用されます。
- 方法1:手動でブートコマンドを入力します(不器用で面倒、非推奨)
grub> insmod xfs#指定したモジュールをカーネルにロードします
grub> linux16 /vmlinuz-3.10.0-693.e17.x86_64 root = UOIDm8fd74986-aeb6-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#ブートブート
- 方法2:緊急モードに入り、GRUBブートプログラムを復元します
- 仮想マシンで10Gハードディスクを作成する
- 新しいハードディスクパーティションを作成し、
fdisk-lをフォーマットします-ハードディスクが作成されているかどうかを確認しますfdisk
/ dev / sdb-ハードディスクを作成します
mkfs.xfs / dev / sdb1-format
- 新しいディレクトリを作成し、マウントしてバックアップします
mkdir / bak-ディレクトリ
マウントを作成します/ dev / sdb1 / bak-mount
dd if = / dev / sda of = / bak / grub.bak bs = 446 count = 1-backup
- パーティションテーブルを破棄せずに、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メインがexitコマンドを実行して一時シェル環境を終了すると、システムが自動的に再起動します。
- 方法3:インターフェイスを緊急モードで起動し、GRUBメニュー構成ファイルを再構築します
- ファイルを削除して再起動します
rm
- rf /boot/grub2/grub.cfg-delete init6-再起動
- ブートインターフェイスが緊急モードになります(入力方法は上記で説明されています)
chroot / mnt / sysimage-CDイメージをロードし、システムルート環境に
切り替えますgrub2-install / dev / sda-GRUBブートプログラムを最初のハードディスクに再インストールします( / dev / sda)MRBセクター
grub2-mkconfig -o / boot / grub2 / grub.cfg-GRUBメニュー構成ファイルを再構築します
exit-
exitreboot_restart
4.rootユーザーのパスワードを忘れる
- 失敗の原因
rootユーザーのパスワードを忘れた - トラブル現象
root権限が必要な管理操作ができない
他に利用可能なアカウントがない場合、システムにログインできません - 解決策:
緊急モードに入り、パスワードをリセットします - 例:rootユーザーのパスワードを忘れた場合、
ブートインターフェイスは緊急モードに入ります(入力方法は上記で説明されています)
sh-4.2#chroot / mnt / sysimage-システムイメージをロードし、システムルート環境に切り替えます
bash-4.2# passwd root-reset rootユーザーパスワード
bash-4.2#exit——exit
bash-4.2#reboot——保存
3、システムサービス制御
- システムサービス制御
systemctl制御タイプサービス名
- | - | - | - |
---|---|---|---|
init 0 | systemctl分離poweroff.target | systemct1の電源オフ | 今すぐシャットダウン-h |
init 1 | syatemctlisolaterescue.target | ||
init 3 | systemctl分離multi-user.target | ||
init 5 | systemctl分離graphical.target | ||
init 6 | systemctl分離reboot.target | systemct1の再起動 | 今すぐシャットダウン-r |
- コントロールタイプ
開始:開始
停止:停止
再起動:再起動
リロード:リロード
ステータス:サービスステータスの表示
1.Linuxシステムの動作レベル
- View
runlevel runlevelコマンド(スイッチの実行レベルと
Danggangの実行レベルのみを表示)systemctlツール(デフォルトの実行レベルを表示できます) - 実行レベルの
initコマンドを一時的に切り替えます
systemctltool
永続的な実行レベルを設定します
ln-sf /1ib/systemd/system/multi-user.target/etc/systemd/system/default.target。
またはsystemctlset-default multi-user.target
systemctl get -default
2.起動プロセスを最適化します
- ntsysvツール
は、
キャラクター端末で実行できるインタラクティブで視覚的なウィンドウを
提供します。これは、複数のサービスの集中管理に便利です。
サービスの起動時にサービスを自動的に開始するかどうかを制御するために使用されます。 - systemctlツール
は、インタラクティブで視覚的なウィンドウを提供しません。
単一のサービスを管理する方が効率的です。
3.システムサービスの開始と制御
- ntsysvのシステムサービス管理ツール
のntsysv
ntsysvの--levelリスト
- スペースバーを押して、サービスオプションをマークします
- ↑、↓を押してサービスオプションを切り替えます
- Tabキーを押してカーソルを切り替えます
- システムサービスの起動ステータスを表示する
systemctlis-enabledサービス名 - システムサービスの起動ステータスを設定します
systemctlenableサービス名-自動起動をオンにします
systemctldisableサービス名-自動起動をオフにします - ホスト名を恒久的に変更する
hostnamectlset-hostname newname - ホスト名のステータスを表示する
hostnamectlstatus - システム言語を中国語に
設定しますlocalectlset-locale LANG = zh_CN .utf8 - 現在のシステムで使用されている言語
localectlを表示する[ステータス] - システムの起動時間
-消費するayatemd-analyze