執(zhí)手麥田的咖啡空間  
          專注于Java的學習研究
          公告
          • 于喧鬧網(wǎng)界之中,尋一處僻靜之所,與三二好友,品程序、論思想,其樂何融融!
            執(zhí)手麥田的咖啡館——在這里關(guān)注JAVA的學習研究
          日歷
          <2007年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          留言簿(2)

          隨筆分類(13)

          隨筆檔案(13)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          目錄
          1、GRUB 基礎(chǔ)

          2、命名習慣

          3、安裝 GRUB

          4、GRUB 接口

          5、GRUB 常用命令

          6、保護 GRUB 設(shè)置

          7、GRUB 和 stage 文件

          8、GRUB 常見錯誤信息

          9、制作 GRUB 引導軟盤

          10、使用 GRUB 通過網(wǎng)絡(luò)引導操作系統(tǒng)

          11、把配置文件嵌入到 GRUB 中

          12、總結(jié)

          13、個人建議



          一、GRUB 基礎(chǔ)

          1.1 GRUB 簡介

          “boot loader”是計算機啟動后第一個運行的軟件。它負責加載一個操作系統(tǒng)的內(nèi)核,并把控制權(quán)交給內(nèi)核。內(nèi)核則負責剩下的初始過程。

          GRUB 一個很重要的特色就是靈活性;GRUB 可以識別文件系統(tǒng)和二進制格式的內(nèi)核,所以你可以加載任何操作系統(tǒng),而不需要記錄內(nèi)核在

          磁盤上的物理位置。

          1.2 GRUB 的現(xiàn)狀

          我不打算介紹 GRUB 的發(fā)展歷史,有興趣的朋友可以自己到官方站點或者執(zhí)行 info grub 自行獲取信息。我們著眼于 GRUB 當前的現(xiàn)狀。

          目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本號是 0.9x 以及之前的版本都稱為 GRUB Legacy ,從 1.x 開始的就稱為 GRUB 2。目前

          GRUB Legacy 已經(jīng)停止開發(fā)了,只是出于一個 bug fix 的狀態(tài),不再增加新的功能了,所有的開發(fā)都轉(zhuǎn)移到 GURB 2 之上了。

          1.3 GRUB Legacy 和 GRUB 2

          GRUB 2 是源自于一個名為 PUPA 的項目,目的是建立下一代的 boot loader。GRUB 2 幾乎是從零開始開始開發(fā)的,它和 GRUB Legacy 不

          同的地方有很多,例如支持 scripts、國際化語言、動態(tài)加載模塊、帶有 resuce 模式等等,這些都是 GRUB Legacy 所沒有的。

          下面是 GRUB2 新特性的介紹 :(原文請參http://www.gnu.org/software/grub/grub-2.en.html

          a)支持腳本語言,例如條件判斷,循環(huán)、變量和函數(shù)

          b)圖形接口

          c)在運行時動態(tài)加載需要的模塊,而不是在 biuld 的時候指定加入那些模塊(靜態(tài))

          d)可以移植到不同的架構(gòu)上

          e)國際化語言。包括支持非ASCII的字符集和類似 gettext 的消息分類,字體,圖形控制臺等等。

          f)實際內(nèi)存管理。使得 GNU GRUB 更加具有可擴展性

          g)針對文件系統(tǒng)、文件、設(shè)備、驅(qū)動、終端、命令、分區(qū)表、 os loder 的模塊化、層次化、基于對象的框架

          h)跨平臺的安裝,允許從另外一個架構(gòu)上安裝 GRUB

          i)支持 rescue 模式,可用于系統(tǒng)無法引導的情況。stage 1.5 被取消了

          j)修復 GRUB Legacy 設(shè)計上的錯誤,同時又保持向后的兼容性。

          1.4 Multiboot 規(guī)范

          Multiboot 規(guī)范是在 boot loader 和 kernel 之間的一個協(xié)議,用于統(tǒng)一各種引導操作系統(tǒng)的方法。Linux 和 BSD 目前并不支持該規(guī)范。

          1.5 可用資源

          GRUB 的 homepage http://www.gnu.org/software/grub/grub-legacy-faq.en.html

          info grub

          1.6 舊版 GRUB(GRUB Legacy)的功能特色

          a)識別多種可執(zhí)行格式,支持 “a.out” , ELF, symbol tables)

          b)支持 non-Multiboot 內(nèi)核。主要是FreeBSD、NetBSD、OpenBSD、Linux。

          c)支持加載多個模塊

          d)支持配置文件

          e)提供菜單接口。菜單項的數(shù)量并沒有限制,目前版本支持數(shù)百個菜單條目

          f)有一個靈活的命令行接口。如果沒有配置文件存在,GRUB 會自動進入命令模式

          g)支持多種文件系統(tǒng)格式。主要有BSD FFS”、“DOS FAT 16 、FAT32”,“Minix fs”、ext2/ext3、ReiserFS 、jfs、xfs、VSTa fs

          h)支持自動解壓

          i)能夠訪問任何已經(jīng)安裝的設(shè)備上的數(shù)據(jù)

          j)Be independent of drive geometry translations (這個不知道怎么翻譯好)
          Unlike many other boot loaders, GRUB makes the particular drive
          translation irrelevant. A drive installed and running with one
          translation may be converted to another translation without any
          adverse effects or changes in GRUB's configuration.

          k)檢測所有已經(jīng)安裝的 RAM

          l)支持 LBA 模式。在傳統(tǒng)的磁盤調(diào)用(稱為 CHS 模式),存在一個限制 :就是 BIOS 無法訪問在 1024 柱面。之后的內(nèi)容,所以 BIOS

          只能訪問最小 508 MB ,最大8GB 的空間。(這也就是 /boot 分區(qū)必須在 1024 柱面之前的原因)。GRUB 并不能解決全部問題,因為

          并沒有統(tǒng)一的解決方法,不過 GRUB 可以檢測是否支持 LBA 模式,如果支持則使用 LBA 模式。

          m)支持網(wǎng)絡(luò)引導,可以使用 TFTP 協(xié)議通過網(wǎng)絡(luò)加載內(nèi)核

          n)支持遠程終端,目前只支持串口



          二、命名習慣

          首先 GRUB 要求設(shè)備名被括在一個 ( ) 中。fd表示軟盤,hd 表示硬盤(不區(qū)分 IDE 還是 SCSI)。其次設(shè)備是從 0 開始編號,分區(qū)也是如此,

          分區(qū)和設(shè)備之間用一個 ‘,’ 分開。下面給出幾個例子 :

          (fd0) :表示整個軟盤

          (hd0,1) :表示 BIOS 中的第一個硬盤的第2個分區(qū)

          (hd0,0)/boot/vmlinuz :表示 BIOS 中的第一個硬盤的第一個分區(qū)下的 boot/ 目錄下的vmlinuz 文件。

          如果沒有指定某個分區(qū),則表示使用整個設(shè)備,否則只使用指定的分區(qū)。


          三、安裝 GRUB

          3.1 下載 tarball

          有兩種方法,一種是 rpm ;一種是 tarball 。rpm 沒有什么好說的,只是 rpm –Uvh 就可以了。不過一般不會啟用網(wǎng)絡(luò)引導功能,

          所以我們決定采用 tarball 的方式安裝。 首先到下面的地址下載 tarball ftp://alpha.gnu.org/gnu/grub

          上面有 GRUB Legacy 和 GRUB 2 ,就選擇目前 RHEL AS4 用的 0.95 版本做實驗。

          不過在安裝之前先要用 rpm –q grub 檢查一下 grub 是否安裝了。如果是的話,用 rpm –e grub 刪除,即使你在安裝時指定不安裝

          boot loader ,安裝程序還是會安裝 grub rpm 包的。

          3.2 安裝需求

          INSTALL 文件中給出了 build 所需要的軟件包條件 :

          GCC :當前版本的 GCC 應該也可以用,不過還是建議用 2.95 或者以上版本的 GCC

          GNU Make :生成 Makefiles 所用

          GNU binutils 2.9.1.0.23 或者個更高版本

          如果你想自己開發(fā) GRUB ,還需要 Texinfo 4.0 或者更高 ,同時還有GNU Autoconf 2.5x ,GNU Automake 1.7 或者更高頒布。

          3.3 參數(shù)介紹

          下面我們介紹幾個 configure 過程中可能用到的選項,要完整的選項列表,可以參看 INSTALL 文件和 netboot/README.netboot 文件.

          a)--enable-preset-menu=FILE :默認情況下 grub.conf 和 stage2 文件是分離的,使用該選項,可以直接把配置文件嵌入到 stage2 中,

          這樣啟動時可以立即獲得配置文件。對于一些嵌入式的系統(tǒng)來說比較有用,又或者在前面提到的沒有顯示器/鍵盤的主機有用,因為在切

          換顯示輸出到你的筆記本之前,你是看不到啟動的畫面的,所以執(zhí)行切換顯示操作也是在看不到輸出的情況下進行的(切換顯示之后就不會了)。

          通過這個選項你可以在 中指定啟動時立即把顯示輸出切換到你的筆記本上了。

          b)--enable-diskless :如果使用了該選項,你會得到額外的兩個文件,nbgrub 和 pxegrub。接下來你需要指定網(wǎng)卡的驅(qū)動程序,

          netboot/ 目錄下有較常見的幾種 ,可以看到幾種網(wǎng)卡可以合用一個驅(qū)動。常見的有 :


          [Copy to clipboard]CODE:
          Intel Etherexpress Pro/100
          --enable-eepro100

          Novell NE2100 and NE1500
          --enable-ne2100

          Realtek 8139
          SMC 1211
          D-Link DFE530TX+ and DFE538TX
          --enable-rtl8139


          3Com90x
          --enable-3c90x

          如果你不想那么麻煩,則按照下面的過程進行 :


          [Copy to clipboard]CODE:
          ./configure
          make
          make install

          安裝結(jié)束。默認命令會放在 /usr/local/bin 和 /usrlocal/sbin 下。Stage 文件則放在 /usr/local/share/grub/i386-pc/ 目錄下。

          3.4 安裝之后的操作

          a)把 /usr/local/share/grub/i386-pc/ 目錄下的所有文件統(tǒng)統(tǒng)拷貝到 /boot/grub/ 目錄下。

          b)接下來是創(chuàng)建 grub.conf ,并在 /boot/grub/ 目錄下建立一個 menu.lst ,指向 grub.conf。

          c)注意,這個 symbol link 在 Redhat 9 是必需的,否則啟動時會直接進入命令模式,即使已經(jīng)存在 grub.conf ;但在 RHEL AS4 下卻不是。

          d)確認 /usr/local/sbin 和 /usr/local/bin 在 PATH 變量的值中。

          e)執(zhí)行 grub-install /dev/hda1 把 stage1 寫入到 /boot 分區(qū)的引導扇區(qū)。

          也可以執(zhí)行 grub 進入 grub shell ,然后通過 root 和 setup 命令來安裝 stage1 。

          f)重啟機器,安裝過程到此結(jié)束。
          posted on 2007-05-16 20:02 執(zhí)手麥田 閱讀(480) 評論(0)  編輯  收藏 所屬分類: 展覽館
           
          Copyright © 執(zhí)手麥田 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 渑池县| 泌阳县| 剑川县| 大渡口区| 三原县| 冕宁县| 拜泉县| 郴州市| 旬阳县| 盐池县| 鲜城| 岫岩| 永德县| 玉树县| 河东区| 定西市| 布拖县| 安宁市| 汝城县| 庄河市| 伊吾县| 京山县| 永嘉县| 永寿县| 兴国县| 天柱县| 高碑店市| 环江| 进贤县| 慈利县| 宕昌县| 拜泉县| 慈溪市| 驻马店市| 曲麻莱县| 肥乡县| 特克斯县| 图们市| 镇平县| 化州市| 远安县|