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

(2)備份MBR扇區資料到其它磁盤 (/dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
(3)模拟破壞MBR引導扇區
dd if=/dev/zero of=/dev/sda bs=512 count=1
(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 環境,系統将會自動重新開機
進入急救模式
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
(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如下
3.root使用者密碼忘記
(1)故障現象
無法進行需要root權限的管理操作
若沒有其他可用帳号,将無法登入系統
(2)解決思路
進入急救模式,重設密碼
實際操作
(1)進入急救模式,加載系統鏡像,切換到系統根環境
sh-4.2 chroot /mnt/sysimage
(2)重設 root 使用者密碼
bash-4.2 passwd root
四、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鍵切換光标
界面如下
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