Linux作業系統引導程序目錄
- 一、Linux作業系統引導程序
- 1.開機自檢
- 2.MBR 引導
- 3.GRUB選單
- 4.加載Linux內核
- 5.init行程初始化
- 二、系統初始化行程init和Systemd
- 2.1 init行程
- 2.2 Systemd
- Systemd單元型別
- 運行級別所對應的Systemd目標
- 三、排除啟動類故障
- 3.1修復MBR扇區故障
- 3.1.1 演示
- 我們先添加一塊新的磁盤格式化并掛載
- 備份MBR 扇區資料到其它磁盤
- 模擬破壞MBR引導扇區
- 引導界面進入急救模式,從備份檔案中恢復MBR 扇區資料
- 3.2 修復GRUB引導故障
- 方法一:手動輸入引導命令(笨拙繁瑣,不建議使用)
- 方法二:進入急救模式,恢復GRUB引導程式
- 方法三:引導界面進入急救模式,重建GRUB選單組態檔
- 3.2.1 演示:由于方法二和修復MBR扇區故障類似這里不做演示,這邊我們演示第三種方法
- 3.3 遺忘root用戶的密碼
- 3.3.1演示
- 四、系統服務控制
- 4.1 系統服務控制
- 4.2 控制型別
- 五、Linux系統的運行級別
- 5.1 查看運行級別
- 5.2 臨時切換運行級別
- 5.3 設定永久運行級別
- 六、優化啟動程序
- ■ntsysv工具
- ■systemct工具
- 七、系統服務的啟動與控制
- 7.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.x86_64" - 總結:把內核和鏡像檔案系統加載到記憶體中
5.init行程初始化
- 為了完成進一步的系統引導程序,Linux內核首先將系統中的"/sbin/init"程式加載到記憶體中運行(運行中的程式稱為行程),init行程負責完成整個系統的初始化,最后等待用戶進行登錄,
- 總結:加載硬體驅動程式,內核把init行程加載到記憶體中運行
二、系統初始化行程init和Systemd
2.1 init行程
- 由Linux內核加載運行/sbin/init程式
- init行程是系統中第一個行程,是所有行程的父行程
- init行程的PID (行程標記)號永遠為1
2.2 Systemd
-
Systemd是Linux作業系統的一種init軟體
-
CentOS7中采用全新的Systemd啟動方式,取代傳統的SysVinit
-
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 | 描述一個定時器 |
| Target | .target | 描述一組systemd的單元 |
運行級別所對應的Systemd目標
| 運行級別 | Systemd的target | 說明 |
|---|---|---|
| 0 | target | 關機狀態,使用該級別時將會關閉主機 |
| 1 | rescue.target | 單用戶模式,不需要密碼驗證即可登錄系統,多用于系統維護 |
| 2 | multi-user.target | 用戶定義/域特定運行級別,默認等同于3,但是不能連網 |
| 3 | multi-user.target | 字符界面的完整多用戶模式,大多數服務器主機運行在此級別 |
| 4 | multi-user.target | 用戶定義/域特定運行級別,默認等同于3 |
| 5 | graphical.target | 圖形界面的多用戶模式,提供了圖形桌面操作環境 |
| 6 | reboot.target | 重新啟動,使用該級別時將會重啟主機 |
三、排除啟動類故障
3.1修復MBR扇區故障
■故障原因
- 病毒、木馬等造成的破壞
- 不正確的磁區操作、磁盤讀寫誤操作
■故障現象
- 找不到引導程式,啟動中斷
- 無法價值在作業系統,開機后黑屏
■解決思路
-
應提前作好備份檔案
-
以安裝光碟引導進入急救模式
-
從備份檔案中恢復
-
MBR位于第一塊硬碟(/dev/sda)的第一個物理扇區處,總共512位元組
1.備份MBR 扇區資料到其它磁盤(/dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
2.模擬破壞MBR引導扇區
dd if=/dev/zero of=/dev/sda bs=512 count=1
3.引導界面進入急救模式,從備份檔案中恢復MBR 扇區資料
先加載好光碟鏡像,重啟作業系統,
當出現安裝向導界面時,選擇“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 環境,系統將會自動重啟
3.1.1 演示
我們先添加一塊新的磁盤格式化并掛載


備份MBR 扇區資料到其它磁盤

模擬破壞MBR引導扇區

重啟虛擬機可以看到不能直接進入系統了

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





可以看到可以正常登陸了
3.2 修復GRUB引導故障
■故障原因
- MBR中的GRUB引導程式遭到破壞
- grub.conf檔案丟失、引導配置有誤
■故障現象
- 系統引導停滯,顯示‘grub>’提示符
■解決思路
- 嘗試手動輸入引導命令
- 進入急救模式,重寫或者從備份中恢復grub.conf
- 向MBR扇區中重建grub程式
方法一:手動輸入引導命令(笨拙繁瑣,不建議使用)
/boot/grub/目錄下的包是用于啟動選單的背景圖片及樣式
/boot/grub2/grub.cfg GRUB組態檔
grub> insmod xfs 加載指定的模塊到內核
grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet LANG=zh_CN.UTF-8 內核的名字及位置等資訊
grub> initrd16 /initramfs-3.10.0-693.el7.x86_64.img 鏡像系統檔案
grub> boot 引導boot
方法二:進入急救模式,恢復GRUB引導程式
- MBR位于第一塊硬碟(/dev/sda)的第一個物理扇區處,總共512位元組,前446位元組是主引導記錄,磁區表保存在MBR扇區中的第477-510位元組中,所以這里備份前446位元組,保留之前的磁區表,
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
- 模擬對MBR中的GRUB引導程式的破壞,但并不破壞磁區表
dd if=/dev/zero of=/dev/sda bs=446 count=1
- 引導界面進入急救模式,從備份檔案中恢復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
方法三:引導界面進入急救模式,重建GRUB選單組態檔
- 模擬檔案丟失
rm -rf /boot/grub2/grub.cfg
- 進入急救模式,加載光碟鏡像,切換到系統根環境
sh-4.2# chroot /mnt/sysimage
- 重新將GRUB引導程式安裝到第一塊硬碟(/dev/sda)的MBR扇區
bash-4.2# grub2-install /dev/sda
- 重新構建GRUB選單的組態檔
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
- 退出chroot 環境,并重啟
bash-4.2# exit
sh-4.2# reboot
3.2.1 演示:由于方法二和修復MBR扇區故障類似這里不做演示,這邊我們演示第三種方法
先進入boot/grub2洗掉grub.cfg檔案


重啟發現啟動不了了

進入急救模式在加載界面時按下ESC鍵進入急救模式


引導界面進入急救模式,重建GRUB選單組態檔

修復成功可以正常進入系統

3.3 遺忘root用戶的密碼
■故障原因
- 遺忘root用戶密碼
■故障現象
- 無法進行需要root權限的管理操作
- 若沒有其他賬號可用,將無法登陸系統
■解決思路
- 進入急救模式,重設密碼
sh-4.2# chroot /mnt/sysimage #進入急救模式,加載系統鏡像,切換到系統根環境
bash-4.1# passwd root #重設 root 用戶密碼
3.3.1演示
進入急救模式重設密碼

重新登錄輸入密碼,實驗成功,
四、系統服務控制
4.1 系統服務控制
systemctl 控制型別 服務名稱
4.2 控制型別
- start:啟動
- stop:停止
- restart:重新啟動
- reload:重新加載
- status:查看服務狀態
- …
五、Linux系統的運行級別
5.1 查看運行級別
- runlevel命令:查看切換之前的運行級別與當前運行級別,N表示之前沒有切換
- systemctl工具:查看默認的運行級別
5.2 臨時切換運行級別
- init命令
- systemctl工具
| 服務 | 同作用服務名 | ||
|---|---|---|---|
| init 0 | systemcrl isolate poweroff.target | systemcrl poweroff | shutdown -h now |
| init 1 | systemcrl isolate rescue.target | ||
| init 3 | systemcrl isolate multi.target | ||
| init 5 | systemcrl isolate graphical.target | ||
| init 6 | systemcrl isolate reboot.target | systemcrl reboot | shutdown -r now |
5.3 設定永久運行級別
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
或
systemctl set-default multi-user.target
systemctl get-default 查看系統默認的運行級別

六、優化啟動程序
■ntsysv工具
- 提供一個互動式、可視化視窗
- 可以在字符終端運行
- 便于集中管理多個服務
- 用于控制服務是否開機自啟動
■systemct工具
- 不提供互動式、可視化視窗
- 管理單個服務效率更高
七、系統服務的啟動與控制
■ntsysv系統服務管理工具
ntsysv
ntsysv --level 級別串列
- 按空格鍵標志服務選項
- 按↑、↓鍵切換服務選項
- 按tab鍵切換游標

7.1 系統服務的啟動和控制
■查看系統服務的啟動狀態
systemctl is-enabled 服務名稱
■服務名稱設定系統服務的啟動狀態
systemctl enable 服務名稱 開啟開機自啟動
systemctl disable 服務名稱 關閉開機自啟動
八、永久修改主機名和查看主機名的狀態
hostnamectl set-hostname newname 永久修改主機名
hostnamectl status 查看諸暨名的狀態
九、設定系統語言為中文
localetcl set-locale LANG=zh_CN.utf8 設定系統語言為中文
localectl [status] 查看當前系統使用的語言
十、查看系統啟動耗時
systemd-analyze
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255328.html
標籤:其他
