歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 掃盲行動之:GRUB三步通

掃盲行動之:GRUB三步通

日期:2017/2/27 9:39:56   编辑:更多Linux

你裝好Linux後是不是每次啟動後系統就默認進入到linux,想讓它變成windows嗎?請修改你的引導裝入器吧(當然它不止這個功能)!由於現在的linux都喜歡用GRUB來引導,LILO已越來越少用了,所以我在這裡主要給大家講講GRUB這個東東!!     ##################   # GRUB的優點 #   ##################   GRUB 是引導裝入器(boot loader) -- 它負責裝入內核並引導 Linux 系統。GRUB 還可以引導其它操作系統,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT 和 2000。盡管引導操作系統看上去是件平凡且瑣碎的任務,但它實際上很重要。如果引導裝入器不能很好地完成工作或者不具有彈性,那麼就可能鎖住系統,而無法引導計算機。另外,好的引導裝入器可以給您靈活性,讓您可以在計算機上安裝多個操作系統,而不必處理不必要的麻煩。   GRUB 是一個很棒的boot loader。它有許多功能,可以使引導過程變得非常可靠。例如,它可以直接從 FAT、minix、FFS、ext2 或 ReiserFS 分區讀取 Linux 內核。這就意味著無論怎樣它總能找到內核。另外,GRUB 有一個特殊的交互式控制台方式,可以讓您手工裝入內核並選擇引導分區。這個功能是無價的:假設 GRUB 菜單配置不正確,但仍可以引導系統。哦,對了 -- GRUB 還有一個彩色引導菜單。     更令人驚訝的是,這是一個自由軟件!!!         ##################   # GRUB菜單 #   ##################   先來看一個例子,這是位於/boot/grub/目錄下的menu.lst文件。   此文件將在開機是產生一個菜單,包含有Debian linux,Windows2000,RedHat linux和 Mandrake linux,共四個選擇項。我一共分了8個區,一個fat16(0x6),一個ntfs(0x7),三個ext2fs分區(0x83),一個swap分區(0x82)。ntfs用來裝win2000,三個ext2fs裝了三個linux,c盤fat16分區沒有裝任何東西。   #例子由此開始     ######################   # #   # 一個GRUB configure 的例子 #   # #   ######################     timeout 10   default 2       # --> Debian linux <--     title Debian linux   root (hd0,2)   kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro   initrd /boot/initrd-2.2.18.gz       # --> Debian END <--     # --> Windows 菜單選項 <--     title Windows2000   root (hd0,0)   chainloader +1     # --> Winddows 結束 <--     # --> RedHat linux 菜單選項 <--     title RedHat linux   root (hd0,   chainloader +1 # 在硬盤主引導分區裝了lilo,所以也用了chainloader。     # --> RedHat linux 結束 <--     # --> Mandrake linux 菜單選項 <--     title Mandrake linux   root (hd0,5)   kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro   initrd /boot/initrd-2.4.3-20mdk.img     # --> Mandrake linux 結束 <--       #例子到此結束     以符號井"#"開頭的行表示被注釋掉,沒有任何意義。     timeout表示默認等待的時間,這兒是10秒鐘。超過10秒,用戶還沒有作出選擇的話,系統將自動選擇默認的操作系統。     默認的操作系統就是由default控制的。default後加一個數字n,表明是第n+1個。需要注意的是,GRUB中,計數是從0開始的,第一個硬盤是hd0,第一個軟驅是fd0,等等。所以,default 2 表示默認的操作系統在這兒是 Redhat linux。     接下來,正如你所想象的,title表示的是“Debian linux”菜單項。root (hd0,2)表示第一個硬盤,第三個分區。這兒的root 於linux的root分區及其不同,此root非彼root也!     在 Linux 中,當談到 "root" 文件系統時,通常是指主 Linux 分區。但是,GRUB 有它自己的 root 分區定義。GRUB 的 root 分區是保存 Linux 內核的分區。這可能是您的正式 root 文件系統,也可能不是。我們討論的是 GRUB,需要指定 GRUB 的 root 分區。進入 root 分區時,GRUB 將把這個分區安裝成只讀型,這樣就可以從該分區中裝入 Linux 內核。GRUB 的一個很“酷”的功能是它可以讀取本機的 FAT、FFS、minix、ext2 和 ReiserFS 分區。     到目前為止,您可能會感到一點疑惑,因為 GRUB 所使用的硬盤/分區命名約定與 Linux 使用的命名約定不同。在 Linux 中,第一個硬盤的第五個分區稱作 "hda5"。而 GRUB 把這個分區稱作 "(hd0,4)"。GRUB 對硬盤和分區的編號都是從 0 開始計算。另外,硬盤和分區都用逗號分隔,整個表達式用括號括起。現在,可以發現如果要引導 Linux 硬盤 hda5,應輸入 "root (hd0,4)"。     知道了內核在哪兒,還要具體指出哪個文件是內核文件,這就是kernel的工作。   kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro說明/boot/vmlinuz-2.2.18 就是要載入的內核。後面的都是傳遞給內核的參數。root=/dev/hda3就是linux的硬盤分區表示法,ro是以readonly的意思。   initrd用來初始的linux image,並設置相應的參數。     是不是感覺很簡單啊!再來看一看windows的定義段吧。   這裡,我添加了一項來引導 Windows2000。要完成此操作,GRUB 使用了“鏈式裝入器”(chainloader)。鏈式裝入器從分區 (hd0,0) 的引導記錄中裝入 win2000 自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它創建了一個從引導裝入器到另一個的鏈。這種鏈式裝入技術可以用於引導任何版本的 DOS 或 Windows。     我的RedHat linux在硬盤主引導分區裝了lilo,所以也用了chainloader。     GRUB的配置文件要簡單就這麼簡單,如果你要更個性化一點,試一試把“color light-gray/blue ”加在default語句的下面,下一次啟動GRUB時,看看有什麼變化,再試一試“color light-blue/red",驚喜嗎? 有趣吧!     ######################   # GRUB的交互性 #   ######################           GRUB 最好的優點之一就是其強健的設計 -- 在不斷使用它時請別忘了這點。如果更新內核或更改它在磁盤上的位置,不必重新安裝 GRUB。事實上,如有必要,只要更新 menu.lst 文件即可,一切將保持正常。     只有少數情況下,才需要將 GRUB 引導裝入器重新安裝到引導記錄。首先,如果更改 GRUB root 分區的分區類型(例如,從 ext2 改成 ReiserFS),則需要重新安裝。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由於它們來自更新版本的 GRUB,很有可能要重新安裝引導裝入器。其它情況下,可以不必理睬!     GRUB的最大的特點就是交互性特別強。在開機時,按一下“c”,將進入GRUB 控制台。顯示如下:     GRUB version 0.5.96.1 (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>     歡迎使用 GRUB 控制台。現在,再研究命令:   我將通過GRUB 控制台繞過lilo來啟動RedHat linux,     grub> root (h     現在,按一次 Tab 鍵。如果系統中有多個硬盤,GRUB 將顯示可能完成的列表,從 "hd0" 開始。如果只有一個硬盤,GRUB 將插入 "hd0,"。如果有多個硬盤,繼續進行,在 ("hd2") 中輸入名稱並在名稱後緊跟著輸入逗號,但不要按 Enter 鍵。部分完成的 root 命令看起來如下:     grub> root (hd0,     現在,繼續操作,再按一次 Tab 鍵。GRUB 將顯示特定硬盤上所有分區的列表,以及它們的文件系統類型。在我的系統中,按 Tab 鍵時得到以下列表:     grub> root (hd0, (tab,按tab一下鍵)   Possible partitions are:   Partition num: 0, Filesystem type is fat, partition type 0x6   Partition num: 2, Filesystem type is ext2fs, partition type 0x83   Partition num: 4, Filesystem type unknown, partition type 0x7   Partition num: 5, Filesystem type is ext2fs, partition type 0x83   Partition num: 6, Filesystem type is fat, partition type 0xb   Partition num: 7, Filesystem type is fat, partition type 0xb   Partition num: 8, Filesystem type is ext2fs, partition type 0x83   Partition num: 9, Filesystem type unknown, partition type 0x82     如您所見,GRUB 的交互式硬盤和分區名稱實現功能非常有條理。這些,只需要好好理解 GRUB 新奇的硬盤和分區命名語法,然後就可以繼續操作了   grub> root (hd0,   現在已安裝了 root 文件系統,到裝入內核的時候了     grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro   [Linux-bzImage, setup=0x1200, size=0xe1a30]     您已經安裝了 root 文件系統並裝入了內核。現在,可以引導了。只要輸入 "boot",Linux 引導過程就將開始。是不是很cool啊,GRUB的menu.lst更像一個linux下的腳本程序。       #####################   # GRUB啟動盤 #   #####################   要制作引導盤,需執行一些簡單的步驟。首先,在新的軟盤上創建 ext2 文件系統。然後,將其安裝,並將一些 GRUB 文件復制到該文件系統,最後運行 "grub" 程序,它將負責設置軟盤的引導扇區。准備好了嗎?     將一張空盤插入 1.44MB 軟驅,輸入:     # mke2fs /dev/fd0   創建了 ext2 文件系統後,需要安裝該文件系統:     # mount /dev/fd0 /mnt/floppy   現在,需要創建一些目錄,並將一些關鍵文件(原先安裝 GRUB 時已安裝了這些文件)復制到軟盤:     # mkdir /mnt/floppy/boot   # mkdir /mnt/floppy/boot/grub   # cp /boot/grub/stage1 /mnt/floppy/boot/grub   # cp /boot/grub/stage2 /mnt/floppy/boot/grub   再有一個步驟,就能得到可用的引導盤。     在linux bash中,從 root 用戶運行“grub”,該程序非常有趣並值得注意,因為它實際上是 GRUB 引導裝入器的半功能性版本。盡管 Linux 已經啟動並正在運行,您仍可以運行 GRUB 並執行某些任務,而且其界面與使用 GRUB 引導盤或將 GRUB 安裝到硬盤 MBR 時看到的界面(即GRUB控制台)完全相同。   在 grub> 提示符處,輸入:     grub> root (fd0)   grub> setup (fd0)   grub> quit     現在,引導盤完成了。   如果要把GRUB裝到硬盤上,也很容易。這個過程幾乎與引導盤安裝過程一樣。首先,需要決定哪個硬盤分區將成為 root GRUB 分區。在這個分區上,創建 /boot/grub 目錄,並將 stage1 和 stage2 文件復制到該目錄中,可以通過重新引導系統並使用引導盤,或者使用駐留版本的 GRUB 來執行後一步操作。在這兩種情況下,啟動 GRUB,並用 root 命令指定 root 分區。例如,如果將 stage1 和 stage2 文件復制到 hda5 的 /boot/grub 目錄中,應輸入 "root (hd0,4)"。接著,決定在哪裡安裝 GRUB -- 在硬盤的 MBR,或者如果與 GRUB 一起使用另一個“主”引導裝入器,則安裝在特定分區的引導記錄中。如果安裝到 MBR,則可以指定整個磁盤而不必指定分區,如下(對於 hda):     grub> setup (hd0)     如果要將 GRUB 安裝到 /dev/hda5 的引導記錄中,應輸入:     grub> setup (hd0,4)     現在,已安裝 GRUB。引導系統時,應該立即以 GRUB 的控制台方式結束(如果安裝到 MBR)。現在,應創建引導菜單,這樣就不必在每次引導系統時都輸入那些命令。     小結:在這裡只是介紹了 GRUB 的一部分。例如,可以使用 GRUB 來執行網絡引導,引導 BSD 文件系統,或更多操作。另外,GRUB 有許多配置和安全性命令也很有用。如需所有 GRUB 功能的完整描述,請閱讀 GRUB 出色的 GNU 文檔。只要在 bash 提示中輸入 "info grub" 就可以閱讀該文檔。




Copyright © Linux教程網 All Rights Reserved