對于運維人員來說,想要熟練掌握linux,那么久要對linux的啟動流程有一個詳細的了解,而今天我們就一起來學習一下linux啟動中最重要的一個階段——GRUB引導階段。
Linux啟動流程
grup: GRand Unified Bootloader
由上圖可知,grub屬于系統啟動過程中一個必須的階段。而這個階段又分為了三個小的階段,分別是stage1,stage1.5,stage2。
stage1: mbr 磁盤的前446字節
>這個內容被破壞會自動進入光盤啟動界面,因為機器認為沒有了硬盤啟動功能
stage1_5: mbr之后的扇區512字節后的內容,讓stage1中的bootloader 能識別stage2所在的分區上的文件系統
>這個內容被破壞系統讀條會黑屏,不會自動出現光盤引導。因為1階段已經啟動,機器認為可以在硬盤啟動,但是讀入硬盤后無法通過1.5階段進入2階段
stage2:在磁盤的boot分區中(/boot/grub/grup.conf),
>只是grub.conf文件損壞,出現grub>提示符。grub目錄如果被誤刪,會出現error15,并且黑屏,無法啟動
grub的命令行接口
在系統啟動的內核選擇界面,可以選擇進入命令行接口。
>解釋:
>e:進入編輯模式 編輯菜單 可通過這個模式進入單用戶
>a:修改內核參數 例如關閉selinux
>c:進入grub命令行模式 交互式接口
grub的stage2配置文件
grub第二階段的是三個階段中唯一可以直接以可讀文件形式展現給我們的階段。它最重要的配置文件就是/boot/grub/grub.conf <– /etc/grub.conf(后面這個是軟連接)。如下圖:
對配置文件的解釋:
注釋:
這個文件是由安裝向導anaconda生成的。對該文件進行修改后,不需要重復運行,因為或者文件是開機自動讀取的。注意:若你有一個boot目錄的獨立分區,這意味著所有的內核和偽根路徑都是相對于這個boot目錄的路徑來設置的。
這里的/代表的不是我們操作系統的根,因為root(hd0,0)表示的是指的我們的第一磁盤的第一分區,也就是boot所在分區,他們以boot為根(就算不寫root(hd0,0)也可以,因為默認就是這個)。因此可以寫成以下格式:
root (hd0,0)
kernel /vmlinuz-version ro root=/dev/sda2
initrd /initrd-[generic-]version.img
但如果/boot不是一個獨立分區,而是在根這個分區中,則需要加上/boot的路徑,如:
kernel /boot/vmlinuz-version ro root=/dev/sda2
initrd /boot/initrd-[generic-]version.img
內容:
default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始。因為可以配置多個內核,所以有多個系統可供選擇。
timeout=#:指定菜單項等待選項選擇的時長 ,如果不寫,需要手動敲回車才能進入系統。
splashimage=(hd#,#)/PATH/XPM_FILE:菜單背景圖片文件路徑 ,這個是可以更改的。選擇內核時的背景圖片。這個是可以更改的,但是有格式要求。
hiddenmenu:隱藏菜單 ,寫了這個就不會出現自動出現系統選擇界面,而需要敲任意鍵才會出現。
password [–md5] STRING: 啟動菜單編輯認證 。可以在這個項目增加密碼,這樣可以讓用戶只有輸入密碼才能進入內核編輯界面,而且可以對密碼進行加密。
title TITLE:定義菜單項“標題”, 可出現多次 ,這個比較隨意。
root (hd#,#):hd#: 磁盤編號,用數字表示;從0開始編號 #: 分區編號,用數字表示; 從0開始編號 (hd0,0)表示根在 第一塊硬盤,第一個分區 查找stage2及kernel文件所在設備分區
kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核 。在起后面有很多內容都是內核參數,都是內核中的默認功能,可以進行修改或關閉。后面有一項rhgb是開啟啟動動畫(轉圈圈那個-.-),開啟的話會不顯示啟動的各種字符的過程,不利于排錯,建議刪除關閉。有一項是quit默認隱藏內核啟動過程,可以刪除讓其關閉??梢杂胏at /proc/cmdline來查看開啟了那些內核參數。在/grub.conf文件中也可以看到。
ro root=UUID=a6c8e0e3-2fa0-4e9f-bd90-4 指定根的目錄。是內核的一個參數
initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件
password [–md5|–encrypted ] STRING: 啟動選定的內核或操作 系統時進行認證 在這個條目增加密碼
grub的安裝和修復命令
grub是一個命令,有著自己的語法結構,如下圖:
通過grub.conf文件為linux加密
為進入編輯模式進行加密
通過編輯模式可以進入單用戶模式,直接修改root口令,因此可以通過對進入單用戶模式加密,從而增強linux的安全性。
進入到系統選擇畫面,可以看到已經沒有了常用的e選項,只剩下了p選項
輸入p后需要輸入密碼才能進入編輯模式,而這個密碼就是我們在grub.conf文件中寫入哪個密碼。
為加載linux系統進行加密
對于是否讓系統啟動,我們也可以有權進行管理。通過下圖的方法,我們可以對系統啟動進行密碼保護,更加加強了linux的保密性。
這個加載在救援模式之后,系統啟動之前
利用加密算法設置口令
上面兩個密碼的設置都是明文,如果別人在開機后查看grub.conf文件是可以看到的。因此可以同過加密算法來設置口令。
例如:通過md5加密
進入vim的命令模式輸入 grub-md5-crypt
password –md5 加密口令
例如:通過sha算法加密
進入vim的命令模式輸入grub-crypt 輸入兩邊口令自動加密,并將加密結果寫入 password –encrypted 加密口令
>如果上面的口令全部忘記,可以通過救援模式,直接修改文件即可。
因此可以看出,只要物理能接觸服務器或者主機,所有的保密將不復存在。
修改背景菜單圖片
對于我們的linux內核選擇界面的背景圖片,我們也可以自己進行設置,將圖片jpg,png格式都可以。具體方法如下:
將圖片在linux中進行處理,使用工具convert。包為ImageMagick。
格式處理:convert -resize 640×480 -colors 14 picturename.jpg picturename.xpm
進行壓縮:gzip picturename.xpm
移動到/boot/grub目錄: mv picturename.xpm.gz /boot/grub
修改配置文件,指定路徑 splashimage=(hd0,0)/grub/picturename.xpm.gz
原創文章,作者:OscaoChaser,如若轉載,請注明出處:http://www.www58058.com/86018