- 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