当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 【已解决】如果利用Windows的启动引导器引导win/lin的双系统
帖子发表于 : 2008-10-10 16:31 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
我想通过NTLDR/Bootmgr实现对Ubuntu的引导,在不安装grub4dos到Ubuntu分区,而是安装GRUB到Ubuntu分区前提下,请问各位达人,我应该如何在boot.ini或者BCD中添加对GRUB的引导呢?
硬盘分区以最简单的为例,单硬盘,第一个主分区装了XP或者Vista,第二个主分区装了Ubuntu。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

【已解决】
我通过自己的学习,已经自己解决了这个问题,并且实践成功。这里将我实现的方法写在下面,还希望高人指点。
我在设置的过程中使用了可启动软盘。如果没有软盘,根据实际需要,也可以用可启动U盘或者Live CD代替。

XP/Ubuntu:
1.将Fdisk.exe和GRUB4DOS拷贝到可启动FDD(软盘),从FDD启动,在DOS环境下输入如下命令:
代码:
#这条命令用来修复XP的MBR
fdisk /mbr

2.继续在DOS环境下输入如下命令:
代码:
cd grub4dos
grub

在GRUB4DOS的选择菜单中,选择”command”,在grub>环境下输入如下命令:
代码:
#这条命令用来找到menu.lst所在分区,它会反馈一个(hdx,y)形式的结果,在本例中,这里是(hd0,1)
find /boot/grub/menu.lst
root (hdx,y)
#这条命令用来安装GRUB到Linux分区,而不是整个硬盘上。
setup (hdx,y)
quit

3.在DOS环境下输入grub,在GRUB4DOS的选择菜单中,选择"find anb boot linux with menu.lst already installed",进入Ubuntu后,在终端输入如下命令:
代码:
#这条指令非常关键。它是把Linux分区的第一个扇区即Linux分区的引导扇区(大小为512 字节)复制为Windows 启动分区根目录下名为linux.lnx的文件。sdaA指的是Linux的分区,在本例中为sda2,/media/disk-B是指Windows分区挂载在Ubuntu的路径,在本例中为/media/disk。其它的Linux挂载的路径可能不同,甚至我们需要自己手动输入再输入一条mount命令将Windows分区挂载到/mnt下,然后再执行这条命令。
sudo dd if=/dev/sdaA of=/media/disk-B/linux.lnx bs=512 count=1

4.重启后进入XP,在命令提示符中,输入如下命令:
代码:
cd c:\
attrib boot.ini –r –s –h

在C盘根目录下,打开boot.ini文件,然后在最下方添加如下命令:
代码:
C:\linux.lnx=“Ubuntu”

重启即可。



Vista/Ubuntu:
1.将Vista安装光盘放入光驱,从光驱启动,在语言,时区,键盘选择界面点击”下一步”,然后选择”修复计算机”,在”系统恢复选项”中,选择Vista系统,然后点击”下一步”,接下来单击”命令提示符”,在DOS环境下输入如下命令:
代码:
bootrec /fixmbr

成功后重启,这样执行的结果是能进入Vista,而不能进入Ubuntu。
2.从Live CD进入Ubuntu,在终端下输入如下命令:
代码:
sudo grub
find /boot/grub/menu.lst
root (hdx,y)
setup (hdx,y)
quit
sudo mkdir /mnt/windows
#mount命令和dd命令需要根据具体的环境来输入硬盘分区信息。X,Y只是符号,而且并不等于上面的x,y。
sudo mount -t ntfs /dev/sdaX /mnt/windows
sudo dd if=/dev/sdaY of=/mnt/windows/ubuntu.lnx bs=512 count=1
sudo umount /mnt/windows
sudo reboot

4.重启进入Vista,以管理员身份运行CMD.exe,在命令提示符下,输入如下命令:
代码:
#这里是通过BCDEdit.exe对Vista的BCD(类似于XP的boot.ini)进行编辑。执行完第一条命令会得到一个反馈的结果,类似于{7834f68a-7434-11dd-b717-001ec906b8c6}的形式,下面的命令中的{id}既是指的这个。
bcdedit /create /d “Ubuntu" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \ubuntu.lnx
bcdedit /displayorder {id} /addlast
bcdedit /timeout 5

重启即可。


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


最后由 anriqing 编辑于 2008-10-31 22:13,总共编辑了 10 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: [请教]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-10 18:02 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
boot.ini 应该不行,bcd 不清楚,估计也够呛 —— 微软不会为 linux 铺路的

顺便说,正设想一个东东,通过 boot.ini 加载运行,它会列出所有分区,可以选择其中之一启动


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [请教]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-10 19:09 

注册: 2008-04-28 13:01
帖子: 10
送出感谢: 0 次
接收感谢: 1
GRUB不就能实现你要的功能嘛

ptptptptptpt 写道:
boot.ini 应该不行,bcd 不清楚,估计也够呛 —— 微软不会为 linux 铺路的

顺便说,正设想一个东东,通过 boot.ini 加载运行,它会列出所有分区,可以选择其中之一启动


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [请教]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-10 19:27 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
carter2005 写道:
GRUB不就能实现你要的功能嘛

ptptptptptpt 写道:
boot.ini 应该不行,bcd 不清楚,估计也够呛 —— 微软不会为 linux 铺路的

顺便说,正设想一个东东,通过 boot.ini 加载运行,它会列出所有分区,可以选择其中之一启动


不能吧。怎么实现??我要的功能,前提是满足楼主的要求


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [请教]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-10 21:09 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
是哦。我为了这个问题头疼几天了,boot.ini没找到对应的添加方法,BCDEdit又太麻烦,而且不知道具体去怎样配置,也不知道能不能成功。


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [请教]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-11 22:54 
头像

注册: 2008-09-25 12:23
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
你好,
单只是用boot.ini引导grub还是可以的。但是当你安装ubuntu时grub默认是装到MBR的,他优先于NT引导。
boot.ini引导grub:
把grub程序放到c盘
在boot中添加如下指令: c:\grldr="grub引导" (grub程序放在根目录下当然也可以放于其他目录)
便可引导进入grub。按C进入命令模式,载入内核文件,加载引导程序。


_________________
http://www.sunuk.cn


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 19:43 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
大家来看看咯。有什么不对的地方还希望大家指正。这里我实现的是NTLDR/Bootmgr+GRUB的引导,其实NTLDR/Bootmgr+GRUB4DOS的引导也是可以实现的,我都已经实践过并且成功了。


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 20:54 
头像

注册: 2008-02-17 23:47
帖子: 22108
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 82
vista那个狗屁BCD好像要用专用软件才能改,就叫啥xxBCD,烦死,还是GRUB最好,通吃!


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 21:03 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
我不太喜欢 dd mbr 的方法,因为不够灵活,分区发生变化时,可能会失效


实际上,最好的方法还是 grub4dos ,可以用在 xp 和 vista 下,通过 win 的 loader 加载,启动 grldr 的 menu.lst ,此时可以通过这个 menu.lst 加载 kernel initrd 来启动linux 系统,但是,由于此 menu.lst 不属于 linux 系统,所以,安装新内核之后,此menu.lst不会被更新,更新的是属于 linux 系统的 /boot/grub/menu.lst ,因此,此 menu.lst 内容可以由一系列 congfigfile 命令组成,以加载 linux 的 /boot/grub/menu.lst ,这样,既能灵活控制,又能用上自动更新的 /boot/grub/menu.lst


而且,似乎你说的并非真正“安装GRUB到Ubuntu分区”,而是安装到mbr。安装GRUB到Ubuntu分区意思是,把grub 的引导代码写入 Ubuntu分区 的 引导扇区。这样的话,通过 win loader 加载 grldr ,再 chainloader (hdx,x)+1 ,即可启动 ubuntu 。


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 21:24 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
ptptptptptpt 写道:
我不太喜欢 dd mbr 的方法,因为不够灵活,分区发生变化时,可能会失效


实际上,最好的方法还是 grub4dos ,可以用在 xp 和 vista 下,通过 win 的 loader 加载,启动 grldr 的 menu.lst ,此时可以通过这个 menu.lst 加载 kernel initrd 来启动linux 系统,但是,由于此 menu.lst 不属于 linux 系统,所以,安装新内核之后,此menu.lst不会被更新,更新的是属于 linux 系统的 /boot/grub/menu.lst ,因此,此 menu.lst 内容可以由一系列 congfigfile 命令组成,以加载 linux 的 /boot/grub/menu.lst ,这样,既能灵活控制,又能用上自动更新的 /boot/grub/menu.lst


而且,似乎你说的并非真正“安装GRUB到Ubuntu分区”,而是安装到mbr。安装GRUB到Ubuntu分区意思是,把grub 的引导代码写入 Ubuntu分区 的 引导扇区。这样的话,通过 win loader 加载 grldr ,再 chainloader (hdx,x)+1 ,即可启动 ubuntu 。


请教一下pt:
代码:
find /boot/gurb/menu.lst
root (hdx,y)
setup (hdx,y)
quit

这种方式安装的GRUB不是安装到了Linux分区么?它具体的位置不是Linux分区的引导扇区吗?怎么会是安装到MBR呢。安装到MBR的话,这里的第三条命令应该是下面这样写的吧:
代码:
setup (hdx)

再补充一下:我写这种启动引导方式不是说我觉得这种引导方式最好。事实上,我知道由GURB4DOS引导比较灵活,而且我也会设置由GRUB4DOS引导的启动,只是我最近几天对各种方式的启动引导感觉好奇,所以想把所有能实现的方法都实现一下而已。感觉这种方式是用的比较少的,我自己开始也不会,所以发帖子到这里来请教大家的。
目前我已经实现的启动引导方式有以下这些:
XP/Ubuntu:GRUB+NTLDR,NTLDR+GRUB,NTLDR+GRUB4DOS,GRUB4DOS+NTLDR;
Vista/Ubuntu:GRUB+Bootmgr,Bootmgr+GRUB,Bootmgr+GRUB4DOS,GRUB4DOS+Bootmgr


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 22:14 
头像

注册: 2006-09-19 18:16
帖子: 3711
送出感谢: 0 次
接收感谢: 3
不好意思,是我看错了 ,一看到 dd 、mbr 下意识地以为又是 dd 硬盘第一扇区的法子 :em06

的确,楼主所说的方法行得通。

之前没见过这种用法。当然原理都是类似的,“备份 ubuntu 分区第一扇区、通过ntldr 加载” 和 “用 grub4dos chainloader (ubuntu分区)+1 ” 都是把第一扇区的数据(grub stage1)加载到内存并执行


_________________
Ubuntu 系统备份、恢复、克隆、批量部署、制作 live 系统


页首
 用户资料  
 
12 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-13 22:56 

注册: 2008-05-03 23:42
帖子: 3681
送出感谢: 4
接收感谢: 6
你的问题是"如何在Windows下添加对GRUB的引导",这个还是没有办法的
你解决的是在 windows 下引导 ubuntu,这是两个问题。
win 下引导 ubuntu 是很多实现方法的,但是没有一个是真正意义上把引导交给了 ubuntu 分区引导扇区里的 grub 的,所以你的问题还是无解的。
只是一定要实现 win 下对 grub 的引导,即无可能,亦无必要。
如果一定要找个办法的话,用 win 引导 grub4dos,再用 grub4dos chainloader ubuntu 分区,或许算真的把引导交给了 ubuntu 分区引导扇区里的 grub,但这是 grub4dos 的功能,不是 win 自己的。所以你的问题 "如何在Windows下添加对GRUB的引导" 答案还是, win 没有这个能力。
=======================================================
要从 win 引导 ubuntu 的话,很简单,放个 grldr 在 c 盘,在 boot.ini 里加一句话就好了。vista 麻烦点,放 grldr.mbr 和 grldr 在 c 盘,然后像你写的那样,使用 bcdedit。
dd 的办法是应该被摒弃的。
顺便说一下,bcdedit 确实很讨厌,但是相比 boot.ini,有一个好处,就是你装在第一主分区的 vista 克隆下来直接挪到另一个主分区马上能用。
另外,既然你对各种引导方式有兴趣,我再补充一个,
把 ntldr 改名为 ntldrxp,(bootmgr 改名为 bootmgrv)把 grldr 拷到 c 盘,改名为 ntldr (bootmgr),欺骗 windows,首先起来的是 grub4dos,ubuntu 能引导了,然后在 menu.lst 里添加对 windows 的引导:

title Microsoft Windows XP
find --set-root /ntldrxp
chainloader /ntldrxp

title Microsoft Windows Vista
find --set-root /bootmgrv
chainloader /bootmgrv

不想玩 bcd 的可以用这个。


页首
 用户资料  
 
13 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-14 8:03 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
billbear 写道:
你的问题是"如何在Windows下添加对GRUB的引导",这个还是没有办法的
你解决的是在 windows 下引导 ubuntu,这是两个问题。
win 下引导 ubuntu 是很多实现方法的,但是没有一个是真正意义上把引导交给了 ubuntu 分区引导扇区里的 grub 的,所以你的问题还是无解的。
只是一定要实现 win 下对 grub 的引导,即无可能,亦无必要。
如果一定要找个办法的话,用 win 引导 grub4dos,再用 grub4dos chainloader ubuntu 分区,或许算真的把引导交给了 ubuntu 分区引导扇区里的 grub,但这是 grub4dos 的功能,不是 win 自己的。所以你的问题 "如何在Windows下添加对GRUB的引导" 答案还是, win 没有这个能力。
=======================================================
要从 win 引导 ubuntu 的话,很简单,放个 grldr 在 c 盘,在 boot.ini 里加一句话就好了。vista 麻烦点,放 grldr.mbr 和 grldr 在 c 盘,然后像你写的那样,使用 bcdedit。
dd 的办法是应该被摒弃的。
顺便说一下,bcdedit 确实很讨厌,但是相比 boot.ini,有一个好处,就是你装在第一主分区的 vista 克隆下来直接挪到另一个主分区马上能用。
另外,既然你对各种引导方式有兴趣,我再补充一个,
把 ntldr 改名为 ntldrxp,(bootmgr 改名为 bootmgrv)把 grldr 拷到 c 盘,改名为 ntldr (bootmgr),欺骗 windows,首先起来的是 grub4dos,ubuntu 能引导了,然后在 menu.lst 里添加对 windows 的引导:

title Microsoft Windows XP
find --set-root /ntldrxp
chainloader /ntldrxp

title Microsoft Windows Vista
find --set-root /bootmgrv
chainloader /bootmgrv

不想玩 bcd 的可以用这个。


受教了。多谢bear指点。


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


页首
 用户资料  
 
14 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-17 19:25 

注册: 2008-10-14 16:18
帖子: 27
送出感谢: 0 次
接收感谢: 0 次
在XP和fedora双系统中怎么正确卸载Fedora系统,我在装Fedora时使用GRUB引导双系统,怎么还原到XP中启动状态?


页首
 用户资料  
 
15 楼 
 文章标题 : Re: [已解决]如何在Windows下添加对GRUB的引导
帖子发表于 : 2008-10-17 20:10 
头像

注册: 2008-08-19 12:59
帖子: 189
送出感谢: 0 次
接收感谢: 0 次
leikang 写道:
在XP和fedora双系统中怎么正确卸载Fedora系统,我在装Fedora时使用GRUB引导双系统,怎么还原到XP中启动状态?

通过fdisk.exe工具恢复XP的MBR,然后进入XP后删除Linux的分区即可。需要注意的是fdisk.exe与具体使用的DOS版本必须匹配。


_________________
Windows Vista Ultimate SP1 CHS + Ubuntu 8.04.1 desktop i386

CPU:Intel Core 2 Duo T7250 RAM:2048MB DDR2-667
VGA:NVidia Geforce 8400M GS 128MB HD:SumSung 160G 5400R
LAN:Broadcom NetLink WIFI:Intel 3945ABG
WebCam:2.0M


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译