xmzhqw 发表于 2017-6-9 17:16:32

大家来接力,共同讨论 Grub4Dos 从本地硬盘启动本地系统

本帖最后由 xmzhqw 于 2017-6-9 21:40 编辑

为了制作“从本地硬盘启动”,花了我一个下午的时间,还没找到最佳方案,所以不得不发此帖,广招无忧英雄出手相助。我的情况是这样的:想兼顾U盘、移动硬盘、CD等启动;又要兼顾多个系统多个硬盘;还有SSD与其它硬盘混杂在一起,想一个完善的都很难。下面是我当前的几个测试方案。
主要是从移动硬盘启动考虑的,我的电脑中的磁盘及分区情况如下图所示:

根据这样的图,我做了以下几个方案的测试,下面是代码及测试情况。
方案一:从移动硬盘启动我的笔记本上系统:无法启动。但U盘启动正常,这是比较大众化的启动方案。
title 【08】 启动 本地操作系统
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

方案二:可以直接启动,但在我的台式机上又启动不了。
title 【08】 从硬盘启动
find --set-root --devices=h /Windows/System32/winload.exe || find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --devices=h /Windows/System32/winload.exe || find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader /bootmgr || chainloader /ntldr


方案三:在我的笔记本和台式机上都可以启动。就是要启动2次(按2次启动 硬盘操作系统)
title 【08】 启动 硬盘操作系统
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
map () (hd1)
map (hd1) ()
map --rehook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader +1

方案四:把HD1改为HD0,在我的电脑中也启动不了,就只能用HD1.
title 【08】 启动 硬盘操作系统
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader +1

现在要考虑一个比较全面的方案,但一时想不到。不知您是如何做的?还有,能不能做个类似批处理的代码兼顾各方而的情况呢?网上有没有这样的代码?

xmzhqw 发表于 2017-6-9 17:17:22

本帖最后由 xmzhqw 于 2017-6-9 19:03 编辑

下面是我从论坛中搜索到的一些方案,顺便也列出来供大家参考,当作抛砖引玉吧。

如果你的启动U盘是USB—HDD格式:有阴也有阳的方案:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=336838&pid=3150860&fromuid=43705
title 从第一块硬盘启动
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0)
chainloader (hd0)+1

假如你的启动U盘是USB—ZIP格式:

title 从第一块硬盘启动
rootnoverify (hd0)
chainloader (hd0)+1


如何设置总是从最后一块硬盘启动Windows?有阴也有阳的方案:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371351&pid=3137420&fromuid=43705

title 从最后一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /mylastdisk.txt
chainloader /ntldr

title 从最后一块本地硬盘启动Win7/Win8/Win10系统
find --set-root /mylastdisk.txt
chainloader /bootmgr

填好的menu.lst菜单用BOOTICE软件的实用工具中的GRUB4DOS菜单编辑器用UTF8编码保存,保存好

后,要把保存好的menu.lst菜单复制、粘贴到第5个硬盘接口的硬盘里的grldr文件所在的分区的根目录

下,也就是说grldr文件、menu.lst文件、grub4dos0.4.6a的软件安装压缩包的解压文件夹要位于第5个

硬盘接口的硬盘的同一分区的根目录下。

如何设置总是从最后一块硬盘启动Windows?有阴也有阳的方案:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=371351&pid=3140981&fromuid=43705
title 从最后一块本地硬盘启动Windows NT/2k/XP系统
rootnoverify(hd-1,0)
chainloader /ntldr

title 从最后一块本地硬盘启动Win7/Win8/Win10系统
rootnoverify(hd-1,0)
chainloader /bootmgr

2011epe的方案:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=310504&pid=2797074&fromuid=43705
title
clear

title   从本机硬盘MBR启动1 \n 从UD引导;从光盘引导;从普通USB-HDD U盘引导;本机硬盘启动再转本地硬盘启动
set b=)/BOOT/GRUB/BOOTFIX.ISO
checkrange 0x80 read 0x8280 && if exist (hd0)/fb.cfg && set b=ud%b%
checkrange 0x23 read 0x8280 && if not exist (fd0)/fb.cfg && set b=ud%b%
set b=(%b%
set /a hdn=*0x475&0xff
if %hdn%>=2 && if /I "%b%"=="(ud)/AXPE/IMGS/BOOTFIX.ISO" && map (hd1) (hd0) && map (hd0) (hd1)
map --unmap=0xfe
map %b% (0xfe) || map --mem %b% (0xfe)
map --rehook
chainloader (0xfe)
boot


title   从本机硬盘MBR启动2 \n 搜索具备ntldr、bootmgr的硬盘启动
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 (hd0)+1
boot

title   从本机硬盘MBR启动3 \n
checkrange 0x80 read 0x8280 && map (hd1) (hd0)
checkrange 0x80 read 0x8280 && map --hook
chainloader (hd0)+1


title   启动 NT5/NT6引导操作系统\n
map --mem /copy/petools/grub/NTBOOT.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

启动U盘中的“从硬盘启动计算机”菜单如何写通用的代码?http://bbs.wuyou.net/forum.php?mod=viewthread&tid=207051
title 从硬盘启动计算机 - Windows All
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmbr || find --set-root --ignore-floppies --ignore-cd /io.sys
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmbr || find --set-root --ignore-floppies --ignore-cd /io.sys
chainloader (hd0)+1
boot


于山:我是这样写的:http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=186575&pid=2153252&fromuid=43705
title --从硬盘启动计算机 (DOS下,识别U盘为C的机子用)
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,0)
makeactive
chainloader +1
boot
title --从硬盘启动计算机 (DOS下,识别U盘为A的机子用)
map --hook
chainloader (hd0)+1
rootnoverify (hd0)
boot

lingqing 发表于 2017-6-9 17:32:17

试试ntboot,无需本地启动文件直接启动各种硬盘上的系统

xmzhqw 发表于 2017-6-9 17:56:11

本帖最后由 xmzhqw 于 2017-6-9 17:57 编辑

lingqing 发表于 2017-6-9 17:32
试试ntboot,无需本地启动文件直接启动各种硬盘上的系统

谢谢!ntboot我还不清楚,刚才搜索了一下,5大的方案如下(还没试过)文章地址:http://bbs.mydigit.cn/read.php?tid=532787

第一种方法:如果将SISO放在根目录,进入grub命令行,输入:
if exist
()/SISO || find --set-root /SISO
command
()/SISO

第二种方法:也可将命令写成菜单,比如,菜单文件是menu.lst,想用SISO搜索硬盘上的系统,那么在 menu.lst 中加一段:
title 搜索硬盘上的系统
if exist ()/boot/grub/siso || find --set-root
/boot/grub/siso
command ()/boot/grub/siso
boot=hd

大悍虎 发表于 2017-6-9 19:59:38

不用化币 能看资料 网盘地址

本帖最后由 大悍虎 于 2017-6-9 20:09 编辑

参考资料下载地址——看图中百度网盘文件地址——

http://pan.baidu.com/s/1cqzY9K      密码kd95

博客地址 http://blog.sina.com.cn/a527104427

liuyindou 发表于 2017-6-9 20:24:22

本帖最后由 liuyindou 于 2017-6-9 20:26 编辑

试试这个 搜索硬盘上的系统

title使用SISO,搜索硬盘上的系统
command siso boot=hd

title 从硬盘启动,自动检测将对所有系统进行列表
command siso ntboot auto

title 从硬盘启动NT5启动第一个搜索到的系统
command siso ntboot NT5

title 从 (hd0,0) 启动NT5   
command siso ntboot NT5=(hd0,0)

tools241 发表于 2017-6-9 20:32:34

** [分享]Grub4Dos - 直接启动Win10,...,Win7, 第1个XP, XP.VHD, PE ==>
    http://bbs.wuyou.net/forum.php?mod=viewthread&tid=380990

2010sya 发表于 2017-6-9 21:53:06

楼主想法不错,一块学习一下!

123456789op 发表于 2017-6-9 22:23:19

SISO很强大呀,学习了{:3_155:}

xmzhqw 发表于 2017-6-10 15:59:42

今天查阅了“杏雨梨云USB维护系统端午版”的硬盘启动,发现杏大的做法更简单:
boot -1

我没文化,不知道理,但拿来用,发现真的可以。

devilma 发表于 2017-6-10 16:51:10

标记一下!

chenall 发表于 2017-6-12 15:41:49

boot -1
是从BIOS设定的下一个启动项进行启动。
如果BIOS的启动项里面没有从硬盘启动,那就无法从硬盘启动。

aikeo 发表于 2017-6-17 20:08:11

title 启动硬盘系统 \n 仅适用于USB设备启动本地硬盘上的系统,先查找bootmgr文件,失败后再查找ntldr文件
command RUN --nt

这个也可以
页: [1]
查看完整版本: 大家来接力,共同讨论 Grub4Dos 从本地硬盘启动本地系统