天天看點

Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

Linux中引導過程和服務控制及修複故障實驗圖解

  • 一、概述
    • 1.Linux作業系統引導過程
    • 2.系統初始化程序
      • init程序
      • Systemd
  • 二、Systemd 單元類型
  • 三、3個常見故障修複的方法及實驗操作
    • 1.修複MBR扇區故障
    • 2.修複GRUB引導故障(3種方法)
    • 3.root使用者密碼忘記
  • 四、Linux系統的服務控制與運作級别
    • 1.Linux系統的服務控制
    • 2.Linux系統的運作級别
      • (1)檢視運作級别
      • (2)運作級别所對應的Systemd目标
      • (3)臨時切換運作級别
      • (4)各級别對應的可用指令
      • (5)檢視系統預設的運作級别
      • (6)設定永久運作級别
  • 五、優化啟動過程
    • 1.ntsysv工具
      • 操作方法
    • 2.systemct和chkconfig工具
      • chkconfig 工具
    • 3.系統服務的啟動和控制
  • 補充

一、概述

1.Linux作業系統引導過程

(1)開機自檢

伺服器主機開機以後,将根據主機闆BIOS中的設定對CPU、記憶體、顯示卡、鍵盤等裝置進行初步檢測,檢測成功後根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬碟。

總結:檢測出第一個能夠引導系統的裝置,比如硬碟或者光驅

(2)MBR引導

當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中MBR (主引導記錄)的設定,将系統控制權傳遞給包含作業系統引導檔案的分區或者直接根據MBR記錄中的引導資訊調用啟動菜單(如GRUB)。

總結:運作放在MBR扇區裡的啟動GRUB引導程式

(3)GRUB菜單

對于Linux作業系統來說,GRUB (統一啟動加載器)是使用最為廣泛的多系統引導器程式。系統控制權傳遞給GRUB以後,将會顯示啟動菜單給使用者選擇,并根據所選項(或采用預設值)加載Linux核心檔案,然後将系統控制權轉交給核心。

Centos 7采用的是 GRUB2 啟動引導器

總結:GRUB引導程式通過讀取GRUB配置檔案 /boot/grub2/grub.cfg ,來擷取核心和鏡像檔案系統的設定和路徑位置。

(4)加載Linux核心

Linux核心是一個預先編譯好的特殊二進制檔案,介于各種硬體資源與系統程式之間,負責資源配置設定與排程。核心接過系統控制權以後,将完全掌控整個Linux作業系統的運作過程。

Centos 7系統中,預設的核心檔案位于 “/boot/vmlinuz-3.10.0-514.e17.x8664”

總結:把核心和鏡像檔案系統加載到記憶體中

(5)init程序初始化

為了完成進一步的系統引導過程, Linux核心首先将系統中的 “/sbin/init” 程式加載到記憶體中運作(運作中的程式稱為程序) ,init程序負責完成整個系統的初始化,最後等待使用者進行登入。

總結:加載硬體驅動程式,核心把init程序加載到記憶體中運作

2.系統初始化程序

init程序

(1)由Linux核心加載運作 /sbin/init 程式

(2)init 程序是系統中第一個程序,是所有程序的父程序

(3)init程序的PID (程序标記)号永遠為1

Systemd

(1)Systemd是Linux作業系統的一種 init 軟體

(2)CentOS7中采用全新的Systemd啟動方式,取代傳統的SysVinit

(3)CentOS7中運作的第一個 init 程序是 /lib/systemd/systemd

注:傳統 SysVinit 依賴于串行執行 Shell 腳本啟動服務,導緻效率低下,系統啟動速度較慢.

systemd 能夠将更多的服務程序并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少程序,進而提高系統啟動速度。

二、Systemd 單元類型

單元類型 擴充名 說明
Service .service 描述一個系統服務
Socket .socket 描述一個程序間通信的套接字
Device .device 描述一個核心識别的裝置檔案
Mount .mount 描述一個檔案系統的挂載點
Automount .automount 描述一個檔案系統的自動挂載點
Swap .swap 描述一個記憶體交換裝置或交換檔案
Path .path 描述一個檔案系統中檔案或目錄
Timer .timer 描述一個定時器(用于實作類似cron的排程任務)
Snapshot .snapshot 用于儲存一個systemd的狀态
Scope .scope 使用systemd的總線接口以程式設計的方式建立外部程序
Slice .slice 描述居于Cgroup的一組通過層次組織的管理系統程序
Targe .target 描述一組systemd的單元

三、3個常見故障修複的方法及實驗操作

1.修複MBR扇區故障

MBR位于第一塊硬碟(/dev/sda)的第一個實體扇區處,總共512位元組

(1)故障原因

病毒、木馬等造成的破壞

不正确的分區操作、磁盤讀寫誤操作

(2)故障現象

找不到引導程式,啟動中斷

無法加載作業系統,開機後黑屏

(3)解決思路

應提前作好備份檔案

以安裝CD光牒引導進入急救模式

從備份檔案中恢複

實際操作

(1)先建立一個硬碟/dev/sdb

Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

(2)備份MBR扇區資料到其它磁盤 (/dev/sdb1)

mkdir    /backup
mount   /dev/sdb1    /backup
dd    if=/dev/sda    of=/backup/mbr.bak    bs=512     count=1
           
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

(3)模拟破壞MBR引導扇區

dd  if=/dev/zero  of=/dev/sda  bs=512  count=1
           
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

(4)引導界面進入急救模式,從備份檔案中恢複MBR扇區資料

先加載好CD光牒鏡像,重新開機作業系統,

當出現安裝向導界面時,選擇 “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 環境,系統将會自動重新開機
           
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

進入急救模式

Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

2.修複GRUB引導故障(3種方法)

(1)故障原因

MBR中的GRUB引導程式遭到破壞

/boot/grub2/grub. cfg 檔案丢失、引導配置有誤

(2)故障現象

系統引導停滞,顯示 “grub>” 提示符

(3)解決思路

嘗試手動輸入引導指令

進入急救模式,重寫或者從備份中恢複grub.conf

向MBR扇區中重建grub程式

(4)修複GRUB引導故障指令

/boot/grub/目錄下的包是用于啟動菜單的背景圖檔及樣式
/boot/grub2/grub. cfg      -GRUB配置檔案
           

方法1 手動輸入引導指令(繁瑣,盡量少用)

grub>  insmod   xfs      -加載指定的子產品到核心
grub>  linux16   /vmlinuz-3.10.0-693.e17.x86_64   root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f   ro   rhgb  quiet
LANG-zh   CN. UTF-8       -核心的名字及位置等資訊
grub>  initrd16    /initramfs-3.10.0-693.e17.x86_64.img      -鏡像系統檔案
grub>   boot       -引導boot
           

方法2 進入急救模式,恢複GRUB引導程式(與上面MBR類似,備份位元組資料不同)

MBR位于第一塊硬碟(/dev/sda)的第一個實體扇區處,總共512位元組,前446位元組是主引導記錄,分區表儲存在MBR扇區中的第447-510位元組中。

(1)隻備份前446位元組的資料

mkdir    /bak
mount    /dev/sdb1   /bak
dd   if=/dev/sda    of=/bak/grub.bak   bs=446   count=1
           

(2)模拟對MRB中的GRUB引導程式的破壞,但并不破壞分區表

dd   if=/dev/zero    of=/dev/sda    bs=446    count=1
           

(3)引導界面進入急救模式,從備份檔案中恢複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菜單配置檔案

(1)/boot/grub2/grub. cfg 檔案丢失、引導配置有誤的情況

rm   -rf   /boot/grub2/grub.cfg
           
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

(2)進入急救模式,加載CD光牒鏡像,切換到系統根環境

sh-4.2     chroot  /mnt/sysimage
           

(3)重新将GRUB引導程式安裝到第一塊硬碟(/dev/sda)的MRB扇區

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
           

步驟2到5如下

Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

3.root使用者密碼忘記

(1)故障現象

無法進行需要root權限的管理操作

若沒有其他可用帳号,将無法登入系統

(2)解決思路

進入急救模式,重設密碼

實際操作

(1)進入急救模式,加載系統鏡像,切換到系統根環境

sh-4.2   chroot   /mnt/sysimage
           

(2)重設 root 使用者密碼

bash-4.2   passwd   root
           
Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

四、Linux系統的服務控制與運作級别

1.Linux系統的服務控制

systemctl  控制類型   服務名稱
           

常見控制類型

類型 說明
start 啟動
stop 停止
restart 重新啟動
reload 重新加載
status 檢視服務狀态

2.Linux系統的運作級别

(1)檢視運作級别

(1)runlevel指令(runlevel隻能檢視切換運作級别與目前運作級别)

(2)systemctl工具(ststemctl能檢視預設的運作級别)

(2)運作級别所對應的Systemd目标

運作級别 Systemd的target 說明
init 0 target 關機狀态,使用該級别時将會關閉主機
init 1 rescue.target 單使用者模式,不需要密碼驗證即可登入系統,多用于系統維護
init 2 multi-user.target 使用者定義/域特定運作級别。預設等同于3
init 3 multi-user.target 字元界面的完整多使用者模式,大多數伺服器主機運作在此級别
init 4 multi-user.target 使用者定義/域特定運作級别。預設等同于3
init 5 graphical.target 圖形界面的多使用者模式,提供了圖形桌面操作環境
init 6 reboot.target 重新啟動,使用該級别時将會重新開機主機

(3)臨時切換運作級别

(1)init指令(init的指令參數是運作級别所對應的數字)

(2)systemctl工具(systemctl的指令參數是具體的target)

(4)各級别對應的可用指令

init systemctl
init 0 systemctl isolate poweroff.target
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

(5)檢視系統預設的運作級别

systemctl get-default      
           

(6)設定永久運作級别

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

五、優化啟動過程

1.ntsysv工具

(1)提供一個互動式、可視化視窗

(2)可以在字元終端運作

(3)便于集中管理多個服務

(4)用于控制服務是否開機自啟動

操作方法

(1)按空格鍵标志服務選項

(2)按↑、↓鍵切換服務選項

(3)按tab鍵切換光标

界面如下

Linux中引導過程和服務控制及修複故障實驗圖解一、概述二、Systemd 單元類型三、3個常見故障修複的方法及實驗操作四、Linux系統的服務控制與運作級别五、優化啟動過程補充

2.systemct和chkconfig工具

(1)不提供互動式、可視化視窗

(2)管理單個服務效率更高

chkconfig 工具

chkconfig --list [服務名稱]
chkconfig --add 服務名稱
chkconfig --level 級别清單 服務名 on/off
           

3.系統服務的啟動和控制

(1)檢視系統服務的啟動狀态

systemctl is-enabled 服務名稱
           

(2)服務名稱設定系統服務的啟動狀态

systemctl enable 服務名稱        -開啟開機自啟動
systemctl disable 服務名稱        -關閉開機自啟動
           

補充

(1)永久修改主機名

hostnamectl set-hostname newname
           

(2)檢視主機名的狀态

hostnamectl status
           

(3)設定系統語言為中文

localectl set-locale LANG=zh_CN.utf8
           

(4)檢視目前系統使用的語言

(5)檢視系統啟動耗時

systemd-analyze
           

繼續閱讀