Grub 之常用命令和Windows引导修复(一)

时间:2024-02-20 16:22:13

刚刚午睡起来,神清气爽。腰不疼了,腿不算了,打字也有精神了——于是写篇博文--也算是写篇经验总结--刚刚一位群里的哥们装CentOS没成功。引导全坏掉了。
恩,首先老样子--讲下Grub是干嘛的--


GNU GRUB(简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数
先普及下Grub是怎么识别硬盘的

IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。
(hd0,0)。表示C盘。
(hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)

由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。
一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。 光盘用(cd)表示,第一软驱用(fd0)表示。
文件的表示:( , ) /path/to/file

--然后说下常用命令和参数,学会命令后可以做成menu.lst,相当于一个脚本--就不用每次开机的时候自己输入了

boot - 引导先前已经被指定并载入的操作系统或链式装载程序。
chainloader - 将指定的文件作为一个链式装载程序载入。为了获取在一个指定分区第一 扇区内的文件,使用+1作为文件名。
displaymem - 显示当前内存的使用情况,这个信息是基于BIOS的。这个命令有助于确定系统在引导前有多少内存。
initrd - 使用户能够指定一个在引导时可用的初始RAM盘。当内核为了完全引导而需要某些模块时,这是必需的。
install p - 安装GRUB到系统的主引导记录。这个命令允许系统重启时出现GRUB接口。
//(警告:install命令将覆盖主引导扇区中的其他信息。如果命令被执行,那么除了GRUB信息之外的其他用于引导其他操作系统的信息都将丢失。在执行这条命令前,确定你对它有正确的了解。)
kernel - 当使用直接载入方式引导操作系统时,kernel命令指定内核从GRUB的根文件系统中载入 。
//比如 kernel /vmlinuz root=/dev/hda5
Vmlinuz是内核。。它从GRUB的根文件系统载入的,如(hd0,0)。同时,后面一个选项被传给内核。它指出当Linux内核载入时,内核的根文件系统应该是位于hda5,第一个IDE硬盘的第五个分区。
color - 设定在菜单中使用的颜色,一种是作为前景色,一种作为背景色。可以简单地使用颜色名称,如red/black。比如:
color red/black green/blue
default - 默认项目的标题名称。如果菜单接口超时,那它将被载入。
fallback - 当这个命令被使用时,如果第一次尝试失败,那么这个项目的标题名称将被使用。
hiddenmenu - 这个命令被使用时,它不显示GRUB菜单接口,在超时时间过期后载入默认项。用户通过按[Esc]键,可以看到标准的GRUB菜单。
timeout - 这个命令设定了在GRUB载入由default命令指定的项目的时间间隔,以秒为单位。
splashimage - 它指定在GRUB引导时所使用的屏幕图像的位置。
  grub[1]
title - 设定用来装载一个操作系统的一组特定命令的标题。
//字符#用来在菜单配置文件放置注释。

我们详细说下Window加载

title WindowsXP //标签题目
root (hd0,0) //绑定根目录到第一主分区,也可以用rootnoverify (hd0,0) rootnoverify就是指定根,但是不要挂载。
makeactive //激活分区--因为是Windows,所以必须激活。
chainloader +1//链式引导
至于Linux

title Linux
root (hd0,1)
kernel (hd0,1)/linux/vmlinuz //指明内核位置
initrd (hd0,1)/linux/initrd.img //指明安装文件位置--这是个镜像文件。
title 行是在在开机时所看到的菜单,显示的就是 fc4install ,它要加在 title 的后面。title是必须保留的,它是grub的语法的标签,可以在title 后面写入想要添加的东西,这是可以自己定义的,比如 title fc4setup也是可以的。
root (hd0,1) 行使用 root开头,然后加一个空格,至于用户把vmlinuz和initrd.img 放在哪个分区了,可以打开 wingrub,单击tools菜单选择partioinlist (分区列表),在打开的对话框中查到。
kernel 命令行以kernel 开头,然后加一个空格,并在其后给定vmlinuz文件存放路径,这个命令行的作用是告诉计算机将使用(hd0,1)分区下的linux目录中的kernel 内核来启动;
initrd 行和 kernel 行类似;主要用于指明安装的文件放在哪个分区和哪个目录中,即在该命令后指定文件的安装目录。

下面说说常见的错误:

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> 
  
  
  
 
2 : Bad file or directory type 
解释 :2号错误表示命令期望的是一个普通文件,但相应文件名的对象是一个符号链接、目录、FIFO 
例子 : 
grub> kernel /testdir root=LABEL=/ 
Error 2: Bad file or directory type 
grub> 
  
  
  
 
3 : Bad or corrupt data while decompressing file 
  
解释 :3号错误表示解压文件时发生错误。可能是因为这个文件被损坏了 
  
  
  
 
4 : Bad or incompatible header in compressed file 
解释 :4号错误表示压缩文件的头部格式不被兼容或者错误 
  
  
  
 
5 : Partition table invalid or corrupt 
解释 :5 号错误表示分区表无效或者被破坏。这是一个不好的预兆 
  
  
  
 
6 : Mismatched or corrupt version of stage1/stage2 
解释 :6号错误表示 install 命令发现 stage1 和 stage2 的颁布号不被兼容 
  
  
  
 
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 
  
  
  
 
8 : Kernel must be loaded before booting 
解释 :8号错误表示执行 boot 命令之前没有先执行 kernel 命令 
  
  
  
 
9 : Unknown boot failure 
解释 :9 号错误表示未知的引导错误 
  
  
  
 
10 : Unsupported Multiboot features requested 
解释 :10 号错误表示请求 Multiboot header 所要求功能不被 GRUB 所支持。 
  
  
  
 
11 : Unrecognized device string 
解释 :11 号错误表示无法识别的设备字符串。 
例子 : 
grub> root hd0 
Error 11: Unrecognized device string 
grub> 
  
  
  
 
12 : Invalid device requested 
解释 :12 号错误表示请求的设备无效 
例子 : 
grub> root (hd2) 
Error 21: Selected disk does not exist 
grub> kernel /grub/grub.conf root=LABEL=/ 
Error 12: Invalid device requested 
grub> 
  
  
  
 
13 : Invalid or unsupported executable format 
解释 :13 号错误表示无效或者无法识别的可执行格式 
例子 : 
grub> kernel /grub/grub.conf root=LABEL=/ 
Error 13: Invalid or unsupported executable format 
grub> 
  
  
  
 
14 : Filesystem compatibility error, cannot read whole file 
解释 :14 号错误表示文件系统兼容性错误,无法读取整个文件 
  
  
  
 
15 : File not found 
解释 :请求的文件无法找到 
例子 : 
grub> find /grub-noexist/grub.conf 
Error 15: File not found 
grub> 
  
  
  
 
16 : Inconsistent filesystem structure 
解释 :16 号错误表示不一致的文件系统结构。可能是文件系统结构被破坏了。 
  
  
  
 
17 : Cannot mount selected partition 
解释 :17号错误表示无法挂载指定分区。例如 swap 分区 
例子 : 
grub> root (hd0,2) 这是一个 swap 分区 
Filesystem type unknown, partition type 0x82 
grub> kernel /vmlinuz 
Error 17: Cannot mount selected partition 
grub> 
  
  
  
 
18 : Selected cylinder exceeds maximum supported by BIOS 
解释 :18 号错误表示选择的柱面超过了 BIOS 支持的最大能力。这通常发生在不支持 LBA 模式 
的硬盘上。 
  
  
  
 
19 : Linux kernel must be loaded before initrd 
解释 :19 号错误表示执行 initrd 命令前必须先执行 kernel 命令 
  
  
  
 
20 : Multiboot kernel must be loaded before modules 
解释 :20 号错误表示执行 module 或者 moduleunzip 命令前必须先执行 kernel 命令 
  
  
  
 
21 : Selected disk does not exist 
解释 :21 号错误表示选择的磁盘不存在 
例子 : 
grub> root (hd2) 
Error 21: Selected disk does not exist 
grub> 
  
  
  
 
22 : No such partition 
解释 :22 号错误表示分区不存在 
例子 : 
grub> root (hd0,10) 
Error 22: No such partition 
grub> 
  
  
  
 
23 : Error while parsing number 
解释 :23 号错误表示参数解释错误,希望是一个数值,但参数却是其他类型 
例子 : 
grub> root (hda,0) 
Error 23: Error while parsing number 
grub> 
  
  
  
 
24 : Attempt to access block outside partition 
解释 :24 号错误表示尝试访问的 block 超出了分区 
  
  
  
 
25 : Disk read error 
解释 :25 号错误表示磁盘读错误 
  
  
  
 
26 : Too many symbolic links 
解释 :26 号错误表示太多的符号连接(默认最多允许5个) 
  
  
  
 
27 : Unrecognized command 
解释 :无法识别的命令 
  
  
  
 
28 : Selected item cannot fit into memory 
解释 :选择的对象无法被加载到内存中。 
例子 : 
[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> 
  
  
  
 
29 : Disk write error 
解释 :磁盘写错误 
  
  
  
 
30 : Invalid argument 
解释 :无效参数 
例子 : 
grub> serial --noarg=0 
Error 30: Invalid argument 
grub> 
  
  
  
 
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. 
  
  
  
 
32 : Must be authenticated 
解释 :要求输入口令才能继续进行下面的操作。例如配置文件中有 password 或者 lock 命令 
例子 : 
password root1234 
title DOS 
lock 
rootnoverify (hd0,0) 
chainloader +1