grub2引导多系统的若干问题

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
RealQT
帖子: 2
注册时间: 2010-02-11 17:21
送出感谢: 0
接收感谢: 0

grub2引导多系统的若干问题

#1

帖子 RealQT » 2010-02-11 18:09

我的系统是win7 + winxp + ubuntu 9.10,安装也是这个顺序(win7是机器自带的)
装完xp只能进xp,不能进win7了,理所应当的。不管他,继续装ubuntu。用grub2引导,结果发现,引导菜单变成如下:
linux xxxxx
win vista loader (这个应该是ACER的系统恢复分区)
win7 loader
win xp loader

OK,看上去很不错,没问题。结果尝试进入xp 时发现,系统不是进xp而是ACER系统恢复。
这里说一下我的分区结构,是
ACER恢复分区 主分区
Win7 100M隐藏分区 主,活动分区
win7 分区 主分区
普通的分区 扩展分区
win XP分区 扩展分区
linux swap
/boot
/
/home
看了一下XP分区,发现没有bootloader,于是估计是bootloader写到了win7 的100M隐藏分区。
这中间尝试用easyBCD 2.0,可以正常引导 XP,但是无法引导Ubuntu,猜测还是 100M隐藏分区的毛病,于是干脆干掉了隐藏分区,用Win7修复MBR,现在分区变成了
ACER恢复分区 主分区
win7 分区 主,活动分区
普通的分区 扩展分区
win XP分区 扩展分区
linux swap
/boot
/
(/home这次装的时候没分)
现在 EasyBCD已经可以正确引导三个系统了。但是我还是想用Grub2引导,因为对之前Linux的分区不是太满意,于是顺便重装,结果发现Grub2仍然在引导XP的时候错误进入ACER系统恢复。由于我的XP是ACER的OEM盘,我也搞不清安装的时候到底把引导记录 写到哪里了,是MBR还是哪个主分区。现在只好上论坛来求教了,谢谢各位解答
忘了个重要的问题,下面是我的 grub.cfg关于windows的部分内容

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set daa41c49a41c2b11
chainloader +1
}
menuentry "Windows 7 (loader) (on /dev/sda2)" {
insmod ntfs
set root=(hd0,2)
search --no-floppy --fs-uuid --set aaa2d966a2d93791
chainloader +1
}
menuentry "Microsoft Windows XP Professional (on /dev/sda6)" {
insmod ntfs
set root=(hd0,6)
search --no-floppy --fs-uuid --set 1c309009308fe85a
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
在我看来,这个drivemap -s (hd0) ${root}看上去挺可疑的


PS:此外还有一个关于分区的问题
用win7自带磁盘工具看,Linux的三个分区swap /boot / 都是主分区, win7的分区也是主分区,这显然是不靠谱了,姑且不管
用AcronisDDS看, ACER, WIN7分区是主分区,过去的win7 100M隐藏分区也是主分区。 由于安装Ubuntu的时候,第一次只能分扩展分区,干掉隐藏分区第二次安装能分出一个主分区然后就不能分区了,看来AcronisDDS识别是正确的。但是我装的这个版本可能老点,把EX4认成了EX3,而且显示在linux 的swap之前, 还有大概7600MB的未分配空间,对这部分空间看上去还是能操作的。我想知道两个问题:1,ADDS对主分区的识别是否正确 2,这7600M是否真的存在,如果是,那是不是Ubuntu在划分分区时出的问题。
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53
送出感谢: 0
接收感谢: 108 次

Re: grub2引导多系统的若干问题

#2

帖子 onshoestring » 2010-02-11 18:28

menuentry "Microsoft Windows XP Professional (on /dev/sda6)" {
insmod ntfs
set root=(hd0,6)
search --no-floppy --fs-uuid --set 1c309009308fe85a
drivemap -s (hd0) ${root}删除这行试试
chainloader +1
}


对用这两个命令看看

代码: 全选

sudo fdisk -l
sudo fdisk -lu
上次由 onshoestring 在 2010-02-11 18:39,总共编辑 4 次。
头像
Hello World!
帖子: 3051
注册时间: 2008-06-23 15:19
系统: ���������
来自: 北欧某国
送出感谢: 14 次
接收感谢: 2 次
联系:

Re: grub2引导多系统的若干问题

#3

帖子 Hello World! » 2010-02-11 18:29

您好,首先说一下,您对问题的描述真是十分详细,这在我们论坛里是很少见的。
但是我不用win7,这个我帮不了您。
显示分区信息,建议使用 sudo fdisk /dev/sda -l 命令,我比较信任 fdisk 命令。
http://noie.name 网站改版中。
头像
smallapple
论坛版主
帖子: 7867
注册时间: 2009-03-28 15:12
送出感谢: 0
接收感谢: 19 次

Re: grub2引导多系统的若干问题

#4

帖子 smallapple » 2010-02-11 18:43

看清楚了。
grub2引导xp格式的逻辑分区上的引导扇区时,会去搜索并引导第一主活动分区,所以你用set root=hd0,6 再 chainloader 的,就启动为恢复模式了。

要不改回用BCD 引导,要不用bean大的burg,再不就用先进入win7再选xp的二层启动菜单。
RealQT
帖子: 2
注册时间: 2010-02-11 17:21
送出感谢: 0
接收感谢: 0

Re: grub2引导多系统的若干问题

#5

帖子 RealQT » 2010-02-11 18:45

onshoestring 写了:menuentry "Microsoft Windows XP Professional (on /dev/sda6)" {
insmod ntfs
set root=(hd0,6)
search --no-floppy --fs-uuid --set 1c309009308fe85a
drivemap -s (hd0) ${root}删除这行试试
chainloader +1
}


对用这两个命令看看

代码: 全选

sudo fdisk -l
sudo fdisk -lu
其实我也都有fdisk过,有看没有记,呵呵。先去删除那行试试,要是行的话因为更新grub的话grub.cfg还会变回来,记得还得改etc/default/grub下的内容,对这个没什么经验呀,没玩过grub2,都不了解。
先谢谢楼上几位的迅速解答
smallapple 写了:看清楚了。
grub2引导xp格式的逻辑分区上的引导扇区时,会去搜索并引导第一主活动分区,所以你用set root=hd0,6 再 chainloader 的,就启动为恢复模式了。

要不改回用BCD 引导,要不用bean大的burg,再不就用先进入win7再选xp的二层启动菜单。
又看到了这位的回答,如果这是前人经验的结果,那看来我可以不用尝试去修改grub2了,看来是grub2本身的缺陷。那我还是老实先用BCD吧。
上次由 RealQT 在 2010-02-11 18:48,总共编辑 1 次。
头像
smallapple
论坛版主
帖子: 7867
注册时间: 2009-03-28 15:12
送出感谢: 0
接收感谢: 19 次

Re: grub2引导多系统的若干问题

#6

帖子 smallapple » 2010-02-11 18:45

分区的用sudo fdisk -l 贴出来看看。
不用管win7的,那个是SB。
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53
送出感谢: 0
接收感谢: 108 次

Re: grub2引导多系统的若干问题

#7

帖子 onshoestring » 2010-02-11 18:48

smallapple 写了:看清楚了。
grub2引导xp格式的逻辑分区上的引导扇区时,会去搜索并引导第一主活动分区,所以你用set root=hd0,6 再 chainloader 的,就启动为恢复模式了。

要不改回用BCD 引导,要不用bean大的burg,再不就用先进入win7再选xp的二层启动菜单。
这个好奇怪啊

上面那个${root}内容是不是还是hd0,如果是hd0,那么drivemap -s (hd0) ${root}这句什么也没干?
小苹果说说这句是什么意思?
上次由 onshoestring 在 2010-02-11 18:54,总共编辑 1 次。
头像
smallapple
论坛版主
帖子: 7867
注册时间: 2009-03-28 15:12
送出感谢: 0
接收感谢: 19 次

Re: grub2引导多系统的若干问题

#8

帖子 smallapple » 2010-02-11 18:54

那个drivemap 的在这没用的,是双硬盘从第二硬盘启动才有作用。
grub2不能正确识别逻辑分区上xp格式的引导扇区,从逻辑分区上root 再chainloader 就跑到主分区去了。win7格式的引导扇区就可以chainloader 了。应该算是grub2的bug吧。

那个${root}是上面的root的结果,也就是 (hd0,6)

drivemap -s (hd0) ${root}就是把 (hd0,6) 映射为 (hd0),-s 就是set root 的意思。
头像
onshoestring
论坛版主
帖子: 4666
注册时间: 2009-09-06 5:53
送出感谢: 0
接收感谢: 108 次

Re: grub2引导多系统的若干问题

#9

帖子 onshoestring » 2010-02-11 18:59

那个${root}是上面的root的结果,也就是 (hd0,6)
光看${root}知道root是个变量,没看上边给变量赋值,向小苹果学习了。
回复

回到 “启动和引导”