- 論壇徽章:
- 0
|
在使用linux過程中經(jīng)常碰到Linux啟動直接進入GRUB界面但沒有啟動選單(只剩下一個“grub>”提示符)的狀況,這時就認定系統(tǒng)已經(jīng)沒救,開始重新安裝,甚至包括一些接觸Linux已久的人也是如此。其實出現(xiàn)此種狀況,只要了解Linux系統(tǒng)引導過程中GRUB的作用以及工作流程,就非常容易解決。
Linux系統(tǒng)在啟動過程中,首先是硬件(PC上大多是CMOS/BIOS)的物理檢測,諸如檢測系統(tǒng)的顯卡、CPU和硬盤等,可從系統(tǒng)按下電源后看到此檢測信息;檢測無問題,將讀取硬盤的MBR(主引導分區(qū))中的引導程序,Linux中常用的引程序如LILO和GRUB。引導程序GRUB在系統(tǒng)啟動期間只有一個作用,就是載入內(nèi)核;內(nèi)核在引導期間有兩個主要的作用,一個是驅(qū)動系統(tǒng)硬件,另一個將啟動系統(tǒng)進程init;init進程將讀取其配置文件/etc/inittab完成后續(xù)所有的引導。
所以其實GRUB在引導期間只有一個最重要的作用,就是載入系統(tǒng)內(nèi)核。那么GRUB在引導期間到底是如何執(zhí)行引導的呢?讓我們來看以下的GRUB配置文件/boot/grub/grub.conf(一定要注意/etc/grub.conf只是此文件的一個軟鏈接)片斷示例:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-53.el5PAE)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5PAE ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-53.el5PAE.img
此段是加載GRUB的最重要的設置段,其中“title”段指定了GRUB引導界面系統(tǒng)的標題;“root”段指定了/boot分區(qū)所在的位置;“kernel”段指定了內(nèi)核所在位置(vmlinuz-2.6.18-53.el5PAE ro root=LABEL=/ rhgb quiet),內(nèi)核加載時權限屬性為只讀(“ro”),以及指定根分區(qū)所在位置(root=LABEL=/);initrd指定了Linux鏡像文件所在位置。
當Linux系統(tǒng)中GRUB配置文件/boot/grub/grub.conf內(nèi)容修改錯誤或損壞時,系統(tǒng)啟動后會自動進入GRUB命令行模式(“grub>”),最常見的原因無外乎兩個,一是GRUB配置文件中此三段修改錯誤;二是GRUB配置文件丟失。(還有少數(shù)原因,如內(nèi)核文件或鏡像文件損壞、丟失,/boot目錄誤刪除等)此時可以使用如下幾種方法進行恢復。
存在GRUB配置文件備份
如果存在GRUB配置文件備份,那么比較省事的辦法就是對其進行備份恢復,可以按如下方法進行:
◆ 把安裝盤的第一張放到光驅(qū),然后重新啟動機器,在BOIS中設定系統(tǒng)用光驅(qū)引導;
◆ 等安裝界面出來后,按F2鍵(不同Linux版本此快捷鍵可能稍有不同,如即時Linux是按F5鍵盤),進入進入模式列表的界面,輸入“l(fā)inux rescue”,進入Linux維護模式;
◆ 一系列鍵盤以及幾項簡單的配制(如設置鍵盤等),這里不多做介紹,然后會出現(xiàn)如下字符:
桌面應用
sh#
此時就可以在此命令行下執(zhí)行操作了:
sh#cp /backup/grub.conf.bak /mnt/sysimage/boot/grub/grub.conf
或者 dd if=/dev/hda of=/root/mbr bs=512 count=1(要在linux下恢復mbr,必須得備份mbr再用dd寫才可以)
假設備份文件為/backup/grub.conf.bak ,因絕大多數(shù)Linux光盤修復模式中會將硬盤系統(tǒng)的“/”分區(qū)chroot到“/mnt/sysimage”處(在之前的配制中可以看到提示),所以拷貝的目標為“/mnt/sysimage/boot/grub/grub.conf”而非“/boot/grub/grub.conf”
◆ 退出此模式,重啟即可。
內(nèi)核文件、鏡像文件、/boot目錄等文件損害或丟失,也可以使用此種方法修復。
如果沒有GRUB配置文件備份
如果沒有備份GRUB配置文件,或者想通過此試驗更多了解GRUB的引導過程,可以利用GRUB強大的交互功能,采用如下方法:
在“grub>”命令行下可以進行如下操作:
◆ 查找/boot/grub/grub.conf分區(qū)所在目錄可用如下命令:
grub> find /boot/grub/grub.conf (hd0,5)
需要注意的是,將得到grub.conf配置文件所在系統(tǒng)的分區(qū),(hd0,5)即表示它在分區(qū)hda6。
◆ 查看grub.conf文件錯誤可用如下命令:
GRUB>cat (hd0,5)/boot/grub/grub.conf
需要注意的是,可以查看到配置文件到底什么地方出現(xiàn)了錯誤,以便進入后修改。
◆ 指定/boot分區(qū)可用如下命令:
root (hd0,5)
需要注意的是,從此步驟開始,即為本文前面所提到的GRUB配置文件中的主要引導步驟,只是一般都是系統(tǒng)讀取GRUB配置文件引導,出現(xiàn)問題時我們可以手工指定引導。
◆ 指定內(nèi)核加載可用如下命令:
kernel /boot/vmlinuz ro root=LABEL=/
◆ 指定鏡像文件所在位置可用如下命令:
initrd /initrd-2.6.18-53.el5PAE.img
◆ 從/boot分區(qū)啟動可用如下命令:
boot (hd0,5)
此時,即可正常啟動,實際上,以上步驟就是執(zhí)行了GRUB引導期間加載grub.conf文件的步驟,當系統(tǒng)正常引導后將GRUB配置文件修改正確后即可。以上這個方法也可以用于測試新編譯的內(nèi)核。對此故障排除的了解可以加深對GRUB引導以及Linxu系統(tǒng)引導的了解。
此外,還有一種情況是在安裝Windwos時,把GRUB從MBR上清除,啟動后根本連GRUB的影子都看不到。如出現(xiàn)此問題,可以進入Linux維護模式,執(zhí)行如下命令:
sh#grub-install /dev/sda
之后退出重新啟動系統(tǒng)即可
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/78491/showart_1166142.html |
|