您的位置:首页 > 其它

ubuntu系统的grub配置

2016-04-13 13:23 232 查看
总结一下网上找的一些grub的资料:

以前grub的启动配置文件还是menu.lst,到了ubuntu9.10的时候更名为grub.cfg,之后ubuntu 一直沿用grub.cfg,不过这个文件的内容变更不大。在ubuntu中,grub.cfg(menu.lst)就相当于windows系统下的boot.inf文件,记录着一些启动配置信息,在这里为大家介绍一些简单的设置规则。

grub.cfg文件目录:/boot/grub/grub.cfg,

下面贴个别人分析过的代码压压阵,是老版的menu.lst,但用法跟现在的grub.cfg基本类似。上代码!

==============================================================================

default      0

timeout     3

hiddenmenu

title       Ubuntu 9.04, kernel 2.6.28-11-generic

uuid          bb77114e-07a7-44a4-9345-4cc9f6e25296

kernel        /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro quiet splash 

initrd          /initrd.img-2.6.28-11-generic

quiet

title            Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)

uuid           bb77114e-07a7-44a4-9345-4cc9f6e25296

kernel        /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro single

initrd          /initrd.img-2.6.28-11-generic

title          Windows 95/98/NT/2000

root           (hd0,0)

makeactive

chainloader    +1

title       Ubuntu 9.04, memtest86+

uuid          bb77114e-07a7-44a4-9345-4cc9f6e25296

kernel         /memtest86+.bin

quiet

==============================================================================
(1)default 0:此选项是在默认的情况下,GRUB启动哪个操作系统,如果装了多个操作系统,GRUB能够指定默认是启动那个操作系统。如果是0,则默认启动第一个(最上面的)的操作系统;如果是1,则默认第二个,以此类推。

(2)timeout 3:超时时间,单位是秒,在此时间内如果用户没有进行任何操作,那么将启动default指定的操作系统,如果是正数,则此等待时间规定为秒数,如果是0,则立刻进入指定操作系统,如果是负数,则进入GRUB的程序界面,一直等待用户选择进入指定的操作系统。

(3)hiddenmenu:表示隐藏GRUB的程序界面,在Ubuntu系统中,默认情况下GRUB的程序界面是隐藏的,如果想显示,则需要按提示按下Esc键。

(4)title Ubuntu 9.04, kernel 2.6.28-11-generic:表示出现在GRUB程序界面中的字符串,这里可以是任何字符串,原则上都使用引导的操作系统的名称。

(5)root(hd0,1):这个是GRUB中分区的表示方法,GRUB程序中分区的表示方法与Ubuntu系统中的表示分区方法不同,在Ubuntu中表示分区的方法如同hda1:其中h表示IDE硬盘,d表示设备,a表示第一个IDE设备中的主盘,1表示此硬盘的第一个主分区(具体分配信息请查阅其他有关资料)。而在grub中是使用(hd0,1)的方式表示的,其中h表示IDE硬盘,d表示设备,0表示第一块IDE设备中的主盘,1表示此硬盘上的第二个分区。因此在GRUB程序v中,硬盘的分区是从0开始的,而硬盘数也是从0开始的,如Ubuntu系统的hdb5在GRUB程序中就表示为(hd1,4)。注意,前面的root表示的是操作系统的启动分区,而不是root目录。

(6)kernel:kernel及其后面的部分指定的是具体的内核文件,并且根据分区的挂载点和特性,后面指定了内核文件所在位置以及内核文件名,并且指明了跟目录所在的分区,并且将其以只读(ro)方式挂载。

(7)initrd:这部分是虚拟磁盘的文件名。

(8)chainloader+1:存在Windows操作系统的时候就会有这一项,这是Ubuntu采用的链式启动引导器,即表示启动分区有GRUB的启动分区直接下移到下一个位置(windows的引导位置)。

下面贴一段另一个地方找来的旧一点grub.cfg的代码:

在### BEGIN /etc/grub.d/10_linux ###后面的部分记录着启动选项的信息。

例如:

menuentry "Ubuntu, Linux2.6.32-22-generic" {

   insmod ntfs

   set root=’(hd0,5)’

   search –no-floppy –fs-uuid –set 0e9ca6229ca60475

   loopback loop0 /ubuntu/disks/root.disk

   set root=(loop0)

   linux /boot/vmlinuz-2.6.32-22-generic root=/dev/sda5loop=/ubuntu/disks/root.disk ro   quietsplash

   initrd /boot/initrd.img-2.6.32-22-generic

}

这是奶牛的ubuntu系统的第一个启动选项,第一行显示的是ubuntu的名称Ubuntu, Linux 2.6.32-22-generic,引号内的内容可以任意修改,    insmod ntfs是载入模块信息,例如insmod jpeg可以添加jpg支持,如要使用png或tga 文件做背景,加上insmod png或insmod tga,。set root=’(hd0,5)’这里很关键,这里是记录系统从那个分区启动,这里的顺序可能与你在windows下看到的顺序有所不同,因为windows下系统分区顺序是根据分区号来的,而分区号可以任意更改,而这里是物理意义上的顺序,你可以通过在终端中输入df命令查看挂载分区信息。这里hd0是指第一块物理硬盘,顺序也是从0开始,后面的5是指第6个分区,顺序也是从0开始排。讲到这里,那些在安装完ubuntu之后却没有windows启动选项的朋友们应该找到些思路了吧,对,我们就可以利用这个信息进行添加,比如我们可以添加

title       Windows XP

root       (hd0,0)

makeactive

chainloader    +1

表示从第一块儿硬盘的第一个分区进行启动widows xp系统。

linux /boot/vmlinuz-2.6.32-22-genericroot=/dev/sda5 loop=/ubuntu/disks/root.disk ro  quiet splash

在这句中,splash表示闪屏,如果你不喜欢开机看到那个ubuntu的logo界面,你可以删除splash这个单词,这样ubuntu就不会以文字模式启动。

最后再附加一个windows 7的默认启动选项

menuentry "Windows 7   (on /dev/sda1)" {

   insmod ntfs

   set root=’(hd0,1)’

   search –no-floppy –fs-uuid –set 44c07536c0752f74

   chainloader +1

}

这里的search –no-floppy –fs-uuid –set 44c07536c0752f74是设定uuid=****的分区为root,和上句set root=’(hd0,1)作用一样,如果一致,可删除,如果不一致则uuid起作用。

再贴一段带注释的grub.cfg的源代码,也是网上找来的:

grub2改用grub.cfg为配置文件,配置文件包含以下基本内容:

### BEGIN /etc/grub.d/00_header ###

load_env

#加载变量,如果在grubenv保存变量,则启动时装载

set default="0"

#设置默认引导项,默认值为0

insmod ext2

#插入文件系统支持的模块,除了用作启动的分区外,其他分区格式可在menuentry底下再添加

set root=(hd0,8)

# 指定系统root分区,也就是 / 分区

search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

#指定uuid=2d61e5f9-1d2a-4167-a6f1-b991ba00878b的分区为root分区,如果前面的分区号(hd0,8)的#uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid的起作用。

if loadfont /usr/share/grub/unicode.pf2 ; then

#设置终端字体,unicode.pf2支持中文字符显示

set gfxmode=640x480

#设置显示分辨率,默认为640x480,可用800x600,1024x768,建议跟你想设定的图片大小一致

insmod gfxterm

#插入终端模块gfxterm,支持中文字符显示和支持24位图像

insmod vbe

#插入vbe模块,GRUB2引入模块化机制,要使用它,需要在这里加入

if terminal_output gfxterm ; then true ; else

# For backward compatibility with versions of terminal.mod that don't

# understand terminal_output

terminal gfxterm

#设定grub2终端为gfxterm

fi

fi

if [ ${recordfail} = 1 ]; then

set timeout=-1 # 若有启动失败的记录,则菜单项不再倒计时

else

set timeout=10 #倒计时10秒后进按默认启动项启动

fi

#设定默认启动前等待时间,默认为10秒

### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###

set menu_color_normal=white/black

#设定菜单字体及背景颜色

set menu_color_highlight=black/blue

#设定选择项字体及背景颜色

#如果使用默认,背景将完全被蓝色挡住了,需要修改blue为black,背景图片才能显示

### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###

#10_linux为系统自动添加的当前root分区linux引导项

#每个菜单项要包括menuentry双引号" "和大括号{ }才完整,否则不显示菜单

menuentry "Ubuntu, Linux 2.6.31-10-generic" {

set quiet=1

insmod ext2

set root=(hd0,8)

search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

#这句与set root=(hd0,8)效果一样,可删除其一,二者不一致以这句为准

linux /boot/vmlinuz-2.6.31-10-generic root=UUID=2d61e5f9-1d2a-4167-a6f1-b991ba00878b ro quiet splash

#不喜欢看到一长串的, roo=UUID=***可用root=/dev/sda8(/分区的分区号)代替

initrd /boot/initrd.img-2.6.31-10-generic

}



### END /etc/grub.d/10_linux ###

#20_memtest86+为系统自动添加的内存测试菜单项

### BEGIN /etc/grub.d/20_memtest86+ ###

menuentry "Memory test (memtest86+)" {

linux16 /boot/memtest86+.bin

}

menuentry "Memory test (memtest86+, serial console 115200)" {

linux16 /boot/memtest86+.bin console=ttyS0,115200n8

}

### END /etc/grub.d/20_memtest86+ ###

#30_os-prober或30_others为系统自动查找并添加其他系统菜单项,按windows,linux,macos顺序

#查找并添加,支持windows 7识别

### BEGIN /etc/grub.d/30_os-prober ###

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_otheros ###

# This entry automatically added by the Debian installer for a non-linux OS

# on /dev/sda1

menuentry "Microsoft Windows XP Professional" {

set root=(hd0,1)

search --no-floppy --fs-uuid --set e852-230b

drivemap -s (hd0) $root

#对以ntldr引导的系统如win2000,xp,win2003,因其引导机制只能从第一硬盘启动,系统会自动添加#映射命令,对vista和win7就没有这句命令

chainloader +1

}

### END /etc/grub.d/30_otheros ###

#40_custom为自定义的启动项,如启动cdlinux

### BEGIN /etc/grub.d/40_custom ###

menuentry "CDLinux"{

set root=(hd0,8)

linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8

initrd /CDlinux/initrd

}

### END /etc/grub.d/40_custom ###

经过这三位大神前辈的讲解基本就能看懂现在的grub.cfg文件了,再根据自己的需求修改一下,立马觉得自己棒棒哒~

(抱歉当时找这些资料的时候没有记录出处,如果上面三个大神发现被我这么用很不爽的话就跟我讲一下,我立马躲起来

)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  grub.cfg ubuntu grub配置