Linuxの基本的なブートプロセスとサービス制御

記事のディレクトリ

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 服务名称       #关闭开机自启动
    

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/shengmodizu/article/details/113462541