2014-06-07 02:30:42
来 源
中存储网
Windows 7
上一篇文章讲的是:Win 7系统开机后自动连网的设置方法;本篇主题是:Windows 7、ubuntu 12.04、 xp双盘3系统grub配置方法

第一个盘: ubuntu12.04 Windows 7

第二个盘: xp

sudo update-grub  的结果只有Windows 7 和 ubuntu,点击Windows 7进入系统,看到了Windows 7和xp,Windows 7可以启动,但是xp不能。于是在网上搜索找到了一个别人的xp和ubuntu共存的grub文件。

发现我的少了一句话,drivemap -s (hd0) ${root},于是加上就ok了。

即在/boot/grub/grub.cfg中添加如下内容即可

menuentry "Windows xp" --class windows --class os {

insmod ntfs

set root='(hd0,1)'

search --no-floppy --fs-uuid --set=root 4C844B34844B2036

drivemap -s (hd0) ${root}

chainloader +1

}

set root=(hd0,1),代表第0块磁盘的第一个分区,其中硬盘号是从0开始,分区号是从1开始。我的xp是在第0个分区。我的xp和ubuntu不再同一个磁盘,grub中ubuntu显示在hd1所以xp必然在hd0,而系统在c:盘,所以是第一个分区

整个的grub文件如下:

#

# DO NOT EDIT THIS FILE

#

# It is automatically generated by grub-mkconfig using templates

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

#

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

if [ -s $prefix/grubenv ]; then

set have_grubenv=true

load_env

fi

set default="0"

if [ "${prev_saved_entry}" ]; then

set saved_entry="${prev_saved_entry}"

save_env saved_entry

set prev_saved_entry=

save_env prev_saved_entry

set boot_once=true

fi

function savedefault {

if [ -z "${boot_once}" ]; then

saved_entry="${chosen}"

save_env saved_entry

fi

}

function recordfail {

set recordfail=1

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

}

function load_video {

insmod vbe

insmod vga

insmod video_bochs

insmod video_cirrus

}

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

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

set gfxmode=auto

load_video

insmod gfxterm

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

set locale_dir=($root)/boot/grub/locale

set lang=zh_CN

insmod gettext

fi

terminal_output gfxterm

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/light-gray

if background_color 44,0,30; then

clear

fi

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

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

function gfxmode {

set gfxpayload="$1"

if [ "$1" = "keep" ]; then

set vt_handoff=vt.handoff=7

else

set vt_handoff=

fi

}

if [ ${recordfail} != 1 ]; then

if [ -e ${prefix}/gfxblacklist.txt ]; then

if hwmatch ${prefix}/gfxblacklist.txt 3; then

if [ ${match} = 0 ]; then

set linux_gfx_mode=keep

else

set linux_gfx_mode=text

fi

else

set linux_gfx_mode=text

fi

else

set linux_gfx_mode=keep

fi

else

set linux_gfx_mode=text

fi

export linux_gfx_mode

if [ "$linux_gfx_mode" != "text" ]; then load_video; fi

menuentry 'Ubuntu,Linux 3.2.0-23-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

gfxmode $linux_gfx_mode

insmod gzio

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

linux    /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=2636856c-62cc-4195-8995-148eb8cfb30c ro   quiet splash $vt_handoff

initrd    /boot/initrd.img-3.2.0-23-generic-pae

}

menuentry 'Ubuntu,Linux 3.2.0-23-generic-pae (恢复模式)' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod gzio

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

echo    '载入 Linux 3.2.0-23-generic-pae …'

linux    /boot/vmlinuz-3.2.0-23-generic-pae root=UUID=2636856c-62cc-4195-8995-148eb8cfb30c ro recovery nomodeset

echo    '载入初始化内存盘…'

initrd    /boot/initrd.img-3.2.0-23-generic-pae

}

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

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

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

menuentry "Memory test (memtest86+)" {

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

linux16    /boot/memtest86+.bin

}

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

insmod part_msdos

insmod ext2

set root='(hd1,msdos6)'

search --no-floppy --fs-uuid --set=root 2636856c-62cc-4195-8995-148eb8cfb30c

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

}

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

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

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {

insmod part_msdos

insmod ntfs

set root='(hd0,msdos1)'

search --no-floppy --fs-uuid --set=root 4C844B34844B2036

chainloader +1

}

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

menuentry "Windows xp" --class windows --class os {

insmod ntfs

set root='(hd0,1)'

search --no-floppy --fs-uuid --set=root 4C844B34844B2036

drivemap -s (hd0) ${root}

chainloader +1

}

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

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

if [ -f  $prefix/custom.cfg ]; then

source $prefix/custom.cfg;

fi

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

最后说一句:以上是配置Windows 7、ubuntu 12.04、 xp双盘3系统grub的方法

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。