GRUB學習筆記(轉)
GRUB學習筆記(轉)[@more@] 宣告:本筆記並非原創,只是我個人的學習筆記! 很多的內容來自 非常感謝以上網站對我的學習提供的莫大的幫助,本著學習和分享的原則我貼出我的學習筆記,更希望兄弟們能給我指出其中錯誤的地方.謝謝!!! 學習這部分知識,首先要學到問題的思路,其次你還要記住一些東西,是死記硬背下來!你會發現這點東東的確是很有用的! 儘管如此,本文件歸屬linuxsir-probing!轉載請註明出處!更不能被用到商業用途上! 1 首先要了解的幾個概念 1.1 啟動管理器 啟動管理器是儲存在磁碟開始扇區中的一段程式,例如,硬碟的MBR(Master Boot Record),在系統完成啟動測試後,如果系統是從MBR啟動,則BIOS(Basic Input/Output System)將控制傳送給MBR。然後儲存在MBR中的這段程式將執行。這段程式被稱為啟動管理器。它的任務就是將控制傳送給作業系統,完成啟動過程》有許多可用的啟動管理器,包括GNU GRUB (Grand Unified Boot Loader),Bootmanager, LILO (LInux LOader), NTLDR (boot loader for Windows NT systems),等等等. 1.2 什麼是GRUB? grub 是一個多重啟動管理器。grub是GRand Unified Bootloader的縮寫,它可以在多個作業系統共存時選擇引導哪個系統。它可以引導的作業系統包括: Linux,FreeBSD,Solaris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000,WinXP。它可以載入作業系統的核心和初始化作業系統(如Linux,FreeBSD),或者把引導權交給作業系統(如Windows 98)來完成引導。 1.3 GRUB的特點 特別適用於linux與其它作業系統共存情況。 支援大硬碟 現在大多數Linux發行版本的lilo都有同樣的一個問題:根分割槽(/boot分割槽)不能分在超過1024柱面的地方,一般是在8.4G左右的地方,否則lilo不能安裝,或者安裝後不能正確引導系統。而grub就不會出現這種情況,只要安裝時你的大硬碟是在LBA模式下,grub就可以引導根分割槽在8G以外的作業系統。 支援開機畫面 grub支援在引導開機的同時顯示一個開機畫面。對於玩家來說,這樣可以製作自己的個性化開機畫面;對於PC廠商,這樣可以在開機時顯示電腦的一些資訊和廠商的標誌等。grub支援640x480,800x600,1024x768各種模式的開機畫面,而且可以自動偵測選擇最佳模式,與Windows那320x400的開機畫面不可同日而語。 兩種執行模式 grub不但可以透過配置檔案進行例行的引導,還可以在選擇引導前動態改變引導時的引數,還可以動態載入各種裝置。例如你在Linux下編譯了一個新的核心,但不能確定它能不能工作,你就可以在引導時動態改變grub的引數,嘗試裝載這個新的核心進行使用。Grub的命令列有非常強大的功能,而且支援如bash或doskey一樣的歷史功能,你可以用上下鍵來尋找以前的命令。 選單式選擇 grub使用一個選單來選擇不同的系統進行引導。你還可以自己配置各種引數,如延遲時間,預設作業系統等。 分割槽大小改變後不必重新配置 grub是透過檔案系統直接把核心讀取到記憶體,因此只要作業系統核心的路徑沒有改變,grub就可以引導系統。 除此之外,Grub還有許多非常強大的功能。例如支援多種外部裝置,動態裝載作業系統核心,甚至可以透過網路裝載作業系統核心。Grub支援多種檔案系統,支援多種可執行檔案格式,支援自動解壓,可以引導不支援多重引導的作業系統,支援網路啟動等。 1.4 MBR和第一扇區 你可以簡單的理解為MBR是整個硬碟的物理第一位置,而第一扇區是硬碟的物理第二位置. 1.5 一個GRUB配置檔案 基於本例的分割槽如下: hda 15G hda1 8G / RED HAT LINUX8.0 hda5 7G /home hdc 20G hdc1 6.4G WinXP hdc5 6.4G hdc6 6.4G hdc7 6.4G #fdisk -l # Disk /dev/hdc: 255 heads, 63 sectors, 2434 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hdc1 * 1 894 7181023+ b Win95 FAT32 /dev/hdc2 895 2434 12370050 f Win95 Ext'd (LBA) /dev/hdc5 895 1787 7172991 b Win95 FAT32 /dev/hdc6 1788 2434 5196996 b Win95 FAT32 Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 1020 8193118+ 83 Linux /dev/hda2 1021 1802 6281415 83 Linux /dev/hda3 1803 1867 522112+ 82 Linux swap grub.conf,這個檔案位於;/boot/grub/grub.conf # 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=3 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Red Hat Linux (2.4.18-14) root (hd0,0) kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ initrd /boot/initrd-2.4.18-14.img title Microsoft Windows XP map (hd0) (hd1) map (hd1) (hd0) root (hd1,0) chainloader (hd1,0)+1 makeactive boot 2 解讀grub.conf檔案 我們將來看看grub.conf檔案內語句,(注:...)內的東西是我們的解讀內容. # 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 (注:預設的作業系統就是由default控制的。default後加一個數字n,表明是第 n+1個。需要注意的是,GRUB中,計數是從0開始的,第一個硬碟是hd0,第一 個軟碟機是fd0,等等。所以,default 0 表示預設的作業系統在這兒是 Red Hat Linux (2.4.18-14)如果你修改成1就是WinXP了) timeout=3 (注:timeout表示預設等待的時間,這兒是3秒鐘。超過3秒,使用者還沒有作出選 擇的話,系統將自動選擇預設的作業系統;當然你可以改成任何你樂意的時間) splashimage=(hd0,0)/boot/grub/splash.xpm.gz (注:指定開機畫面檔案splash.xpm.gz的位置) title Red Hat Linux (2.4.18-14) (注:表示Red Hat Linux的選單項) root (hd0,0) (注:表示第一個硬碟第一個分割槽,這裡的root和系 統內的root不是一碼事!詳細如下說明) kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/ (注:指定核心的位置,詳細說明如下 文) initrd /boot/initrd-2.4.18-14.img (注:初始化) title Microsoft Windows XP (注:表示Microsoft Windows XP的選單項) map (hd0) (hd1) (注:map是命令,詳細如下) map (hd1) (hd0) root (hd1,0) (注:這是指第二個硬碟(從硬碟)上第一個分割槽) chainloader (hd1,0)+1 (注:鏈式裝入器,裝入一個扇區的資料然後把引導 權交給它。詳細說明如下) makeactive boot (注:在 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.4.18-14 ro root=LABEL=/說明/boot/vmlinuz-2.4.18-14就是要載入的核心。後面的都是傳遞給核心的引數。root=LABEL=/就是linux的硬碟分割槽表示法,ro是readonly的意思。initrd用來初始的linux image,並設定相應的引數。 命令map:當你有兩塊硬碟,一個無法從第二塊硬碟啟動的作業系統,例如Windowsxp,就可以使用map命令.你能夠將hd0對映為hd1,將hd1對映為hd0。換句話說,你可以虛擬的交換兩個硬碟而啟動所需要的作業系統 。命令形式如下: grub> map (hd0) (hd1) grub> map (hd1) (hd0) GRUB 使用了“鏈式裝入器”(chainloader)。鏈式裝入器從分割槽 (hd1,0) 的引導記錄中裝入winxp自己的引導裝入器,然後引導它。這就是這種技術叫做鏈式裝入的原因 -- 它建立了一個從引導裝入器到另一個的鏈。這種鏈式裝
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-957091/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GRUB學習筆記筆記
- Grub2 學習筆記筆記
- sed學習筆記(轉)筆記
- gurb學習筆記(轉)筆記
- ANT學習筆記 (轉)筆記
- TreeView學習筆記 (轉)View筆記
- ctf學習筆記[轉載]筆記
- SAP BASIS學習筆記(轉)筆記
- PE學習筆記(一) (轉)筆記
- JSP標記學習筆記 (轉)JS筆記
- repuest轉發學習筆記一筆記
- C#學習筆記(一) (轉)C#筆記
- 我的Hook學習筆記 (轉)Hook筆記
- Microsoft Agent 學習筆記 (一) (轉)ROS筆記
- 我的COM學習筆記 (轉)筆記
- APT HOWTO 學習筆記(轉)APT筆記
- 學習筆記:debfoster & deborphan(轉)筆記
- linux安全學習筆記(轉)Linux筆記
- numpy的學習筆記\pandas學習筆記筆記
- 多執行緒學習筆記 (轉)執行緒筆記
- sed 學習筆記(與大家共勉)(轉)筆記
- (轉載)ORACLE MODEL子句學習筆記Oracle筆記
- Win32學習筆記 序 (轉)Win32筆記
- STL的學習筆記之一 (轉)筆記
- <<軟體設計學習筆記>> (轉)筆記
- PMP學習筆記-溝通管理(轉)筆記
- 正規表示式學習筆記 (轉)筆記
- XML初學進階學習筆記(1)(轉)XML筆記
- XML初學進階學習筆記(5)(轉)XML筆記
- XML初學進階學習筆記(4)(轉)XML筆記
- XML初學進階學習筆記(3)(轉)XML筆記
- XML初學進階學習筆記(2)(轉)XML筆記
- IT學習筆記筆記
- 學習筆記筆記
- 10g NewFeatures學習筆記(轉)筆記
- 彙編學習筆記之轉移指令筆記
- 依賴倒轉原則--學習筆記筆記
- Python——格式轉換的學習筆記Python筆記