引導過程與服務控制

无敌小鲁班發表於2024-04-21

目錄
  • 1.Linux作業系統引導過程
    • (1)引導過程總覽
    • (2)系統初始化程序
    • (3)Systemd單元型別
    • (4)執行級別所對應的Systemd目標
  • 2.排除啟動類故障
    • (1)啟動類故障恢復
    • (2)如果是 MBR 的GRUB主載入程式被破壞了
    • (3)如果是GRUB配置檔案被刪了
    • (4)如果是root密碼忘記了
  • 3.服務控制及切換執行級別
    • (1)系統服務控制
    • (2)服務管理操作
    • (3)服務開機自啟管理
    • (4)Linux系統的執行級別
      • (1)檢視執行級別
      • (2)臨時切換執行級別
      • (3)設定永久執行級別

1.Linux作業系統引導過程

(1)引導過程總覽

1)開機自檢:檢測硬體裝置,找到能夠引導系統的裝置,比如硬碟或者光碟機

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

2)MBR引導:執行MBR扇區裡的主載入程式GRUB

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

3)啟動GRUB選單:系統讀取GRUB配置檔案獲取核心的設定和位置,並在螢幕顯示GRUB選單頁面

對於Linux作業系統來說,GRUB(統一啟動載入器)是使用最為廣泛的多系統引導器程式。系統控制權傳遞給GRUB以後,將會顯示啟動選單給使用者選擇,並根據所選項(或採用預設值)載入Linux核心檔案,然後將系統控制權轉交給核心。
*注:CentOS 7 採用的是 GRUB2 啟動引導器。

4)載入Linux核心:把核心載入到記憶體,將系統控制權交接給核心

Linux核心是一個預先編譯好的特殊二進位制檔案,介於各種硬體資源與系統程式之間,負責資源分配與排程。核心接過系統控制權以後,將完全掌控整個Linux作業系統的執行過程。
CentOS 7系統中,預設的核心檔案位於“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

5)init程序初始化:核心將init程序載入到記憶體中執行,並把init程序作為系統的第一個程序

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


(2)系統初始化程序


init程序 檔案位於 /sbin/init -> /lib/systemd/systemd ,init程序PID號固定為 1 ,是系統中其它所有程序的父程序

Systemd是Linux作業系統的一種init軟體, CentOS7中執行的第一個init程序是/ib/systemd/systemd

程序啟動方式:centos7開始的版本預設的啟動方式是 systemd,開機服務程式為並行啟動,啟動效率較快
centos6及以前版本的啟動方式是 sysVinit,開機服務程式是透過序列執行/etc/init.d/目錄下的shell指令碼啟動的,容易阻塞,啟動效率較慢

(3)Systemd單元型別

(4)執行級別所對應的Systemd目標

執行級別 功能 對應的systemd單元 切換
0 關機 poweroff.target init 0 ; systemctl isolate poweroff.target
1 單使用者模式 rescue.target init 1 ; systemctl isolate rescue.target
2 字元介面的多使用者模式(無網路) multi-user.target init 2
3 字元介面的多使用者模式(完整的,有網路) multi-user.target init 3 ; systemctl isolate multi-user.target
4 字元介面的多使用者模式(保留) multi-user.target init 5
5 圖形介面的多使用者模式 graphical.target systemctl isolate graphical.target
6 重啟 reboot.target init 6 ; systemctl isolate reboot.target


2.排除啟動類故障

(1)啟動類故障恢復

MBR 主載入程式 1~446位元組 硬碟分割槽表 447~510位元組
如果是 MBR 整個扇區資料被破壞了,需要進入到急救模式將備份的MBR資料匯入還原
備份命令:dd if=/dev/sda of=備份檔案 bs=512 count=1
還原命令:dd if=備份檔案 of=/dev/sda

(2)如果是 MBR 的GRUB主載入程式被破壞了

1)在急救模式下使用備份檔案恢復 dd if=備份檔案 of=/dev/sda bs=446 count=1











2)在急救模式下重建MBR的GRUB主載入程式 chroot /mnt/sysimage -> grub2-install /dev/sda

(3)如果是GRUB配置檔案被刪了

在急救模式下重建GRUB配置檔案 chroot /mnt/sysimage -> grub2-mkconfig -o /boot/grub2/grub.cfg


(4)如果是root密碼忘記了

1)在急救模式下 先切換系統根環境 chroot /mnt/sysimage -> passwd root

2)在GRUB選單按 e 鍵,修改內容

在 linux16 /vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=UUID=a99fd431-dc10-4233-a655-3c4b8d710624 ro rhgb quiet LANG=zh_CN.UTF-8 這行後面追加配置
rw single init=/bin/bash ,再按 ctrl + x 重啟系統

再在bash介面輸入 passwd root 修改密碼 -> touch /.autorelabel --> exec /sbin/init


沒有修改過,要輸入touch /.autorelabel --> exec /sbin/init


3.服務控制及切換執行級別

(1)系統服務控制

systemctl 控制型別 服務名稱

控制型別
start 啟動
stop 停止
restart 重新啟動
reload 重新載入
status 檢視服務狀態

(2)服務管理操作

systemctl start|stop|restart|reload|status|is-active 服務名[.service] ####要確保在 /usr/lib/systemd/system/ 目錄中有相關服務的 XXX.service 檔案



service 服務名 start|stop|restart|reload|status ####要確保在 /etc/init.d/ 目錄中有相關服務的管理指令碼檔案

(3)服務開機自啟管理

systemctl enable|disable [--now] 服務名[.service] #####--now選項可實現立即開啟|關閉服務

systemctl is-enabled 服務名[.service]

ntsysv ##圖形化管理開機自啟

chkconfig --add 服務名 ####服務名就是 /etc/init.d/ 目錄下的指令碼檔名
chkconfig --level 執行級別列表 服務名 on|off ####開啟|關閉服務在哪些執行級別下開機自啟
chkconfig --list 服務名 ####檢視自啟狀態

(4)Linux系統的執行級別

(1)檢視執行級別

runlevel命令——runlevel只能檢視切換執行級別與當前執行級別
systemctl工具——systemctl時能檢視預設的執行級別

runlevel ####檢視上一次的執行級別 和 當前的執行級別
systemctl get-default ####檢視當前的預設執行級別

(2)臨時切換執行級別

init命令——init的命令引數是執行級別所對應的數字
systemctl工具——systemctl的命令引數是具體的target



(3)設定永久執行級別

systemctl set-default multi-user.target|graphical.target ####設定預設執行級別3或5

等效於 ln -s -f /usr/lib/systemd/system/multi-user.target|graphical.target /etc/systemd/system/default.target

相關文章