国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

Linux之grub的運(yùn)行機(jī)制及grub修復(fù)

2024-06-28 16:05:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
理論區(qū):GNU GRUB(GRand Unified Bootloader簡(jiǎn)稱“GRUB”)是一個(gè)來(lái)自GNU項(xiàng)目的多操作系統(tǒng)啟動(dòng)程序。GRUB是多啟動(dòng)規(guī)范的實(shí)現(xiàn),它允許用戶可以在計(jì)算機(jī)內(nèi)同時(shí)擁有多個(gè)操作系統(tǒng),并在計(jì)算機(jī)啟動(dòng)時(shí)選擇希望運(yùn)行的操作系統(tǒng)。GRUB可用于選擇操作系統(tǒng)分區(qū)上的不同內(nèi)核,也可用于向這些內(nèi)核傳遞啟動(dòng)參數(shù)。位于磁盤(pán)的0磁頭(盤(pán)面),0磁道,1扇區(qū)位置,該位置共計(jì)有512Byte,至于前446個(gè)字節(jié)是grub。目前,grub現(xiàn)有兩個(gè)版本,0.x系列被稱為是grub1,也被稱為grub legacy,CentOS5以及CentOS6上用的是0.x系列;1.x系列被稱為是grub2,用于CentOS7;目前CentOS6依舊是企業(yè)及的主流版本,所以這里我們主要討論Grub1的工作機(jī)制。Grub的主要功能便是提供選擇菜單,加載內(nèi)核以及轉(zhuǎn)移控制權(quán),但是我們都知道,mbr中僅有446字節(jié)共mbr供其使用,想要實(shí)現(xiàn)諸多強(qiáng)大的功能這么小的空間是不可能的,所以,grub在CentOS上主要分為三個(gè)步驟,stage1,stage1.5和stage2,突破了傳統(tǒng)446字節(jié)的限制。☆Stage1的作用是啟動(dòng)安裝在MBR中的bootloader主程序,其作用便是指向stage2,引導(dǎo)stage2運(yùn)行;☆Stage1.5作用為讓grub程序能夠識(shí)別grub2所在的分區(qū)。或許你也已經(jīng)發(fā)現(xiàn),在/boot/grub目錄下有諸多以stage1_5結(jié)尾的文件,表示各種文件系統(tǒng)所對(duì)應(yīng)的stage1_5,和stage1文件一樣,能夠讓grub識(shí)別stage2所在分區(qū)的文件不是這些,而是在系統(tǒng)安裝時(shí),早已確定了stage2所在目錄的文件系統(tǒng)格式,并將與之對(duì)應(yīng)的以stage1_5結(jié)尾的文件安裝至MBR之后的62個(gè)扇區(qū)內(nèi)。☆Stage2   作用:a、提供菜單、并提供交互式接口;b、加載用戶選擇的內(nèi)核或操作系統(tǒng),并允許傳遞參數(shù)給內(nèi)核;3、提供菜單保護(hù)機(jī)制,這三項(xiàng)功能在后續(xù)的實(shí)驗(yàn)中將得以體現(xiàn)。首先,我們看一下grub的配置文件,其位于/boot/grub/grub.conf,或/etc/grub.conf鏈接文件:
1234567891011[iyunv@www ~]#cat /boot/grub/grub.conf# 注釋信息省略default=0   #設(shè)定默認(rèn)引導(dǎo)的內(nèi)核項(xiàng),以title排序,第一個(gè)title為第0項(xiàng),第二個(gè)title為第1項(xiàng),以此類推;timeout=5      #表示5秒內(nèi)若不動(dòng)鍵盤(pán),grub將引導(dǎo)默認(rèn)內(nèi)核項(xiàng)splashimage=(hd0,0)/grub/splash.xpm.gz#菜單背景圖片路徑hiddenmenu  #表示隱藏grub菜單,要求用戶操作鍵盤(pán)才顯示菜單,若省略此項(xiàng)表示開(kāi)啟title CentOS 6 (2.6.32-504.el6.x86_64)  #內(nèi)核菜單標(biāo)題       root (hd0,0)  ##內(nèi)核所在分區(qū),特別注意,此處不是表示根分區(qū)的意思       kernel /vmlinuz-2.6.32-504.el6.x86_64 roroot=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root  KEYBOARDTYPE=pc KEYTABLE=us rhgbcrashkernel=auto quiet rhgb quiet        ##內(nèi)核名稱及傳遞給內(nèi)核的參數(shù)       initrd/initramfs-2.6.32-504.el6.x86_64.img    #ramdisk名稱,版本號(hào)及發(fā)行版本號(hào)必須與內(nèi)核一致
##特別注意的是,這里的root是Kernel所在的分區(qū),并且分區(qū)標(biāo)識(shí)和開(kāi)機(jī)后的硬盤(pán)及分區(qū)標(biāo)識(shí)不一樣,對(duì)于grub而言,沒(méi)有硬盤(pán)接口類型之分,對(duì)其來(lái)講,一切硬盤(pán)全部是以hd標(biāo)識(shí),而第一個(gè)0標(biāo)識(shí)第一塊硬盤(pán),第二個(gè)0表示第一個(gè)分區(qū)編號(hào)。如果kernel在第二塊硬盤(pán)上的第3個(gè)分區(qū)上,則表示為(hd1,2),小括號(hào)也不可省略!實(shí)驗(yàn)區(qū):A進(jìn)入單用戶模式的操作:接下來(lái)我們看下開(kāi)機(jī)時(shí)grub的顯示菜單: 開(kāi)機(jī)默認(rèn)顯示這個(gè)界面,默認(rèn)5秒內(nèi)按下鍵盤(pán)任意鍵,便會(huì)出現(xiàn)如下界面: 上圖所示可知,grub配置文件中的title便是在這里顯示的白色區(qū)域標(biāo)題,根據(jù)方框下部的提示可知,e鍵可編輯此內(nèi)容,c鍵可進(jìn)入交互式模式,a鍵可添加參數(shù)傳遞給內(nèi)核,b鍵啟動(dòng),我們按e鍵看看效果: 此時(shí),我們選中kernel項(xiàng),并在此按e鍵,便可編輯內(nèi)核添加參數(shù)傳遞給內(nèi)核,如果我們的root密碼忘記了,或者是系統(tǒng)異常無(wú)法進(jìn)入系統(tǒng),此處我們可以編輯內(nèi)核,在內(nèi)核尾部添加1或者是s或者是single進(jìn)入單用戶模式,如下: 而后按回車鍵,接著按b鍵,便可進(jìn)入單用戶模式        上面我們提到過(guò),grub提供了菜單加密功能,為了演示效果,我編輯一下grub.conf文件,添加一個(gè)title,并添加密碼項(xiàng):       若想給菜單添加密碼,需要使用passWord關(guān)鍵字,可以對(duì)編輯加密,也可以對(duì)指定內(nèi)核啟動(dòng)加密,加密可以是明文,但是安全起見(jiàn),密文密碼比較好,并且grub也提供了密碼生成工具,具體配置如下圖:
1234[iyunv@www ~]#grub-md5-crypt   ##交互式MD5密碼生成器Password:    ##在此輸入你想加密的密碼Retype password:     ##重復(fù)輸入密碼$1$BjkaP$JgcdSQ8V.ZMeM.VXpTFb9/  #將此處生成的字符串粘貼到password后面即可
 現(xiàn)在我們重啟進(jìn)入grub菜單: 提示需要按p鍵輸入密碼才能繼續(xù)往后的設(shè)置,并且,新添加的標(biāo)題也成功顯示了。我們鍵入p鍵: 輸入密碼后,便可以對(duì)選中的內(nèi)核進(jìn)行編輯了。由于我們給下面的標(biāo)題添加了password項(xiàng),表示啟動(dòng)該內(nèi)核,也需要輸入相應(yīng)的密碼,選中test-title回車出現(xiàn)如下所示: 只有輸入密碼才能啟動(dòng)該內(nèi)核。grub修復(fù)第一種場(chǎng)景:磁盤(pán)無(wú)grub,通過(guò)其他方式啟動(dòng)的系統(tǒng),或正常啟動(dòng)后不小心損壞了系統(tǒng)磁盤(pán)的mbr中的前446字節(jié):第一種方法:
123456789101112131415[iyunv@www ~]# dd if=/dev/zero of=/dev/sdabs=200 count=1     ##我將磁盤(pán)開(kāi)頭的200byte用0全部覆蓋,即當(dāng)前我的bootloader已被破壞1+0 records in1+0 records out200 bytes (200 B) copied, 0.00829572 s,24.1 kB/s此時(shí),在不重啟系統(tǒng)的情況下,對(duì)grub進(jìn)行修復(fù)[iyunv@www ~]# grub-install--root-directory=/ /dev/sda##這里的—root-directory=/表示可以在磁盤(pán)上找到/boot目錄的位置Installation finished. No error reported.This is the contents of the device map//boot/grub/device.map.Check if this is correct or not. If any ofthe lines is incorrect,fix it and re-run the script`grub-install'.  # this device map was generated by anaconda(hd0)    /dev/sda
修復(fù)成功。重啟后,便可以正常引導(dǎo)開(kāi)機(jī)。第二種方法:進(jìn)入grub模式進(jìn)行修復(fù)前提:/boot目錄得實(shí)現(xiàn)存在,并且stage文件都完好
12345678910111213141516171819202122[iyunv@www ~]# grub    ##進(jìn)入grub交互式界面PRobing devices to guess BIOS drives. Thismay take a long time.       GNU GRUB  version 0.97  (640K lower / 3072K upper memory)  [Minimal BASH-like line editing is supported. For the first word, TAB  lists possible command completions. Anywhere else TAB lists the possible  completions of a device/filename.]grub> root (hd0,0)  root (hd0,0)      ##指定boot分區(qū)所在位置,和grub.conf中的意義一樣Filesystem type is ext2fs, partition type 0x83grub> setup (hd0)       ##指明將grub安裝到那塊磁盤(pán)上setup (hd0)Checking if "/boot/grub/stage1"exists... noChecking if "/grub/stage1" exists...yesCheckingif "/grub/stage2" exists... yesChecking if "/grub/e2fs_stage1_5"exists... yesRunning "embed /grub/e2fs_stage1_5(hd0)"...  27 sectors are embedded.succeededRunning "install /grub/stage1 (hd0)(hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeededDone.
修復(fù)成功,重啟便可正常引導(dǎo)開(kāi)機(jī)。若grub損壞,沒(méi)有進(jìn)行修復(fù),便重啟了,便會(huì)發(fā)生如下悲劇,無(wú)法開(kāi)機(jī): 此時(shí),需進(jìn)入linux的緊急救援模式,使用U盤(pán)鏡像或光盤(pán)鏡像引導(dǎo)開(kāi)機(jī): 物理機(jī)可忽略上一步操作;接下來(lái),設(shè)置BIOS開(kāi)機(jī)啟動(dòng)順序,使用將光盤(pán)啟動(dòng)調(diào)整到靠前位置,若usb鏡像,需將usb調(diào)至靠前:虛擬機(jī)開(kāi)機(jī)按F2: 按F10保存并重啟主機(jī):進(jìn)入如下界面 或者進(jìn)入上述界面,按Esc鍵,進(jìn)入命令行模式輸入:linux rescue并回車 然后一路ok,直到詢問(wèn)是否開(kāi)啟網(wǎng)絡(luò)服務(wù),若你修復(fù)的時(shí)候需要網(wǎng)絡(luò)功能,便選擇開(kāi)啟,只單純修復(fù)grub便可不開(kāi)啟: 接下來(lái): 引導(dǎo)程序會(huì)檢索磁盤(pán)是否有安裝過(guò)的系統(tǒng)分區(qū),并掛載到/mnt/sysimage目錄下,選擇continue, 系統(tǒng)已被找到,并掛載成功,ok繼續(xù); 選擇啟動(dòng)shell:  進(jìn)入grub命令行,便可修復(fù)。此時(shí),將光盤(pán)移除,重啟便可正常引導(dǎo)系統(tǒng)。第二種情形:開(kāi)機(jī)時(shí),只顯示grub> ,并無(wú)法正常引導(dǎo)開(kāi)機(jī): 此種情況為grub配置文件丟失,需手動(dòng)引導(dǎo)開(kāi)機(jī)后重建grub配置文件。操作如下: 使用find命令,搜索第一塊磁盤(pán)第一個(gè)分區(qū)是否有內(nèi)核文件,find (hd0,0)/vm按Tab鍵,如果自動(dòng)補(bǔ)全表示內(nèi)核在第一塊磁盤(pán)的第一個(gè)分區(qū)上,接著進(jìn)行如下操作 之后,便可正常開(kāi)機(jī),進(jìn)入系統(tǒng)后重建grub配置文件便可。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜城县| 凤山市| 霍林郭勒市| 江津市| 宜州市| 子洲县| 开阳县| 高陵县| 安乡县| 潞西市| 湾仔区| 定兴县| 文成县| 周宁县| 理塘县| 罗平县| 宁波市| 桐乡市| 新建县| 洪泽县| 平塘县| 搜索| 泸州市| 贡觉县| 时尚| 泾源县| 南宁市| 正定县| 屯昌县| 隆林| 新巴尔虎右旗| 郴州市| 江陵县| 武隆县| 乐亭县| 周宁县| 焉耆| 思南县| 武城县| 丰台区| 玉山县|