无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 25193|回复: 67
打印 上一主题 下一主题

Q: 如何用grub4dos快速启动XP/Win7系统?

[复制链接]
跳转到指定楼层
#
发表于 2009-8-14 09:16:38 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
A:要通过grub4dos启动NT系统,无论是Xp还是win7,都无法跳过微软自己的引导程序,也就是无法跳过ntldr或bootmgr直接引导xp或win7。但这并不意味着就没有什么快捷方式可选。我个人一直推荐的快捷方式就是使用NT的引导软盘,用grub4dos直接引导对应系统的引导软盘即可实现快捷引导NT系统。

xp引导软盘的做法:
建立一张软盘映像,将xp(或windows 2003的,兼容性更好)引导分区根目录下的ntldr、ntdetect.com、boot.ini(如果你需要显示菜单,也可以复制bootfont.bin)到软盘根目录下,快捷起见,我们一般情况下不需要显示boot.ini启动菜单,因此,将boot.ini中的timeout设置为0,default当然要指向默认要启动的系统。

然后用grub4dos如下启动这张软盘映像:
  1. title 直接启动XP
  2. map --mem /xp.img (fd0)
  3. map --hook
  4. root (fd0)
  5. chainloader /ntldr
复制代码
已知问题:上面这种方式启动,可能无法正常引导基于微软的ramdisk.sys的ramxp系统,解决办法:保证xp.img在硬盘上连续存放,然后将上面map命令中的--mem选项去掉。

vista/win7启动软盘做法:
新建一张软盘映像(命名为win7.img),将win7引导分区的bootmgr复制到软盘根目录,在软盘根目录下建立一个boot文件夹,将修改合适的BCD(如何修改,自己去学习bcdedit用法)文件复制到软盘boot文件夹下,视是否需要显示菜单及菜单语言配置情况,将en-US或zh-CN等语言文件夹复制到软盘boot文件夹下。用grub4dos启动:
  1. title 直接启动Win7
  2. map --mem /win7.img (fd0)
  3. map --hook
  4. root (fd0)
  5. chainloader /bootmgr
复制代码
67#
发表于 2009-11-16 20:33:21 | 只看该作者
原帖由 friend8179 于 2009-11-16 19:33 发表
zhe这个值是CDROM(159)?

启动iso格式的PE在注册表中SYSTEM\CurrentControlSet\Control\SystemBootDevice

此处看到的键值

后来在时空上也看到各位讨论,和啥有关来着忘记了

159(0x9f)是bios中给光驱分配的盘号,就像软驱是0,第一硬盘是128 (0x80)一样。

但最关键的是,光驱这个盘号不是通用的,各个主板不同,比如vmware的bios分的是159(0x9f),但其他主板不一定是这个数字。

这个号码在grub下用geometry (cd)可以查看到

[ 本帖最后由 fujianabc 于 2009-11-16 20:55 编辑 ]
回复

使用道具 举报

66#
发表于 2009-11-16 19:30:01 | 只看该作者
说实话,multi(0)disk(0)cdrom(0)这种写法可能不是用于pc平台的,以前看见过的光驱arc路径都是很奇怪的写法,里面有不确定的参数
回复

使用道具 举报

65#
发表于 2009-11-16 18:28:43 | 只看该作者
原帖由 fujianabc 于 2009-11-14 19:50 发表
我刚才用原版2003 sp1的setupldr.bin+ntdetect.com以及一个winnt.sif放到软盘上试了一下。从软盘启动的setupldr.bin完全可以读取fd0上的winnt.sif的,比如以下代码[SetupData]
BootDevice = "ramdisk(0)"
B ...

谢谢,明白了
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MiniPE\WinPE.IS_"
这个写法winnt.xpe必须与WinPE.IS_在同一个盘上,否则要指明ARC路径。现在是光盘路径怎么写的问题了。
原帖由 chenall 于 2009-11-14 20:01 发表
...光盘
multi(0)disk(0)cdrom(0)
...

我把老毛桃911原版光盘iso作为VMware客户机的光盘启动。发现如果将
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MiniPE\WinPE.IS_"
改为
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=multi(0)disk(0)cdrom(0)\MiniPE\WinPE.IS_"
其它不变,启动就失败。提示找不到multi(0)disk(0)cdrom(0)\MINIPE\WINPE.IS_。
常见的都是位于硬盘的写法multi(0)disk(0)rdisk(0)partition(1),或者省略。光盘不省略的话该怎么写呢?
回复

使用道具 举报

64#
发表于 2009-11-16 18:18:10 | 只看该作者

回复 #69 wjgyz740526 的帖子

这个写法很有可能出自我写的合盘菜单:)
http://bbs.wuyou.net/forum.php?m ... p;page=1#pid1694357
回复

使用道具 举报

63#
发表于 2009-11-16 14:10:38 | 只看该作者
我看见有人是这么做的

title         Windows NT/2K/XP/VISTA
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /ntldr || chainloader /bootmgr
回复

使用道具 举报

62#
发表于 2009-11-15 15:10:18 | 只看该作者
好帖,学习了!~~~~~~~~~
回复

使用道具 举报

61#
发表于 2009-11-14 20:01:05 | 只看该作者
看了SETUPLDR.BIN应该就是以下这些东西了。
硬盘
multi(0)disk(0)rdisk(0)partition(0)
光盘
multi(0)disk(0)cdrom(0)
软盘
multi(0)disk(0)fdisk(0)
PXE启动
net(0)
内存盘
ramdisk(0)
回复

使用道具 举报

60#
发表于 2009-11-14 19:50:37 | 只看该作者
原帖由 pseudo 于 2009-11-14 19:29 发表
老毛桃911不管版,setupldr.bin和ntdetect.com在fd0的wxpe目录,winnt.xpe在fd0根目录:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportas ...

我刚才用原版2003 sp1的setupldr.bin+ntdetect.com以及一个winnt.sif放到软盘上试了一下。从软盘启动的setupldr.bin完全可以读取fd0上的winnt.sif的,比如以下代码
  1. [SetupData]
  2. BootDevice = "ramdisk(0)"
  3. BootPath = "\i386\system32"
  4. OsLoadOptions = "/minint /fastdetect /rdexportascd /rdpath=multi(0)disk(0)rdisk(0)partition(1)\pe.is_"
复制代码
就可以从软盘启动setupldr.bin然后加载硬盘上的winpe镜像

至于你从软盘启动加载不了光盘上的镜像,这很正常,因为setupldr.bin要依靠bios来读取光盘。如果你不是从光盘启动,setupldr.bin访问不了光盘的

如果你是从光盘上的虚拟软盘启动的setupldr.bin,想要加载光盘上的镜像,你就要考虑winnt.sif中光盘上文件的路径怎么写了,在硬盘上写成例如multi(0)disk(0)rdisk(0)partition(1)的形式,光驱的arc路径则比较麻烦了

[ 本帖最后由 fujianabc 于 2009-11-14 19:54 编辑 ]
回复

使用道具 举报

59#
发表于 2009-11-14 19:29:20 | 只看该作者

回复 #64 fujianabc 的帖子

老毛桃911不管版,setupldr.bin和ntdetect.com在fd0的wxpe目录,winnt.xpe在fd0根目录:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=MiniPE\WinPE.IS_"
如果光盘有winnt.xpe就正常。
现在有种感觉:winnt.xpe必须与WinPE.IS_在同一个盘上。

[ 本帖最后由 pseudo 于 2009-11-14 19:32 编辑 ]
回复

使用道具 举报

58#
发表于 2009-11-14 18:44:43 | 只看该作者
原帖由 pseudo 于 2009-11-14 11:55 发表
我把setupldr.bin(合并了dedetect.com),winnt.xpe做成一个a.img,先加载为fd0,chainloader (fd0)/setupldr.bin企图由它启动光盘上的pe,发现只认光盘上的winnt.xpe,光盘没有此文件,即使fd0有也不行。
这与 ...

你先用原版的setupldr.bin+ntdetect.com+winnt.sif放到软盘上再试一下,顺便贴一下你的winnt.sif的内容
回复

使用道具 举报

57#
发表于 2009-11-14 11:55:07 | 只看该作者

winnt.xpe不能放在a:盘?

我把setupldr.bin(合并了dedetect.com),winnt.xpe做成一个a.img,先加载为fd0,chainloader (fd0)/setupldr.bin企图由它启动光盘上的pe,发现只认光盘上的winnt.xpe,光盘没有此文件,即使fd0有也不行。
这与楼主
建立一张软盘映像,将xp(或windows 2003的,兼容性更好)引导分区根目录下的ntldr、ntdetect.com、boot.ini(如果你需要显示菜单,也可以复制bootfont.bin)到软盘根目录下
有什么不同?我理解winnt.xpe相当于boot.ini,也应可以放在软盘。
回复

使用道具 举报

56#
 楼主| 发表于 2009-9-18 08:37:39 | 只看该作者

回复 #59 go2 的帖子

呵呵,我当然试过,而且,肯定能够成功我才发到这里。

据我推测,你用的软改程序应该是软改程序的老版本,老版本使用的grub4dos是很低的版本(这些版本可能不支持被直接chainloader),而作者后来又出了新版,基于最新版的grub4dos,我不能提供下载,不过去DRL或者类似的论坛应该可以找到。
回复

使用道具 举报

55#
发表于 2009-9-17 12:16:53 | 只看该作者
我也是这么做的,不过在boot菜单添加了很多项,以防万一:
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
C:\esldr="搜寻易宗系统启动管理器(硬盘优先)"
C:\tboot="以TBOOT文件启动苹果操作系统"
C:\$WIN_NT$.~BT\BOOTSECT.DAT="启动 C 盘的 NT 安装程序"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="启动第1个分区的 NT 系统" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="启动第2个分区的 NT 系统" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="启动第3个分区的 NT 系统" /noexecute=optin /fastdetect


esldr是编辑的搜索各个我会常用的ldr
default 0
timeout 1
fontfile (fd0)/gfont
splashimage (fd0)/gimage
title 0.搜寻  CDLDR.BIN    find /YIZONG/CDLDR.BIN
        fallback 1
        find --set-root --ignore-floppies /YIZONG/CDLDR.BIN
        configfile /YIZONG/CDLDR.BIN
title 1.搜寻  udldr        find /udldr
        fallback 2
        find --set-root --ignore-floppies /udldr
        configfile /udldr
title 2.搜寻  mdldr        find /mdldr
        fallback 3
        find --set-root --ignore-floppies /mdldr
        configfile /mdldr
title 3.搜寻  hdldr        find /hdldr
        fallback 4
        find --set-root --ignore-floppies /hdldr
        configfile /hdldr
title 4.搜寻  grldr        find /grldr
        fallback 5
        find --set-root --ignore-floppies /grldr
        configfile /grldr
title 5.搜寻  menu.lst     find /menu.lst
        fallback 6
        find --set-root --ignore-floppies /menu.lst
        configfile /menu.lst
title 6.命令行             commandline
commandline
回复

使用道具 举报

54#
发表于 2009-9-7 14:03:35 | 只看该作者
原帖由 go2 于 2009-9-7 06:59 发表
C版,#47

我不知你有没试过这样启动动。我试过用Grub启动软改的grldr并不能成功。
只能chainloader (hd0,X)+1或直接chainloader /bootmgr

前者启动到软改后的win7,而后者只能启动未破解的win7



能启动未破解WIN7的最好,这样一来,可以在GRUB里引导一个小东西,将自己的电脑虚拟成品牌机,一样能激活使用,以免后面更新或出新版后,又得找来找去的。
回复

使用道具 举报

53#
发表于 2009-9-7 06:59:06 | 只看该作者
C版,#47
title Windows 7 on (hd0,1) - Fast
ls /boot/win.gz || find --set-root /boot/win.gz
map --mem /boot/win.gz (fd0)
map --hook
root (fd0)
chainloader /smldr
savedefault


我不知你有没试过
chainloader /smldr
这样启动动。我试过用Grub启动软改的grldr并不能成功。
只能chainloader (hd0,X)+1或直接chainloader /bootmgr

前者启动到软改后的win7,而后者只能启动未破解的win7

[ 本帖最后由 go2 于 2009-9-7 07:03 编辑 ]
回复

使用道具 举报

52#
发表于 2009-9-6 17:01:39 | 只看该作者
原帖由 Climbing 于 2009-8-18 09:13 发表
您可能会错我顶楼的意了,我确认我讲的跟你讲的完全不是一回事儿。

我当然知道grldr可以直接启动ntldr/bootmgr,而且我知道grldr.mbr也有这个功能,而你只不过利用了grldr.mbr的这个功能再加上grldr.mbr启动 ...




呵呵~~~~~他完全没明白C大说的意思;和你讲的完全是两回事嘛。

我感觉C大是否做出实例来:
以C 大大的能力,完全可以做出完美的IMG文件出来,XP/WIN2003的IMG好说的,可是WIN7/WIN2008很难搞定;C大研究得很深,应该以C大的技术可以做出自动判断的WIN7/2008启动IMG出来。
回复

使用道具 举报

51#
发表于 2009-9-4 16:38:35 | 只看该作者
之前看这帖一直没明白帖子的意思(愚钝啊~~) 今天偶然在nufans.net看到c大对一个案例的回帖 说的正是这个解决方案 有案例就好理解了 于是回来再翻此帖~

确实是不错的方法 受用了!
回复

使用道具 举报

50#
发表于 2009-8-26 19:32:25 | 只看该作者
原帖由 keygen 于 2009-8-26 17:42 发表

easybcd要用到NET Framework  ,不爽。

现在谁的系统中没装.net framework?

如果是在winpe下,建议还是用bcdedit,几个图形界面的bcd工具都不太适合在winpe下使用
回复

使用道具 举报

49#
发表于 2009-8-26 17:42:37 | 只看该作者
原帖由 fujianabc 于 2009-8-25 21:52 发表

我的确没试过bootmgr查找逻辑分区的bcd,但我试过ntldr不能找到逻辑分区上的boot.ini
就你这么说来,看来bootmgr+bcd能够直接放到逻辑分区上了


这个工具目前不能随便指定其他bcd文件。现在能够修改任意 ...

easybcd要用到NET Framework  ,不爽。
回复

使用道具 举报

48#
发表于 2009-8-25 21:52:18 | 只看该作者
原帖由 Climbing 于 2009-8-24 15:18 发表
事实上,bootmgr+bcd是可以放在逻辑分区上的。

在win7的硬盘安装方法中,有一种方法就是将win7的安装光盘随意解压到硬盘上的任意分区(包括逻辑分区)根目录下,然后进入grub4dos,chainloader相应分区的boo ...

我的确没试过bootmgr查找逻辑分区的bcd,但我试过ntldr不能找到逻辑分区上的boot.ini
就你这么说来,看来bootmgr+bcd能够直接放到逻辑分区上了

原帖由 keygen 于 2009-8-25 21:29 发表

有个很好的工具bcdtool,作者jianliulin

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=146397

这个工具目前不能随便指定其他bcd文件。现在能够修改任意bcd的gui工具还是easybcd最好用,而且是免费软件。
回复

使用道具 举报

47#
发表于 2009-8-25 21:29:16 | 只看该作者
原帖由 fujianabc 于 2009-8-21 15:29 发表
虚拟软盘方式启动后要修改bcd菜单就比较麻烦了,先要挂载虚拟软驱,用bcdedit命令时还要用store参数指定bcd文件路径

有个很好的工具bcdtool,作者jianliulin

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=146397
回复

使用道具 举报

46#
 楼主| 发表于 2009-8-24 15:18:40 | 只看该作者

回复 #51 fujianabc 的帖子

事实上,bootmgr+bcd是可以放在逻辑分区上的。

在win7的硬盘安装方法中,有一种方法就是将win7的安装光盘随意解压到硬盘上的任意分区(包括逻辑分区)根目录下,然后进入grub4dos,chainloader相应分区的bootmgr,就可以直接启动进入win7的安装程序,跟从光盘启动安装应该完全一样,所以,至少win7的bootmgr是可以从逻辑分区启动的,而且,它会在当前分区boot目录下查找bcd文件。

而ntldr当然也可以用类似的方法通过grub4dos从逻辑分区加载并启动,但它只能从第一硬盘的激活分区去查找boot.ini及其他启动文件。
回复

使用道具 举报

45#
发表于 2009-8-24 14:57:11 | 只看该作者
原帖由 yjd 于 2009-8-24 10:31 发表
这里讨论的多系统。应该都是安装在主分区上吧?

ms系统貌似只能启动主分区系统

系统可以装在逻辑分区上,ntldr+boot.ini/bootmgr+bcd不能放在逻辑分区上
回复

使用道具 举报

44#
 楼主| 发表于 2009-8-24 11:23:25 | 只看该作者

回复 #49 yjd 的帖子

跟主分区、逻辑分区无关吧?不信你试试。
回复

使用道具 举报

43#
发表于 2009-8-24 10:31:07 | 只看该作者
这里讨论的多系统。应该都是安装在主分区上吧?

ms系统貌似只能启动主分区系统
回复

使用道具 举报

42#
发表于 2009-8-24 10:23:38 | 只看该作者
原帖由 chenall 于 2009-8-19 17:57 发表
我更倾向于把XP/WIN7的启动文件放在同一张软盘镜像上面,因为两者启动方式并不冲突.
也比较好管理,现在我办公室电脑也是使用差不多类似的方法..
嘿嘿.^_^关了机别人就不懂得如何用我的电脑了.



插上自带启动U盘。使用grub4dos去引导^_^
回复

使用道具 举报

41#
 楼主| 发表于 2009-8-24 09:09:29 | 只看该作者

回复 #44 chenall 的帖子

chenall说的不错,win7只需要bootmgr + boot\bcd,xp如果不需要显示菜单,也不需要bootfont.bin。

另外,如果win7需要软改,也可以加上软改的grldr。

下面是我做的带软改的nt + win7启动软盘,注意:boot.ini和bcd文件都需要你根据实际情况进行定义,为避免软改的grldr与标准的grldr发生冲突,我将其更名为smldr(softmod loader)。

http://nufans.net/upload/micro$oft/win7/softmod.xyf/win.gz


  1. title Windows 7 on (hd0,1) - Fast
  2. ls /boot/win.gz || find --set-root /boot/win.gz
  3. map --mem /boot/win.gz (fd0)
  4. map --hook
  5. root (fd0)
  6. chainloader /smldr
  7. savedefault

  8. title Windows XP Professional on (hd0,0) - Fast by win.gz
  9. ls /boot/win.gz || find --set-root /boot/win.gz
  10. map --mem /boot/win.gz (fd0)
  11. map --hook
  12. root (fd0)
  13. chainloader /ntldr
  14. savedefault
复制代码
回复

使用道具 举报

40#
发表于 2009-8-23 03:09:01 | 只看该作者

好文章来学习了~~~

好文章来学习了~~~

评分

参与人数 1无忧币 -100 收起 理由
zhxy9804 -100

查看全部评分

回复

使用道具 举报

39#
发表于 2009-8-23 00:36:55 | 只看该作者
原帖由 icons 于 2009-8-22 22:58 发表
我是这样编辑的,大家看看有什么可以改进?
title   启动 Windows 7 系统
find --set-root /bootmgr
chainloader /bootmgr
boot

title   启动 Windows XP 内存系统
find --set-root /ntldr
chainloade ...


使用find --set-root 有可能会找到其它地方的启动文件,不太好.

建议把菜单文件放到img文件里面,再调用,省去find --set-root的过程.菜单中直接使用相对路径.
因为知道是虚拟到一个软盘上启动的,所以也可以直接chainloader (fd0)/ntldr
回复

使用道具 举报

38#
发表于 2009-8-23 00:34:30 | 只看该作者
我的软盘上的文件列表.所有文件的总大小1.07MB,使用一个1.44MB的镜像就放得下了.
::启动WINDOWS 2000/XP/2003所需的文件
boot.ini
bootfont.bin
NTDETECT.COM
ntldr
::启动WINDOWS 7所需的文件(只有两个)(VISTA系列的应该也可以直接使用的,未测试,因为我只装了WINDOWS 7)
bootmgr
boot\BCD

因为BCD里面只有一个启动WINDOWS 7的菜单,所以显示中文就没有必要了.加载了BOOTMGR就直接启动WINDOWS 7,如果真想显示中文菜单那至少也再增加4MB左右的文件.反正我是觉得没有必要所以就不用了.

另外NTLDR和BOOTMGR由于是通过GRUB4DOS来加载的,所以还可以使用GZ压缩一下.

[ 本帖最后由 chenall 于 2009-8-23 00:38 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-23 19:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表