修改Grub.cfg来改变windows与Ubuntu的启动顺序

关于修改Grub.cfg来改变windows与Ubuntu的启动顺序

由于看了一下坛子里面关于修改Grub.cfg的一些教程,感觉还是得不到认识,又对编程不太懂,于是乎,在网上看到这一篇文章,觉得不错,分享一下


 




Ubuntu 9.10 grub2的启动配置文件grub.cfg2009-12-01 18:47升级到Ubuntu 9.10后,就要接触grub2了,它和以前的版本有了很多的不同。这里是一个基础教程。

一、grub2的启动配置文件grub.cfg
grub2的启动配置文件grub.cfg是/boot/grub/grub.cfg,而不是以前的memu.lst。

如果你是多系统,有ubuntu和windows,那么用下面的命令,可以使grub2得到所以可以启动的系统。

sudo update-grub

实际就是让系统自己生成合适的grub.cfg文件。

这个grub.cfg文件是只读属性,so如果你要修改它,需要权限。

sudo chmod +w /boot/grub/grub.cfg

然后可以编辑grub.cfg了。

sudo gedit /boot/grub/grub.cfg

二、默认系统和等待时间
1、set default=0
这是说从第一项启动。每个启动项都是以menuentry开始,menuentry后面“xxx”是启动项名称,然后{xxx}是启动代码。

### BEGIN /etc/grub.d/10_linux ###menuentry “Ubuntu, Linux 2.6.31-14-generic” {recordfail=1if [ -n ${have_grubenv} ]; then save_env recordfail; fiset quiet=1insmod ext2set root=(hd0,6)search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro quiet splashinitrd /boot/initrd.img-2.6.31-14-generic}menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {recordfail=1if [ -n ${have_grubenv} ]; then save_env recordfail; fiinsmod ext2set root=(hd0,6)search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro singleinitrd /boot/initrd.img-2.6.31-14-generic}### END /etc/grub.d/10_linux ###### 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+ ###### BEGIN /etc/grub.d/30_os-prober ###menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)” {insmod ntfsset root=(hd0,1)search –no-floppy –fs-uuid –set 5c108a1c1089fd70drivemap -s (hd0) ${root}chainloader +1}if keystatus; thenif keystatus –shift; thenset timeout=-1elseset timeout=10fielseif sleep$verbose –interruptible 3 ; thenset timeout=10fifi### END /etc/grub.d/30_os-prober ###### BEGIN /etc/grub.d/10_linux ###

menuentry “Ubuntu, Linux 2.6.31-14-generic” {

recordfail=1

if [ -n ${have_grubenv} ]; then save_env recordfail; fi

set quiet=1

insmod ext2

set root=(hd0,6)

search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059

linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro quiet splash

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

}

menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {

recordfail=1

if [ -n ${have_grubenv} ]; then save_env recordfail; fi

insmod ext2

set root=(hd0,6)

search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059

linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro single

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

}

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

### 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+ ###

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

menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)” {

insmod ntfs

set root=(hd0,1)

search –no-floppy –fs-uuid –set 5c108a1c1089fd70

drivemap -s (hd0) ${root}

chainloader +1

}

if keystatus; then

if keystatus –shift; then

set timeout=-1

else

set timeout=10

fi

else

if sleep$verbose –interruptible 3 ; then

set timeout=10

fi

fi

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

我的第五个启动项是menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)”,我要它默认是以xp启动,所以修改为set default=”4″。(hd0,1)表示第一块硬盘的第一个分区,我的Linux在(hd0,6)。

当然,你也可以把你需要默认启动的系统放到最前面,那么就还是set default=0

2、set timeout=10
if [ ${recordfail} = 1 ]; then

set timeout=-1

else

set timeout=10

fi

这里停留在grub选择系统界面的时间就是10秒,即set timeout=10。

有时候我并不想等待这么久,我直接启动xp,需要ubuntu时才按几下Shift键进入grub选择系统界面。可以添加如下代码:

if keystatus; then

if keystatus –shift; then

set timeout=-1

else

set timeout=10

fi

else

if sleep$verbose –interruptible 3 ; then

set timeout=10

fi

fi

三、其他详细配置说明
请点击此处

四、我的grub.cfg文件
安装了xp和ubuntu,默认启动xp,在电脑启动grub时,按Shift键进入系统选择界面。

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by /usr/sbin/grub-mkconfig using templates

# from /etc/grub.d and settings from /etc/default/grub

#

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

if [ -s /boot/grub/grubenv ]; then

have_grubenv=true

load_env

fi

set default=”4″

if [ ${prev_saved_entry} ]; then

saved_entry=${prev_saved_entry}

save_env saved_entry

prev_saved_entry=

save_env prev_saved_entry

fi

insmod ext2

set root=(hd0,6)

search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059

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

set gfxmode=640×480

insmod gfxterm

insmod vbe

if terminal_output gfxterm ; then true ; else

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

# understand terminal_output

terminal gfxterm

fi

fi

if [ ${recordfail} = 1 ]; then

set timeout=-1

else

set timeout=10

fi

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

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

set menu_color_normal=white/black

set menu_color_highlight=black/white

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

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

menuentry “Ubuntu, Linux 2.6.31-14-generic” {

recordfail=1

if [ -n ${have_grubenv} ]; then save_env recordfail; fi

set quiet=1

insmod ext2

set root=(hd0,6)

search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059

linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro quiet splash

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

}

menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {

recordfail=1

if [ -n ${have_grubenv} ]; then save_env recordfail; fi

insmod ext2

set root=(hd0,6)

search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059

linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro single

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

}

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

### 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+ ###

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

menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)” {

insmod ntfs

set root=(hd0,1)

search –no-floppy –fs-uuid –set 5c108a1c1089fd70

drivemap -s (hd0) ${root}

chainloader +1

}

if keystatus; then

if keystatus –shift; then

set timeout=-1

else

set timeout=10

fi

else

if sleep$verbose –interruptible 3 ; then

set timeout=10

fi

fi

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

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

# This file provides an easy way to add custom menu entries. Simply type the

# menu entries you want to add after this comment. Be careful not to change

# the ‘exec tail’ line above.

### END /etc/grub.d/40_custom ###
 
 
更改Grub2背景图片

注释的地方自己找找改改就行

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

sudo gedit /etc/grub.d/00_header

cat << EOF
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default="${GRUB_DEFAULT}"
if [ \${prev_saved_entry} ]; then
saved_entry=\${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod jpeg #增加支持JPG文件
insmod png   #增加支持PNG文件
EOF


cat << EOF
if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then
set gfxmode=1024x768     ##设置GRUB分辨率,按自己情况设置
insmod gfxterm
insmod ${GRUB_VIDEO_BACKEND}
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
EOF


----------------- ------------------ -----------------< br />$ sudo gedit /etc/grub.d/05_debian_theme

use_bg=false
if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga,jpg} ; do #识别格式,增加JPG
if is_path_readable_by_grub $i ; then
bg=$i
case ${bg} in
*.png)        reader=png ;;
*.tga)        reader=tga ;;
*.jpg|*.jpeg)    reader=jpeg ;;
esac
if test -e /boot/grub/${reader}.mod ; then
echo "Found Debian background: `basename ${bg}`" >&2
use_bg=true
break
fi
fi
done
fi



cat << EOF
insmod ${reader}
if background_image `make_system_path_relative_to_its_root ${bg}` ; then
set color_normal=white/black          #设置字体颜色(注意图片的颜色与字的颜色)
set color_highlight=blue/black         #设置字体颜色
else
EOF
fi



----------------- -----------
选择图片文件,PNG或者JEP格式,用cp命令或者MV命令将图片以moreblue-orbit-grub.png的名字放入/boot/grub/下
cp moreblue-orbit-grub.png /boot/grub/

运行
$sudo update-grub2

你可能感兴趣的:(linux,ubuntu,grub2,linux启动,windwos启动)