一 Linux作業系統引導過程
1. 引導過程流程圖
2. 引導過程
(1) 開機自檢
① 伺服器主機開機以後,将根據主機闆BIOS中的設定對CPU、記憶體、顯示卡、鍵盤等裝置進行初步檢測,檢測成功後根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬碟。
② 總結:檢測出第一個能夠引導系統的裝置,比如硬碟或者光驅
(2) MBR引導
① 當從本機硬碟中啟動系統時,首先根據硬碟第一個扇區中MBR(主引導記錄)的設定,将系統控制權傳遞給包含作業系統引導檔案的分區;或者直接根據MBR記錄中的引導資訊調用啟動菜單(如 GRUB)。
② 總結:運作放在MBR扇區裡的啟動GRUB引導程式。
(3) GRUB菜單
① 對于Linux作業系統來說,GRUB(統一啟動加載器)是使用最為廣泛的多系統引導器程式。系統控制權傳遞給GRB以後,将會顯示啟動菜單給使用者選擇,并根據所選項(或采用預設值〉加載Linux核心檔案,然後将系統控制權轉交給核心。
② Centos 7采用的是GRUB2啟動引導器。
③ 總結: GRUB引導程式通過讀取GRUB配置檔案/boot/grub2/grub.cfg,來擷取核心和鏡像檔案系統的設定和路徑位置
(4) 加載Linux核心
① Linux核心是一個預先編譯好的特殊二進制檔案,介于各種硬體資源與系統程式之間,負責資源配置設定與排程。核心接過系統控制權以後,将完全掌控整個Linux作業系統的運作過程。
② Centos 7系統中,預設的核心檔案位于"/boot/vmlinuz-3.10.0-514.el7.x86_64"。
③ 總結:把核心和鏡像檔案系統加載到記憶體中
(5) init程序初始化
① 為了完成進一步的系統引導過程,Linux核心首先将系統中的"/sbin/init"程式加載到記憶體中運作(運作中的程式稱為程序),init程序負責完成整個系統的初始化,最後等待使用者進行登入。
② 總結:加載硬體驅動程式,核心把init程序加載到記憶體中運作
3. 系統初始化程序
(1) init程序
① 由Linux核心加載運作/sbin/init 程式。
② init 程序是系統中的第一個程序 ,是所有程序的父程序。
③ init 程序的 PID 号永遠是為1。
(2) Systemd
① Systemd 是Linux 作業系統的一種init 軟體
② Centos 7 中采用全新的Systemd 啟動方式 ,取代傳統的SysVint
③ CentOS 7 中運作的第一個init 程序是 /lib/systemd/systemd
(3) 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的一組通過層次組織的管理系統程序 |
Target | .target | 描述一組systemd的單元 |
注:傳統SysVinit依賴于串行執行 shell腳本啟動服務,導緻效率低下,系統啟動速度較慢
systemd能夠将更多的服務程序并行啟動,并且具有提供按需啟動服務的能力,使得啟動更少程序,進而提高系統啟動速度。
二 故障表排除
1. 修複MBR扇區故障
(1) 故障原因
① 病毒、木馬等造成的破壞
② 不正确的分區操作
(2) 故障現象
① 找不到引導程式,啟動中斷
② 無法加載作業系統,開機後黑屏
(3) 解決思路
① 提前做好備份檔案
② 以CD光牒安裝引導進入急救模式
③ 從備份檔案中恢複
(4) 實際操作
① 備份MBR扇區資料到其它磁盤(/dev / sdb1)
mkdir /backup
mount /dev/ sdb1 /backup
dd if=/dev / sda of=/backup/mbr.bak bs=512 count=1
② 模拟破壞MBR引導扇區
dd if=/ dev/zero of=/dev/ sda bs=512 count=1
③ 引導界面進入急救模式,從備份檔案中恢複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環境,系統将會自動重新開機
(5) 實際操作
0.添加一塊新硬碟
1.idisk指令檢視添加硬碟
2.設定磁盤分區
3.格式化為xfs檔案類型
4.将磁盤挂載到backup目錄下
5.将sda中的512位元組複制到backup目錄裡的mbr.bak
6.利用空字元覆寫sda目錄-造成無法開機
7.重新開機
8.選擇急救模式
9.拯救系統
10.重新配置mbr.bak檔案
2. 修複GRUB引導故障
MBR中的GRUB引導程式遭到破壞
grub.conf檔案丢失、引導配置有誤
系統引導停滞,顯示"grub>”提示符
嘗試手動輸入引導指令
進入急救模式,重寫或者從備份中恢複grub.conf
向MBR扇區中重建grub程式
(4) 解決方法
/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 引導扇區類似)
MBR位于第一塊硬碟(/dev/sda)的第一個實體扇區處,總共512位元組,前446位元組是主引導記錄,分區表儲存在MBR扇區中的第447-510位元組中。
mkdir /bak
mount /dev/sdb1 /bak
dd if=/dev/sda of=/bak/grub.bak bs=446 count=1
模拟對MRB中的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
進入急救模式,加載CD光牒鏡像,切換到系統根環境
sh-4.2# chroot /mnt/sysimage
重新将GRUB引導程式安裝到第一塊硬碟(/dev/sda)的MRB扇區
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
方法三 實際操作
1.通過删除grub檔案無法開機
2.将cd-rom打開方式排在第一位
3.選擇急救模式
4.拯救系統
5.重新配置grub
16.啟動模式更回去
3. 遺忘root使用者密碼
(1) 進入急救模式,加載系統鏡像,切換到系統根環境
① sh-4.2# chroot /mnt/sysimage
(2) 重設root使用者密碼
① bash-4.2# passwd root
(3) 實際操作
1.更改啟動項
2.cd-rom進入系統
3.急救模式