双硬盘安装ubuntu 12.04和win7启动问题
双硬盘安装ubuntu 12.04和win7启动问题两块SATA硬盘,一块是SSD (sda),一块是普通的普通的SATA硬盘(sdb)我先在SSD上安装了Win7,使用了整个SSD的空间
然后在普通SATA硬盘上安装了12.04,建立了个128MB的/boot挂载分区,和1TB的/挂载分区。
现在的情况是,可以通过修改bios启动设置来进入不同的系统,但是非常麻烦。。
如果选择从ubuntu那块硬盘启动的话,grub提供的自动生成启动菜单里最后一个menuentry是windows 7, 但是选中之后,有错误,启动不了win7系统。
我想知道如何修改/boot/grub/grub.cfg来使这个grub启动菜单能工作正常,也就是从这个菜单里可以选择ubuntu或者win7来启动。
非常感谢!!! 首先要挂载windows所在分区,通过grub-probe探测UUID
grub-probe --target=fs_uuid /media/sda1/bootmgr
路径看你挂载到哪里了
然后在grub.cfg里面加入这些东西
menuentry "Windows7" {
insmod part_msdos
insmod ntfs
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --no-floppy --set=root 你获取的UUID
ntldr /bootmgr
}
应该就可以了。
不过grub2之后都是有命令生成配置文件的,建议你修改那个之后通过命令生成grub.cfg. 计算机启动时,被启动的那个硬盘会被识别为第一个硬盘,但启动完 GRUB ,顺序就又回到系统重新根据硬件接口识别的顺序。
这样导致启动失败的。Windows 到硬盘顺序重新识别好像比较靠后,Linux 因为是内核识别,而内核本身启动时,又没有需要再一次读取硬盘的地方,所以 Linux 启动很容易,Windows 启动会出问题……
以前的 GRUB 1 ,可以用一个交换的功能使 GRUB 顺序和实际顺序变成一致。GRUB2 我就不知道了。
我建议,grub 装到第一个硬盘的 MBR 上吧…… menuentry "Windows XP" {
insmod ntldr
search --no-floppy --set=root -f /ntldr
drivemap -s (hd0) ${root}
ntldr /ntldr
}
menuentry "Windows 7" {
insmod ntldr
search --no-floppy --set=root -f /bootmgr
drivemap -s (hd0) ${root}
ntldr /bootmgr
} Thank you guys!
I tried dgy18787's method. I get the UUID, but using the following grub.cfg is not success full...
My current grub.cfg is as follows:
#
# 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 efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
}
insmod part_gpt
insmod ext2
set root='(hd1,gpt3)'
search --no-floppy --fs-uuid --set=root 90c9a503-fdce-4176-afda-8f3a5c853bbc
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=auto
load_video
insmod gfxterm
insmod part_gpt
insmod ext2
set root='(hd1,gpt2)'
search --no-floppy --fs-uuid --set=root 95614555-a1ff-4992-9ed7-5ef6c46f3687
set locale_dir=($root)/grub/locale
set lang=en_US
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, with Linux 3.2.0-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd1,gpt2)'
search --no-floppy --fs-uuid --set=root 95614555-a1ff-4992-9ed7-5ef6c46f3687
linux /vmlinuz-3.2.0-23-generic root=UUID=90c9a503-fdce-4176-afda-8f3a5c853bbc ro quiet splash $vt_handoff
initrd /initrd.img-3.2.0-23-generic
}
menuentry 'Ubuntu, with Linux 3.2.0-23-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_gpt
insmod ext2
set root='(hd1,gpt2)'
search --no-floppy --fs-uuid --set=root 95614555-a1ff-4992-9ed7-5ef6c46f3687
echo 'Loading Linux 3.2.0-23-generic ...'
linux /vmlinuz-3.2.0-23-generic root=UUID=90c9a503-fdce-4176-afda-8f3a5c853bbc ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /initrd.img-3.2.0-23-generic
}
### 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_gpt
insmod ext2
set root='(hd1,gpt2)'
search --no-floppy --fs-uuid --set=root 95614555-a1ff-4992-9ed7-5ef6c46f3687
linux16 /memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_gpt
insmod ext2
set root='(hd1,gpt2)'
search --no-floppy --fs-uuid --set=root 95614555-a1ff-4992-9ed7-5ef6c46f3687
linux16 /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
insmod search_fs_uuid
insmod ntldr
search --fs-uuid --no-floppy --set=root C0503DF5503DF330
ntldr /bootmgr
# insmod part_msdos
# insmod ntfs
# set root='(hd0,msdos1)'
# search --no-floppy --fs-uuid --set=root C0503DF5503DF330
# chainloader +1
# search --no-floppy --fs-uuid --set=root 1ce5-7f28
# chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
# search --no-floppy --fs-uuid --set=root E3C9E316-0B5C-4DB8-817D-F92DF00215AE
# search --no-floppy --fs-uuid --set=root 188CC8858CC85EBE
# chainloader +1
}
### 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 ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f$prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ### 8) 8) 8) 期待mgc3 这个。。不解决问题啊
原帖由 ghw 于 2012-8-13 08:13 发表 http://forum.linuxfans.org/images/common/back.gif
8) 8) 8) 期待mgc3 好青年 !! 求助!!!
页:
[1]