无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6541|回复: 18
打印 上一主题 下一主题

【玩】光盘或软盘启动盘中grub.exe引导fbinst启动盘(5月16日软盘引导fbinst成功)

[复制链接]
跳转到指定楼层
1#
发表于 2010-5-16 13:00:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原帖由 zhaohj 于 2010-5-16 10:21 发表
楼主对UD颇有研究,请教一个问题:
1:其他方式启动的grldr能启动UD吗?
   比如以前可以用CD启动转硬盘启动,那CD启动能转UD启动吗?
2:UD只有grldr能访问,这个grldr应该是放入UD内的grldr
     那在UD外 ...


原帖地址
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158694&page=8#pid1952895

zhaohj  老兄客气了,你们都是我的老师,我只是喜欢玩。以前还真没想过你说的整个问题,我测试了下,成功了,但不保证全部都可以成功。

欢迎大家指导。


说明: 1 虚拟机环境;
           2 虚拟机有无硬盘都可,添加物理磁盘\\.\PhysicalDrive1(U盘)
           3 添加光盘ISO镜像,用以作为第一启动选项
           4 启动虚拟机,按ESC选择 CDROM 启动虚拟机
           5 进入光盘菜单后,按C键进入grub4dos命令行环境,当然不同的光盘进入方式不一样;
           6 想办法进入grub4dos命令行后,find一下,发现有(hd0,0),ls (hd0,0)出现文件列表;
           7 确定(hd0,0)是我的U盘,引导(hd0,0)启动,命令行如下(每输入一行就回车)

                 rootnoverify (hd0,0)   ------ 作废
                 chainloader +1            ------ 作废
                 boot                           ------ 作废

                 换新的命令:

                 root (hd0,0)
                 chainloader  (hd0)+1
                 boot


           8 好,出现错误提示,为什么呢?呵呵,不管它,回车便进入我的U盘的fbinst菜单。
             (已经解决报错问题,修改了菜单)


新增引导 “fbinst.bin”
用“BOOTICE.EXE”工具把“fbinst启动盘”的MBR备份一下(1个扇区就可以了),保存成“ fbinst.bin”,放在U盘可见分区根目录,不要放进ud内。
到上面第7步,改用如下命令:
                 root (hd0,0)
                 chainloader  (hd0,0)/fbinst.bin

                 boot
启动成功。图补在1楼最后。


软盘DOS环境下的grub.exe引导fbinst启动盘成功


第一步:准备DOS启动盘(软盘,我的是USB软盘),文件目录和AUTOEXEC.BAT内容

            

第二步:准备好fbinst启动盘(U盘)后同时插入计算机,启动计算机,选择软盘启动;

第三步:启动后会自动进入grub命令行,find一下,ls一下,找到U盘对应的(hd*),我的是笔记本,U盘对应(hd1);

第四步:输入以下命令,成功引导U盘启动。

             root (hd1,0)
              chainloader  (hd1)+1
              boot


              熟悉的fbinst菜单出现了,开心……


因为是笔记本测试的,没拍照片。


2010-5-18

昨晚想了下,纯gurb环境下引导Fbinst启动盘关于自动判断hd0和hd1的问题,
我想还是用个折中的办法,就是把fbinst.bin放在U盘可见区根目录,根据这个来启动。
软盘(或其他)启动到grub命令行,菜单如下:

find --set-root /fbinst.bin
chainloader /fbinst.bin
boot

特别注意:ud内不要放fbinst.bin,否则fbinst作为第一启动时,再用上面菜单的话,chainloader后面如果不加 --edx=0x80可能会卡死,所有还是在U盘可见区放一个fbinst比较保险,也通用。


另附上fbinst下grldr中的通用菜单

title [J]    返回fbinst菜单
find --set-root /fbinst.bin
chainloader /fbinst.bin


这样不用自己判断哪个是 hd0哪个是 hd1 了,交给grub自己去判断。



见图:













补图(引导fbinst.bin)



[ 本帖最后由 Plantsoot 于 2010-5-18 08:46 编辑 ]
2#
发表于 2010-5-16 13:16:58 | 只看该作者
请教楼主,能不能用UD中的GRUB4启动U盘的USB-CDROM呢?
回复

使用道具 举报

3#
 楼主| 发表于 2010-5-16 13:20:23 | 只看该作者
原帖由 yazhiliu 于 2010-5-16 13:16 发表
请教楼主,能不能用UD中的GRUB4启动U盘的USB-CDROM呢?


     又是一个难题,这个得量产出一个双启或者三启的启动U盘才行,这个问题以前我请教过p大和g大,貌似比较难,和U盘的主控还有很大关系,时隔半年多了,不知道现在新版的GRUB4DOS怎么样。

     fbinst启动后,进入GRUB4DOS命令行,find一下,不一定能找到你的USB-CDROM,找不到就没办法了,这个一直是个难题。

     请高手指点。

     这个问题得测试后才知道。我去试试看。

[ 本帖最后由 Plantsoot 于 2010-5-16 13:27 编辑 ]
回复

使用道具 举报

4#
发表于 2010-5-16 13:50:40 | 只看该作者
原帖由 Plantsoot 于 2010-5-16 13:20 发表


     又是一个难题,这个得量产出一个双启或者三启的启动U盘才行,这个问题以前我请教过p大和g大,貌似比较难,和U盘的主控还有很大关系,时隔半年多了,不知道现在新版的GRUB4DOS怎么样。

     fbinst启 ...


我慧荣的主控,兼容性很好,但GRUB4就是找不到USB-CDROM,高手们费心了。
这个问题解决了,轻松实现U-CD加零体积U-HDD双启动,意义大了。
回复

使用道具 举报

5#
发表于 2010-5-16 19:08:58 | 只看该作者
USB-CDROM只有通过USB-CDROM启动才能运行,不然BIOS无法为其分配盘符。
相对来说USB-CDROM转UD启动这个问题倒好解决。

to Plantsoot (百草霜) :
我在原帖中已回复,测试看看还有什么办法?目前来讲,GRUB.EXE转grldr也会死机,因为我从GRLDR--DOS--GRUB.EXE。
过程比较复制,一些关键内存可能没有释放,但GRLDR--DOS--GRUB.EXE,用configfile可解决菜单问题。
回复

使用道具 举报

6#
 楼主| 发表于 2010-5-16 20:52:31 | 只看该作者
菜单已经更正,图也更正了,
谢谢 群里的 hulucc 大侠的指点。
回复

使用道具 举报

7#
 楼主| 发表于 2010-5-16 21:16:25 | 只看该作者
回复

使用道具 举报

8#
发表于 2010-5-16 22:31:56 | 只看该作者
grldr加载fbinst.bin肯定行;
GRUB.EXE加载fbinst.bin如果成功那问题解决了。我今天测试了一下不成功,卡住死机。
可以用比较干净的DOS98镜像进行测试(镜像里也放置grub.exe),我得明天验证了。
回复

使用道具 举报

9#
 楼主| 发表于 2010-5-16 23:02:33 | 只看该作者
原帖由 zhaohj 于 2010-5-16 22:31 发表
grldr加载fbinst.bin肯定行;
GRUB.EXE加载fbinst.bin如果成功那问题解决了。我今天测试了一下不成功,卡住死机。
可以用比较干净的DOS98镜像进行测试(镜像里也放置grub.exe),我得明天验证了。


恩,我用我的USB仿真软盘也测试下,软盘启动后看能否加载成功。
回复

使用道具 举报

10#
 楼主| 发表于 2010-5-16 23:32:54 | 只看该作者
原帖由 zhaohj 于 2010-5-16 22:31 发表
grldr加载fbinst.bin肯定行;
GRUB.EXE加载fbinst.bin如果成功那问题解决了。我今天测试了一下不成功,卡住死机。
可以用比较干净的DOS98镜像进行测试(镜像里也放置grub.exe),我得明天验证了。


我测试成功.

第一步:准备DOS启动盘(软盘,我的是USB软盘),文件目录和AUTOEXEC.BAT内容

      

第二步:准备好fbinst启动盘(U盘)后同时插入计算机,启动计算机,选择软盘启动;

第三步:启动后会自动进入grub命令行,find一下,ls一下,找到U盘对应的(hd*),我的是笔记本,U盘对应(hd1);

第四步:输入以下命令,成功引导U盘启动。

              root (hd1,0)
              chainloader  (hd1)+1
              boot


              熟悉的fbinst菜单出现了,开心……


因为是笔记本测试的,没拍照片。
回复

使用道具 举报

11#
发表于 2010-5-17 11:10:27 | 只看该作者
经过测试,基本成功。
这里关键的一点是chainloader (hd0)+1而不可以chainloader (hd0,0)+1
可以理解,这是UD是整个硬盘而不是分区,chainloader (hd0)+1表示启动hd0的mbr

另外还有一点,这个(hd0)/(hd1)等怎么自动获取呢?
我测试如果是UD第一启动,肯定是(hd0)。

感谢你的测试!
回复

使用道具 举报

12#
 楼主| 发表于 2010-5-18 08:19:56 | 只看该作者
原帖由 zhaohj 于 2010-5-17 11:10 发表
经过测试,基本成功。
这里关键的一点是chainloader (hd0)+1而不可以chainloader (hd0,0)+1
可以理解,这是UD是整个硬盘而不是分区,chainloader (hd0)+1表示启动hd0的mbr

另外还有一点,这个(hd0)/(hd1)等 ...


昨晚想了下,纯gurb环境下引导Fbinst启动盘关于自动判断hd0和hd1的问题,
我想还是用个折中的办法,就是把fbinst.bin放在U盘可见区根目录,根据这个来启动。
软盘(或其他)启动到grub命令行,菜单如下:

find --set-root /fbinst.bin
chainloader /fbinst.bin
boot

特别注意:ud内不要放fbinst.bin,否则fbinst作为第一启动时,再用上面菜单的话,chainloader后面如果不加 --edx=0x80可能会卡死,所有还是在U盘可见区放一个fbinst比较保险,也通用。
另附上菜单

title [J]    返回fbinst菜单
find --set-root /fbinst.bin
chainloader /fbinst.bin


这样不用自己判断哪个是 hd0哪个是 hd1 了,交给grub自己去判断。

[ 本帖最后由 Plantsoot 于 2010-5-18 08:45 编辑 ]
回复

使用道具 举报

13#
发表于 2010-5-18 08:29:33 | 只看该作者
这样都可以 满强

。。。
回复

使用道具 举报

14#
发表于 2010-5-18 09:16:17 | 只看该作者
title [J]    返回fbinst菜单
find --set-root /fbinst.bin
chainloader --edx=0x80/fbinst.bin

这样是不是就可以把fbinst.bin放到UD里面?
回复

使用道具 举报

15#
 楼主| 发表于 2010-5-18 11:20:20 | 只看该作者
原帖由 3370123 于 2010-5-18 09:16 发表
title [J]    返回fbinst菜单
find --set-root /fbinst.bin
chainloader --edx=0x80/fbinst.bin

这样是不是就可以把fbinst.bin放到UD里面?


是的,但如果可见区也放一个fbinst.bin,用你说的菜单我测试的时候死机了。
纯grub4dos环境中,无法识别ud,也就没办法引导ud内的fbinst.bin了。
综合考虑,fbinst.bin还是放在可见区比较保险,通用性强。
回复

使用道具 举报

16#
发表于 2010-5-20 10:36:46 | 只看该作者
哪位高人上传个可引导fbinst的软盘启动盘吧,自己做了几次都失败了
回复

使用道具 举报

17#
发表于 2010-5-20 12:25:14 | 只看该作者
fbinst.bin也就是MBR对每个U盘来说不通用,所以让用户自己去制作也不太现实。
现在唯一可以确认的是:如果UD第一驱动,那这个UD盘肯定是hd0,有这个判断结果就好办了。

我现在这样处理:在刚启动GRLDR时判断0x82a0是否返回0X23,如果是就是UD启动。一定要刚开始判断。
回复

使用道具 举报

18#
 楼主| 发表于 2010-5-20 16:04:01 | 只看该作者
原帖由 zhaohj 于 2010-5-20 12:25 发表
fbinst.bin也就是MBR对每个U盘来说不通用,所以让用户自己去制作也不太现实。
现在唯一可以确认的是:如果UD第一驱动,那这个UD盘肯定是hd0,有这个判断结果就好办了。

我现在这样处理:在刚启动GRLDR时判断 ...


恩,还是你想的周到,fbinst.bin确实不通用,必须用自己的U盘制作。

呵呵,恳请共享下你的“GRLDR时判断0x82a0是否返回0X23,如果是就是UD启动”的菜单,
我的GRUB4DOS很菜,就懂点常见的皮毛。
回复

使用道具 举报

19#
发表于 2010-5-20 16:59:27 | 只看该作者
原帖由 Plantsoot 于 2010-5-20 16:04 发表


恩,还是你想的周到,fbinst.bin确实不通用,必须用自己的U盘制作。

呵呵,恳请共享下你的“GRLDR时判断0x82a0是否返回0X23,如果是就是UD启动”的菜单,
我的GRUB4DOS很菜,就懂点常见的皮毛。


兄弟也是编程高手,见笑了。
我在SRS_F6返回模块中menu.lst是这样的:
#先定义一个内存变量
write 0x60100 0
# 1=PXE,2=UD   
checkrange 0x21 read 0x8280 && write 0x60100 1
checkrange 0x23 read 0x82a0 && write 0x60100 2
#或者
cat --length=0 (ud)/FB.CFG && write 0x60100 2

再想法把变量传到DOS,可以用dd,write写入已存在的文件中。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-29 19:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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