當(dāng)前位置:首頁文章首頁 IT學(xué)院 IT技術(shù)

高配置grub的方法與其說明

作者:  來源:  發(fā)布時間:2011-5-18 18:17:27  點(diǎn)擊:

  grub的說明與配置方法menu.lst grub.conf

  menu.lst位于/boot/grub/menu.lst,munu.lst相當(dāng)于是/boot/grub/grub.conf在windows下 的快捷方式

  (重裝系統(tǒng)有時破壞GRUB后,menu.lst丟失而無法啟動GRUB菜單時就需要在/boot/grub下建立menu.lst后再和 grub.conf建立鏈接來修復(fù),建立鏈接是:ln -s menu.lst grub.conf (注意兩文件的前后關(guān)系)),我們來學(xué)習(xí)如何編寫GRUB的配置文件menu.lst.

  首先來看一下/boot/grub/menu.lst中的內(nèi)容:

  ==========================================================

  # grub.conf generated by anaconda

  #

  # Note that you do not have to rerun grub after making changes to this file

  # NOTICE: You do not have a /boot partition. This means that

  # all kernel and initrd paths are relative to /, eg.

  # root (hd0,0)

  # kernel /boot/vmlinuz-version ro root=/dev/hda1

  # initrd /boot/initrd-version.img

  #boot=/dev/hda

  default=0

  timeout=5

  splashimage=(hd0,0)/boot/grub/splash.xpm.gz

  hiddenmenu

  title Fedora Core (2.6.18-1.2798.fc6)

   root (hd0,0)

   kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet selinux=0

   initrd /boot/initrd-2.6.18-1.2798.fc6.img

  title Windows XP

  rootnoverify (hd0,3)

  chainloader +1

  ===========================================================

  其中:

  1,default=0

  表示默認(rèn)啟動的第0號的操作系統(tǒng),在GRUB中,title定義了啟動的操作系統(tǒng),從第1個開始,GRUB中是0,而第2個是1,依次類推...

  2,timeout=5

  表示的是出現(xiàn)GRUB界面后,無操作情況下進(jìn)入default設(shè)定的操作系統(tǒng)的時間,如果上下移動選擇,則該選項(xiàng)無效

  3,splashimage=(hd0,6)/boot/grub/splah.xpm.gz

  表示的是允許出現(xiàn)的GRUB背景的path,顯然(hd0,6)指定了分區(qū)(不知能否這么解釋,呵呵),而后邊的則是正常的path(在例子中,用#把它注釋,為一可選項(xiàng))

  4,hiddenmenu

  表示隱藏GRUB的啟動菜單,直接進(jìn)入由default廟宇的操作系統(tǒng)中去,為一可選項(xiàng).

  linux類

  其格式一般為:

  title (......)

  root (hd[0-n],x)

  kernel (......)

  initrd (......)

  其中:

  title行,是定義一個啟動操作系統(tǒng),而后邊可以自己隨便寫上喜歡的名字,呵,當(dāng)然最起碼你得寫得要自己能認(rèn)出來,沒必要把linux寫成windows吧?!

  root行,指定相應(yīng)的linux所有的/boot,如果在寫分區(qū)和掛載時沒有單獨(dú)掛載,那么就和/在同一個分區(qū)中,hd[0-n]表示的是第幾個硬盤,而x則表示的是[第幾個分區(qū)-1],即x比分區(qū)號小1,特別要注意.

  kernel行,在這里以kernel 起始,指定Linux的內(nèi)核的文件所處的絕對路徑(通過在終端輸入命令:ls /boot/vmlinuz*來看內(nèi)核的全名);因?yàn)閮?nèi)核是處在/boot目錄中的,而如果/boot是獨(dú)立的一個分區(qū),則需要把boot省略,因?yàn)?/boot所在的分區(qū)在root (hd[0-n],x)中指定了,所以就無需要再指明內(nèi)核處在哪個分區(qū)了;ro 表示只讀;root=LABEL=/ 來表示Linux的根所處的分區(qū)。LABEL=/ 這是硬盤分區(qū)格式化為相應(yīng)文件系統(tǒng)后所加的標(biāo)簽;如果您不了解什么是標(biāo)簽,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X來表示;就看您的Linux是根分區(qū)是在哪個分區(qū)了。比如我的是在/dev/hda3, 那這里就可以寫成root=/dev/hda3;

  initrd行,如果是/boot獨(dú)立一個分區(qū),initrd 一行要把/boot中省略;如果/boot不是處于一個分區(qū),而是和Linux的/分區(qū)處于同一分區(qū),不應(yīng)該省略;我們通過查看/boot中的 initrd的文件名到底是什么來寫這一行代碼,在終端輸入:ls /boot/initrd*

  很容易能得到initrd文件名,然后寫入.

  在了解了以上情況之后,我們就很容易地理解另一種寫法了:

  title (......)

  kernel (hd[0-n],y)(/boot)...... ro root=......

  initrd (hd[0-n],y)(/boot)......

  其實(shí)只是省略的root很實(shí)在地寫在了kernel和initrd行中去了而已

  附:

  其 實(shí)在GRUB啟動菜單不能工作的時候,進(jìn)入GRUB命令行(可按CTRL+C鍵)后,我們同樣可以一步一步地把系統(tǒng)啟動起來,其實(shí)在menu.lst中, 除title不是指令外,其余的都是GRUB指令,我們只要一步步地輸入它們(錯了要從新開始),中間輸入關(guān)于kernel和 initrd要利用

  TAB鍵補(bǔ)齊寫好,最后只要boot一下就行了.

  用GRUB指令引導(dǎo)windows:

  GRUB> rootnoverify (hd0,0)

  GRUB> chainloader +1

  GRUB> boot

  對于GRUB來說,如果沒有配置menu.lst,無論是Linux版本的GRUB,還是WINGRUB,都會有命令行可用,通過命令行是一樣能把操作系統(tǒng)引導(dǎo)起來的;有些弟兄總以為menu.lst 配置錯了, 或者在機(jī)器啟動后出現(xiàn)grub>命令行模式就要重新安裝系統(tǒng),其實(shí)根本沒有這個必要;只要學(xué)會GRUB的命令行的用法,根本沒有必要重裝系統(tǒng);

  menu.lst 位于/boot/grub目錄中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜歡的編輯器來編輯他;如果您不會用vi,還是去學(xué)習(xí)一下吧;簡單的用法怎么也得會,對不對?畢竟這個文檔不是講vi的用法的;

  有的弟兄會說,我沒有menu.lst怎么辦?那就創(chuàng)建一個;用下面的命令;

  然后我們再做一個/boot/grub/menu.lst 的鏈接 /boot/grub/grub.conf

  [root@localhost ~]# ln -s menu.lst grub.conf

  現(xiàn)在我們來寫GRUB的menu.lst了,因?yàn)?boot/grub/grub.conf是 /boot/grub/menu.lst的鏈接文件,改哪個都行。鏈接文件相當(dāng)于Windows的快捷方式,這樣可能能更好的理解;

  1、menu.lst的寫法之一;

  首先我們看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的內(nèi)容;

   root (hd0,6)

   kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/

   initrd /boot/initrd-2.6.11-1.1369_FC4.img

  title WinXp

   rootnoverify (hd0,0)

   chainloader +1

  注解:隱藏GRUB的啟動菜單,這項(xiàng)也是可選的,也可以用#號注掉;

  一般的情況下對Linux操作系統(tǒng)的啟動,一般要包括四行;title 行;root行;kernel 行;initrd 行;

  1)在menu.lst中 ,通過 root (hd[0-n],y)來指定/boot 所在的分區(qū);

  title XXXXX 注:title 后面加一個空格,title 是小寫的,后面可以自己定義;比如FC4,自己定義一個名字就行;

  root (hd[0-n],y) ,在本例中,我們看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分區(qū);有時我們安裝Linux的時候,大多是不設(shè)置/boot的,這時/boot和/所在的同一個分區(qū); 這個root (hd[0-n],y)很重要,因?yàn)?boot目錄中雖然有g(shù)rub目錄,最為重要的是還有kernel 和initrd文件,這是Linux能啟動起來最為重要東西;

  有的弟兄會問,root (hd[0-n],y)是怎么來的?

  請參考:《在Linux系統(tǒng)中存儲設(shè)備的兩種表示方法》

  2)在menu.lst中,kernel 命令行的寫法;

  kernel 一行,是通指定內(nèi)核及Linux的/分區(qū)所在位置;

  比如例子中是;

  在這里以kernel 起始,指定Linux的內(nèi)核的文件所處的絕對路徑;因?yàn)閮?nèi)核是處在/boot目錄中的, 如果/boot是獨(dú)立的一個分區(qū),則需要把boot省略;如果/boot不是獨(dú)立的分區(qū),這行要寫成:

  因?yàn)?boot所處的分區(qū)已經(jīng)在title 下一行root (hd[0-n],y)中指定了,所以就無需要再指明內(nèi)核處在哪個分區(qū)了;另外Linux系統(tǒng)的硬盤分區(qū)的掛載配置文件在/etc/fstab ,原理是通過 mount /dev/hd[a-z]X /boot 來進(jìn)行的;您可以對照著來理解;

  ro 表示只讀; root=LABEL=/ 來表示Linux的根所處的分區(qū)。LABEL=/ 這是硬盤分區(qū)格式化為相應(yīng)文件系統(tǒng)后所加的標(biāo)簽;如果您不了解什么是標(biāo)簽,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X來表示;就看您的Linux是根分區(qū)是在哪個分區(qū)了。比如我的是在/dev/hda7 , 那這里就可以寫成root=/dev/hda7;

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z