七、GRUB 和 stage 文件
GRUB 含有幾個 images 文件,兩個基礎(chǔ)(必需的)stages 文件(stage1和 stage2),可選的 stage(也稱為 stage1.5),和兩個網(wǎng)絡(luò)引導的images 文件
nxgrub 和 pxegrub)。stage1 是用于引導 GURB 的一個必須的映象文件。通常它是被嵌入到 MBR。或者一個分區(qū)的引導扇區(qū)之中。因為 PC 的引導扇區(qū)是
512 字節(jié),所以 stage1 也是 512 字節(jié)。stage1 的作用就是從一個本地磁盤加載 stage 2 或者 stage 1.5 。因為大小的限制,stage1 對 stage2 或者
stage 1.5 的位置進行編碼,也就是說,stage1 是無法識別文件系統(tǒng)格式的。stage2 是 GRUB 的核心映象。它幾乎處理所有的事情(除了加載它自己),
通常可以把他放在文件系統(tǒng)上,但不是必須的。
一旦你執(zhí)行了 grub-install 安裝了 boot loader ,stage1 文件就不是必須的,可以把它移動到任意位置,因為它已經(jīng)被嵌入到 MBR 或者 PBR 了。
stage1和stage2 文件一般位于 /boot/grub/ 目錄下,在這個目錄下還有很多 stage 1.5 的文件,而且都是以文件系統(tǒng)格式命名的。它們的目的是在 stage1
和 stage2之間搭建一個橋梁,也就是 stage 1 加載 stage 1.5, stage 1.5 加載 stage2。stage1 和 stage 1.5 的不同之處是 stage1 無法識別文件系統(tǒng),
stage 1.5 可以。因為 Stage2 太大了,無法被嵌入到某個固定的區(qū)域,而 Stage1.5可以安裝在 MBR 之后的位置。
至于 nxgrub 和 pxegrub 我們在第10節(jié)才介紹。
八、GRUB 常見錯誤信息
我們把出錯信息分成3類,stage1 階段的、stage 1.5 階段的、stage2 階段。后兩個可以合在一起。
8.1 Stage1 階段可能出現(xiàn)的錯誤 :
GRUB 對于該階段出現(xiàn)的錯誤一般是打印一個出錯信息并掛起機器,除非按CTRL-ALT-DEL 重啟。
a) Hard Disk Error :表示無法判讀 stage 1.5 文件所在的磁盤的大小和 CHS 參數(shù)
b)Floppy Error :表示無法 stage 1.5 文件所在的軟盤的大小和 CHS 參數(shù)
c)Read Error :表示無法讀取 stage 1.5 文件或者 stage2 文件
d)Geom Error :stage2 或者 stage 1.5 位于 BIOS 的 read 調(diào)用可以訪問的范圍之外。
8.2 Stage 1.5/2 階段可能出現(xiàn)的錯誤 :
一般會打印一個 “Error
“的錯誤信息,并根據(jù)錯誤的嚴重程度看是否繼續(xù)進行。
QUOTE:
1 : Filename must be either an absolute filename or blocklist
解釋 :1號錯誤表示文件名格式錯誤。在 GRUB 中要么是以絕對路徑給出文件
例子 :
grub> kernel vmlinuz root=label=/
Error 1: Filename must be either an absolute pathname or blocklist
grub>
QUOTE:
2 : Bad file or directory type
解釋 :2號錯誤表示命令期望的是一個普通文件,但相應(yīng)文件名的對象是一個符號鏈接、目錄、FIFO
例子 :
grub> kernel /testdir root=LABEL=/
Error 2: Bad file or directory type
grub>
QUOTE:
3 : Bad or corrupt data while decompressing file
解釋 :3號錯誤表示解壓文件時發(fā)生錯誤。可能是因為這個文件被損壞了
QUOTE:
4 : Bad or incompatible header in compressed file
解釋 :4號錯誤表示壓縮文件的頭部格式不被兼容或者錯誤
QUOTE:
5 : Partition table invalid or corrupt
解釋 :5 號錯誤表示分區(qū)表無效或者被破壞。這是一個不好的預(yù)兆
QUOTE:
6 : Mismatched or corrupt version of stage1/stage2
解釋 :6號錯誤表示 install 命令發(fā)現(xiàn) stage1 和 stage2 的頒布號不被兼容
QUOTE:
7 : Loading below 1MB is not supported
解釋 :This error is returned if the lowest address in a kernel is below
the 1MB boundary. The Linux zImage format is a special case and
can be handled since it has a fixed loading address and maximum size
QUOTE:
8 : Kernel must be loaded before booting
解釋 :8號錯誤表示執(zhí)行 boot 命令之前沒有先執(zhí)行 kernel 命令
QUOTE:
9 : Unknown boot failure
解釋 :9 號錯誤表示未知的引導錯誤
QUOTE:
10 : Unsupported Multiboot features requested
解釋 :10 號錯誤表示請求 Multiboot header 所要求功能不被 GRUB 所支持。
QUOTE:
11 : Unrecognized device string
解釋 :11 號錯誤表示無法識別的設(shè)備字符串。
例子 :
grub> root hd0
Error 11: Unrecognized device string
grub>
QUOTE:
12 : Invalid device requested
解釋 :12 號錯誤表示請求的設(shè)備無效
例子 :
grub> root (hd2)
Error 21: Selected disk does not exist
grub> kernel /grub/grub.conf root=LABEL=/
Error 12: Invalid device requested
grub>
QUOTE:
13 : Invalid or unsupported executable format
解釋 :13 號錯誤表示無效或者無法識別的可執(zhí)行格式
例子 :
grub> kernel /grub/grub.conf root=LABEL=/
Error 13: Invalid or unsupported executable format
grub>
QUOTE:
14 : Filesystem compatibility error, cannot read whole file
解釋 :14 號錯誤表示文件系統(tǒng)兼容性錯誤,無法讀取整個文件
QUOTE:
15 : File not found
解釋 :請求的文件無法找到
例子 :
grub> find /grub-noexist/grub.conf
Error 15: File not found
grub>
QUOTE:
16 : Inconsistent filesystem structure
解釋 :16 號錯誤表示不一致的文件系統(tǒng)結(jié)構(gòu)。可能是文件系統(tǒng)結(jié)構(gòu)被破壞了。
QUOTE:
17 : Cannot mount selected partition
解釋 :17號錯誤表示無法掛載指定分區(qū)。例如 swap 分區(qū)
例子 :
grub> root (hd0,2) 這是一個 swap 分區(qū)
Filesystem type unknown, partition type 0x82
grub> kernel /vmlinuz
Error 17: Cannot mount selected partition
grub>
QUOTE:
18 : Selected cylinder exceeds maximum supported by BIOS
解釋 :18 號錯誤表示選擇的柱面超過了 BIOS 支持的最大能力。這通常發(fā)生在不支持 LBA 模式
的硬盤上。
QUOTE:
19 : Linux kernel must be loaded before initrd
解釋 :19 號錯誤表示執(zhí)行 initrd 命令前必須先執(zhí)行 kernel 命令
QUOTE:
20 : Multiboot kernel must be loaded before modules
解釋 :20 號錯誤表示執(zhí)行 module 或者 moduleunzip 命令前必須先執(zhí)行 kernel 命令
QUOTE:
21 : Selected disk does not exist
解釋 :21 號錯誤表示選擇的磁盤不存在
例子 :
grub> root (hd2)
Error 21: Selected disk does not exist
grub>
QUOTE:
22 : No such partition
解釋 :22 號錯誤表示分區(qū)不存在
例子 :
grub> root (hd0,10)
Error 22: No such partition
grub>
QUOTE:
23 : Error while parsing number
解釋 :23 號錯誤表示參數(shù)解釋錯誤,希望是一個數(shù)值,但參數(shù)卻是其他類型
例子 :
grub> root (hda,0)
Error 23: Error while parsing number
grub>
QUOTE:
24 : Attempt to access block outside partition
解釋 :24 號錯誤表示嘗試訪問的 block 超出了分區(qū)
QUOTE:
25 : Disk read error
解釋 :25 號錯誤表示磁盤讀錯誤
QUOTE:
26 : Too many symbolic links
解釋 :26 號錯誤表示太多的符號連接(默認最多允許5個)
QUOTE:
27 : Unrecognized command
解釋 :無法識別的命令
QUOTE:
28 : Selected item cannot fit into memory
解釋 :選擇的對象無法被加載到內(nèi)存中。
例子 :
[root@monitor boot]# dd if=/dev/zero of=vmlinuz-2.4.20-31.9 bs=1024 count=1 seek=1
讀入了 1+0 個塊
輸出了 1+0 個塊
[root@monitor boot]#grub
grub> kernel /vmlinuz-2.4.20-31.9 root=label=/
[Linux-bzImage, setup=0x1400, size=0xfffff200]
Error 28: Selected item cannot fit into memory
grub>
QUOTE:
29 : Disk write error
解釋 :磁盤寫錯誤
QUOTE:
30 : Invalid argument
解釋 :無效參數(shù)
例子 :
grub> serial --noarg=0
Error 30: Invalid argument
grub>
QUOTE:
31 : File is not sector aligned
解釋 :This error may occur only when you access a ReiserFS partition by
block-lists (e.g. the command `install'). In this case, you should
mount the partition with the `-o notail' option.
QUOTE:
32 : Must be authenticated
解釋 :要求輸入口令才能繼續(xù)進行下面的操作。例如配置文件中有 password 或者 lock 命令
例子 :
password root1234
title DOS
lock
rootnoverify (hd0,0)
chainloader +1
QUOTE:
33 : Serial device not configured
解釋 :33 號錯誤表示串口還沒有配置。這一般發(fā)生在你執(zhí)行 terminal serial 的時候
QUOTE:
34 : No spare sectors on the disk
解釋 :磁盤自由空間不足。可能發(fā)生在把 stage 1.5 嵌入到 MBR 之后的空間的時候。但這部分空間可能已經(jīng)被分區(qū)表使用了