Linux的引導過程與服務控制

樹峰發表於2020-11-05

Linux作業系統引導過程

引導過程總覽

開機自檢(BIOS)→MBR引導→GRUB選單→載入核心(Kernel)→init程式初始化

系統初始化程式

init程式
1、由linux核心載入執行/sbin/init程式
2、init程式是系統中第一個程式
3、init程式的PID(程式標記)號永遠是1
systemd
1、systemd是Linux作業系統的一種init軟體
2、CentOS7中採用全新的Systemd啟動方式,取代傳統的SysVinit
3、CenOS7中執行的第一個init程式是/lib/systemd/system
Systemd單元型別
在這裡插入圖片描述
執行級別所對應的Systemd目標
在這裡插入圖片描述

排除啟動類故障

修復MBR扇區故障

故障原因
1、病毒、木馬等造成的破壞
2、不正確的分割槽操作、磁碟讀寫誤讀寫
故障現象
1、找不到載入程式,啟動中斷
2、無法載入作業系統,開機後黑屏
解決思路
1、應提前做好備份檔案
2、以安裝光碟引導進入急救模式
3、從備份檔案中恢復
特別說明
mbr扇區存在第一塊硬碟空間裡,因此想要破壞mbr資料,只需要破壞第一塊硬碟空間裡的資料即可。
對第一塊硬碟備份時,注意備份磁碟空間不能小於第一塊硬碟的空間大小。
相關實驗原理及命令
故障原因:病毒、木馬等造成的破壞,不正確的分割槽操作,磁碟讀寫操作
故障現象:找不到載入程式,啟動中斷,無法載入作業系統,開機後黑屏
應對思路:應提前做好備份檔案,以安裝光碟引導進入緊急急救模式,重備份檔案中恢復
操作步驟模擬MBR扇區實驗
加一塊硬碟做實驗
進系統檢視磁碟
fdisk -l 檢視是否有sdb
mkfs -t ext4 /dev/sdb 格式化sdb
mount /dev/sdb/opt 掛載
1、備份MBR扇區資料
dd if =/dev/sda of=/opt/mbr.bar bs=512 count=1
2、模擬MBR扇區故障
dd if =/dev/zero of=/dev/sda bs=512 count=1
重啟後觀察系統是否有問題
出現 operating system not found
上述就是有故障了:MBR掛了
光碟引導,進入急救模式,提示操作
從備份檔案中恢復MBR扇區
步驟如下:
1、裝入光碟,在光碟引導介面選擇troubleshooting
2、進入troubleshooting選單 選擇Rescue a centos system
3、進入引導可以按回車,或者等待
按1 在按回車進入sh-4.2#
4、急救模式下sdb的掛載
mkdir /sdd
mount /dev/sdb/sdd
cd /sdd查詢下該備份檔案是否存在
5、dd if=/sdd/mbr.bak of=/dev/sda count=1 bs=512
6、重啟reboot 進入系統測試是否正常

修復GRUB引導故障

故障原因
1、MBR中的GRUB載入程式遭到破壞
2、grub.conf檔案丟失、引導配置有誤
故障現象
系統引導停滯,顯示“grub>”提示符
解決思路
1、嘗試手動輸入引導命令
2、進入急救模式,重寫或者從備份中恢復grub.conf
3、向MBR扇區中重建grub程式
相關實驗原理及命令
cd /boot/grub2 進入grub2
rm -rf grub.cfg 刪除grub2.cfg 模擬故障
init 6 重啟
出現故障,如下
grub>
###修復如下###
1、引導急救模式,載入系統映象
chroot /mnt/sysimage/
2、重新建立載入sda分割槽
grub2-install /dev/sda
3、重建構建grub選單配置檔案
grub2-mkconfig -o/boot/grub2/grub.cfg
4、退出bash環境
exit
5、重啟
reboot

遺忘root使用者密碼

故障原因
遺忘root使用者密碼
故障現象
1、無法進行需要root許可權的管理操作
2、若沒有其他可用賬號,將無法登入系統
解決思路
進入急救模式,重設密碼
相關實驗原理及命令
sh-4.2#chroot /mnt/sysimage 載入系統映象
bash-4.2#passwd root
new:
retry:
退出bash環境 exit
重啟 reboot

服務控制及切換執行級別

系統服務控制

systemctl 控制型別 服務名稱
控制型別
start:啟動
stop:停止
restart:重新啟動(先關閉服務再開啟服務,服務會中斷)
reload:重新載入(不會中斷服務)
status:檢視服務狀態

Linux系統的執行級別

檢視執行級別
runlevel命令(只能檢視切換執行級別與當前執行級別)
systemctl工具(systemctl時能檢視預設的執行級別)
臨時切換執行級別
init命令(執行級別所對應的數字)
systemctl工具(命令引數是具體的target)
設定永久執行級別

檢視當前的執行級別
1、切換到命令列介面
systemctl isolate multi-user.target /graphical.target (相當於 init 3/5)
2、用runlevel檢視當前的執行級別
runlevel
5 3
說明:5是前一個執行級別 3是當前的執行級別
3、也可以用who -r命令
who -r
run-level 3 2020-04-07 16:44 last=5
run-level 是當前的執行級別

修改預設的執行級別:(set-default用來指定預設的執行級別)
systemctl set-default multi-user.target
提示資訊:Removed /etc/systemd/stystem/default.target.
created symlink /etc/systemd/system/default.target→/usr/lib/systemd/system/multi-user.target.

rm -f /etc/systemd/system/default.target
ln -sf /usr/lib/sysytemd/system/multi-user.target /etc/systemed/system/default.target
init 6/reboot
兩條命令功能相同,都要重啟才能生效

優化啟動過程

優化啟動過程

ntsysv工具
1、提供一個互動式、視覺化視窗
2、可以在字元終端執行
3、便於集中管理多個服務
systemctl工具
1、不提供交換式、視覺化視窗
2、管理單個服務效率更高

系統服務的啟動和控制

ntsysv系統服務管理工具
ntsysv
ntsysv --level 級別列表
按照預設設定,只有當前執行級別會被配置。要配置不同的執行級別,使用“–level”選項來指定一個或多個執行級別。
例如,命令“ntsysv --level 345”配置執行級別3、4和5
檢視系統服務的啟動狀態
systemctl is-enabled 服務名稱
設定系統服務的啟動狀態
systemctl enable/disable 服務名稱
補充:
systemctl start(stop/status/reload/restart) 服務
= service 服務 start(stop/status/reload/restart)
注意:systemctl或service 管理服務時,在/lib/systemd/system下面要有這個服務,service檔案或者在/etc/init.d/服務的配置檔案

相關文章