详解GRUB 2命令

来源:互联网 发布:首个中国网络作家村 编辑:程序博客网 时间:2024/05/18 13:28

这里以ubuntu 12.04中的GRUB 2为例(GRUB 1.9x称为GRUB 2)来讲述一下GRUB的命令。

打开终端,运行sudo gedit /boot/grub/grub.cfg,打开这个文件。上面的一行行文字令人眼花缭乱,现在只用一些重要的。

在第59行有一段文字:set timeout=-1,把timeout这个值设成了负数。timeout是指GRUB显示的时间,如果是负数,则一直在那里等着,如果是0,则直接跳过GRUB。为了使GRUB显示出来,需要把61行也改为set timeout=-1

101行到113行是一连串的命令,下面分组进行讲解。

4.3.1 描述命令(48

101行,有一个命令叫menuentry,它的用法如下:

menuentry '***'{命令}

其中***是指在GRUB界面上菜单项的名称,比如第一项显示的是Ubuntu,Linux 3.2.0-23-generic-pae。在上面指明了内核版本是3.2.0。相当于GRUB 1title,只不过没有了{}

倘若继续往下看,121行,有一个命令是echo '***',这也是一种描述,在启动时显示相应的信息。

4.3.2 加载命令(48

104-106行,有三个连续出现的insmod命令,这就是加载相应的模块。比如105行,加载了part_msdos模块,这个模块是专门管MSDOS分区的,比如FAT32/NTFS分区。

111行,有一个很重要的命令,这就是linux,相当于GRUB 1kernel。这是一个加载内核的命令,后面有一个参数:/boot/vmlinuz-3.2.0-23-generic-pae,这就是内核文件。内核文件是一个压缩文件,运行Linux命令是会自动解压。

4.3.3 虚拟文件系统命令(48

3.4节里提过,要创建一个虚拟的根文件系统。那么这个命令就是initrd,后面也有一个参数:/boot/initrd.img-3.2.0-23-generic-pae,这个文件也是压缩文件,所以解压,解压后就被挂载到/,虚拟成功。

4.3.4 启动相关(4850

106/107行,有两个命令,作用完全一样。第一个是set root(相当于GRUBroot),第二个是search,两个命令都是指定启动分区的。用法有差别,set root后面跟着的是分区,而search则需要一大堆的参数,下面一一解读这些参数:

--no-floppy:是指不读取软驱

--fs-uuid:表示分区用UUID表示。

--set=root:表示分区将设置为启动分区。

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:是该分区的UUID

好了现在说GRUB分区如何表示。

Linux里,分区表示方法为:/dev/h(s)d[a-z]x,其中h(s)代表硬盘类型,h代表IDE硬盘,s代表SATASCSI硬盘。a-z表示是第几块硬盘,x为分区的号码:

主分区(扩展分区):1-4

逻辑分区:5-16

GRUB里则不一样,他的表示方法为:(h(s)dm,n),可以看出,前半部分是一样的,均为h(s)d,后面不一样,m代表是第几块硬盘(从0开始),n表示的是Linux里的那个x,不过版本不一样又略有不同。GRUB1使用的是x0开始,而GRUB2则是从1开始,比如如果是/dev/hda3,那么在GRUB1里就是(hd0,2),在GRUB2里则是(hd0,3)

如果把/dev/hda1作为启动分区,则应该是set root='(hd0,1)'不过近期来,在n的前面加上了msdos,即set root='(hd0,msdos1)',这一点是无版本区别的。

再看UUIDUUID是分区的一个标识符。

那么执行了这么多命令,最后干什么呢?最后有一个命令:boot,就表示启动了。

如果有Windows操作系统并存,则会在113行看到chainloader +1,这表示GRUB将把启动所有权交给Windows

原创粉丝点击