在boot里面我們可以根據自己的需求去設置一些啟動選項,我們今天來了解一下Linux啟動流程,以及boot下的選項。
-
加載BIOS的硬件信息,獲取第一個啟動設備。
-
讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
-
加載核心操作系統的核心信息,核心開始解壓縮,并嘗試驅動所有的硬件設備。
-
核型執行init程序并獲取運行信息。
-
Init執行/etc/rc.d/rc.sysinit文件。
-
啟動核心的外掛模塊(/etc/modprobe.conf)。
-
Init執行運行的各個批處理文件(scripts).
-
Init執行/etc/rc.d/rc.local.
-
執行/bin/login程序,等待用戶登錄。
-
登錄之后開始以Shell控制主機。
POST:Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、串并行接口、鍵盤、 CD-ROM光驅等硬件情況的檢測。
ROM: BIOS, Basic Inputand Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、開機加電自檢程序和系統啟動自舉程序等。
RAM: CMOS互補金屬氧化物半導體,保存各項參數的設定按次序查找引導設備,第一個有引導程序的設備為本次啟動設備bootloader: 引導加載器,引導程序
Boot Loader:主要功能識別.加載操作系統中的核心文件,并提交到內存中運行,進而啟動對應的操作系統,每一種操作系統都有自己單獨的Boot Loader,只有使用自己的Boot Loader才可以加載到自己的核心文件。Boot Loader另一個主要功能是提供菜單信息(可以向使用者提供不同的啟動項目,來加載不同的操作系統),并將啟動管理功能
轉交給其他的加載程序。
Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把系統控制權移交給內核
stage1:運行boot Loader的程序與配置項加載分成三個階段(stage)來運行,MBR空間有限,因此在MBR中僅安裝Boot Loader的最小主程序,并沒有安裝Boot Loader的相關配置文件
stage1_5:在MBR隨后的扇區中存放,主要用于與stage2所在分區的文件系統進行交互。
stage2:通過Boot Loader加載所有配置文件及相關的環境參數信息,這些配置文件及相關的環境參數都存放于磁盤分區上的/boot目錄上。
grub:最重要的一部分就是識別磁盤信息,grub對硬盤的識別是通過以下方式:
(hd0,0)
1.硬盤代號以小括號()括起來;
2.硬盤以hd表示,后面會接一組數字,數字之間以逗號隔開;
3.以搜尋到的順序來作為磁盤的編號,而非根據磁盤的排線編號(多硬盤情況下, 搜尋的次序是根據bios中設置的啟動順序,而非插槽編號);
4.第一個搜尋到的磁盤編號為0,第二個為1,一次類推。
5.每塊磁盤上的第一個分區編號為0,第二個分區為1,以此類推。
#:因此(hd0,0)就表示第一塊磁盤上的第一個分區。
default=0
表示默認的啟動條目,假如同時裝有多個操作系統,0表示定義的第一個title系統,1表示定義的第二個title系統,以此類推
timeout=5
表示可供選擇的等待時間,如果超過5秒,則使用默認的啟動條目default定義的
splashimage=(hd0,0)/grub/splash.xpm.gz
定義啟動時的背景圖片信息
hiddenmenu
啟動時是否要顯示菜單,默認情況下是不顯示菜單信息,如果想要顯示菜單,可以將該配置注釋即可;
注釋菜單:
title:定義操作系統的名稱
root :表示內核文件存放的位置,這里指定的是分區位置,而非根目錄。
kernel:內核的名稱以及一些啟動時的核心參數,由于啟動過程中需要掛載根目錄,因此就需要指定根目錄所在的分區,rhgb表示色彩顯示,quiet表示靜默模式加載內核。
initrd:指定用于輔助內核完成系統啟動的ramdisk文件路徑再次在內存緩存
默認啟動級別:
0:關閉所有服務;關機
1:維護模式;單用戶模式,sigle模式,此級別可允許root用戶直接登錄而無需認證。
2:維護模式;多用戶模式,需要用戶認證,會啟動網絡功能,但不支持使用NFS。
3:正常級別:完全多用戶模式,文本界面。
4:預留級別:
5:正常級別:完全多用戶模式,圖形界面。
6:關閉所有服務;重啟
#:通常使用較多的默認級別為3或者5,服務器基本上默認使用3級別,即文本界面。
#:查看當前運行的級別可以使用runlevel或者who -r
#:禁用Ctrl+Alt+Delete重啟;(centos 6)
1.cp -v /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.override
2.vim /etc/init/control-alt-delete.override
3.將exec /sbin/shutdown -r now "Control-Alt-Delete pressed"改為exec /usr/bin/logger -p authpriv.notice -t init"ctrl-alt-del was pressed and ignored"
破壞及修復:
stage1:破壞
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
[root@localhost ~]# hexdump -Cv /dev/sda -n 446
stage1:修復
1.重啟并進入救援模式
2.選擇語言
3.設置網絡選擇NO
4.輸入continue
5.打開shell終端,并切換至根目錄,chroot /mnt/sysimage/
6.錯誤輸出信息可以忽略,看到設設備信息即可。
7.就此stage1已經修復完成,重啟即可完成。
stage1_5:破壞
dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1
stage1_5:修復
1.重啟系統
2.光盤啟動,進入救援模式。
3.使用grub工具修復引導文件,修復完成,直接重啟即可。
boot:破壞,直接刪除boot目錄
boot:修復
1.刪除boot目錄下全部文件并重啟
[root@localhost ~]# rm -rf /boot/*
2.重啟并進入救援模式
3.進入根目錄,掛載鏡像
4.重新安裝kernel
5.修復引導文件
6.編輯/etc/grub.conf配置文件
7.修復完成,重啟即可。
boot:破壞
[root@localhost ~]# rm -rf /boot/*
fstab:破壞
[root@localhost ~]# rm -rf /etc/fstab
引導修復,fstab文件修復。
1.重啟并進入救援模式。
2.我們會發現系統檢測不到根目錄,因為我們把/etc/fstab刪除了
3.查看邏輯卷,并激活邏輯卷,默認關閉狀態
4.掛載根目錄。
5.新建/etc/fstab并寫入掛載信息,重啟進入救援模式,讓系統自動檢測。
6.這里我們發現系統已經檢測到了路徑/etc/sysimage
7.重新進入根目錄,掛載鏡像文件。
8.重新安裝kernel,并修復引導文件
9.編輯/etc/group引導文件
10.到這一步已經修復完成了,直接重啟即可正常進入系統。
原創文章,作者:鬧鐘哥,如若轉載,請注明出處:http://www.www58058.com/46282