談grub之前,先說下作業系統啟動順序:
開機自檢(post)----> bios——>boot loader--->kerenl(initrd)--->init
grub是一個引導程式,功能強大。然而衆所周知,目前的機械硬碟有一個特殊扇區,稱之為mbr(master boot record)。一個扇區也就512byte,在512byte中,有64byte是給gpt(guid patition table),boot loader也隻能占446byte。是以446byte給grub是不夠用。既然此時硬體是沒有辦法改變,隻能改變軟體。
grub程式為成兩部分,一部分安裝在mbr中,一部分安裝硬碟上。一般來說grub的配置檔案之類都放在/boot/grub/這個目錄。安裝的mbr中的為stage1,當stage1有問題時,會無法引導系統。此時用安裝CD光牒進入緊急救援模式,重新安裝grub或者從/usr/share/grub/i386-redhat/下就stage1複制到/boot/grub/目錄下。重新安裝grub-install --root-directory=/(表示根目錄) /dev/sda(表示安裝在哪個裝置上)。
打開grub配置檔案/boot/grub/grub.conf,帶#号的表示注釋行。下面介紹每個字段的意義:
(1)default=0 表示預設選擇是啟動第一個作業系統,grub可以引導多個作業系統。
(2)timeout=5 表示等待使用者選擇的時間,如果在這個5秒沒有做出選擇,将會啟動預設的作業系統。
(3)splashimage=(hd0,0)/grub/splash.xpm.gz 表示啟動作業系統之前的背景圖檔,(hd0,0)/grub/splash.xpm.gz表示背景圖檔所在位置。在grub中,所有接口的硬碟都被識别成hd的格式,而hd0,表示第一個被識别的硬碟,而後面的0表示第一個被識别的硬碟的第一個分區。grub磁盤和分區的辨別都是從0開始。
(4)hiddenmenu表示隐藏下面的title開頭的内容。
(5)title表示選擇時作業系統的所顯示的标題,在title上面的内容屬于全局設定,對整體都有效,而title下面隻對目前title的設定生效。
(6)root (hd0,0)表示kernel所在的分區
(7)kernel /vmlinuz-2.6.18-308.el5表示啟動這個核心,且以隻讀的方式挂載根目錄root=/dev/sda2表示根目錄,
rhgb表示redhat graphics boot,就是會看到圖檔來代替啟動過程中顯示的文本資訊
quiet表示在啟動過程中隻有重要資訊顯示
(8)initrd /initrd-2.6.18-308.el5.img表示當系統不是安裝在IDE這種硬碟時,這是時要驅動硬碟需要initrd....這裡面的驅動程式幫忙。
grub故障這解決
(1)grub.conf裡核心設定錯誤,引導到kernel時停止。
<a href="http://blog.51cto.com/attachment/201206/101215844.jpg" target="_blank"></a>
此時按任意鍵,進入grub編輯模式,按照下面的提示,繼續按e,編輯kernel,kernel的版本号要跟initrd的版本号一樣,将2.6.018這個0删除。确定,按b。
如果kernel和initrd都錯誤,又不知道正确的版本号,則用安裝CD光牒進入救援模式,或者用u盤啟動。在/boot/檢視正确的核心版本号,修改grub.conf,重新開機系統。
當然如果grub.conf設定沒問題且root(hd0,0)也沒問題,但是還是提示找到不檔案,則/boot的kernel與initrd存在問題,此時還是進入救援模式,重裝kernel,rpm -ivh --replacepkgs kernel....rpm
(2)grub.conf被删除,也是沒辦法進入系統
<a href="http://blog.51cto.com/attachment/201206/105239923.jpg" target="_blank"></a>
此時自己指定核心所在的位置,如果忘記核心在哪個分區,則使用下面的檢視kernel所在的分區
help(檢視grub幫助)
cat (檢視(hd0,1)/etc/fstab支援table鍵自動補齊)
find (hd0,0)/vmlinuz..
root(hd0,0)
kernel /vimlinz....
initrd /initrd...
boot
(3)進入單使用者模式修改root密碼,重新開機出現booting redhat enterprise linux server時可以按下任意鍵(enter鍵除外),進入grub編輯模式,選中kernel一行,在下面都有英文提示,繼續按e,後面加個1或者s,S,single,都可以進入單使用者模式。然後執行passwd,完後init 3進入哪個級别
(4)為了防止别人進入單使用者模式,這時在title之前的字段加密碼,先進入系統,grub-->md5crypt 得到一串md5碼,在title上面在增加一行,password --md5 md5密碼串,儲存ok。如果想進入單使用者模式,要先輸密.
本文轉自 deng304749970 51CTO部落格,原文連結:http://blog.51cto.com/damondeng/901991,如需轉載請自行聯系原作者