无忧启动论坛

标题: 【玩】光盘或软盘启动盘中grub.exe引导fbinst启动盘(5月16日软盘引导fbinst成功) [打印本页]

作者: Plantsoot    时间: 2010-5-16 13:00
标题: 【玩】光盘或软盘启动盘中grub.exe引导fbinst启动盘(5月16日软盘引导fbinst成功)
原帖由 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 编辑 ]
作者: yazhiliu    时间: 2010-5-16 13:16
请教楼主,能不能用UD中的GRUB4启动U盘的USB-CDROM呢?
作者: Plantsoot    时间: 2010-5-16 13:20
原帖由 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 编辑 ]
作者: yazhiliu    时间: 2010-5-16 13:50
原帖由 Plantsoot 于 2010-5-16 13:20 发表


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

     fbinst启 ...


我慧荣的主控,兼容性很好,但GRUB4就是找不到USB-CDROM,高手们费心了。
这个问题解决了,轻松实现U-CD加零体积U-HDD双启动,意义大了。
作者: zhaohj    时间: 2010-5-16 19:08
USB-CDROM只有通过USB-CDROM启动才能运行,不然BIOS无法为其分配盘符。
相对来说USB-CDROM转UD启动这个问题倒好解决。

to Plantsoot (百草霜) :
我在原帖中已回复,测试看看还有什么办法?目前来讲,GRUB.EXE转grldr也会死机,因为我从GRLDR--DOS--GRUB.EXE。
过程比较复制,一些关键内存可能没有释放,但GRLDR--DOS--GRUB.EXE,用configfile可解决菜单问题。
作者: Plantsoot    时间: 2010-5-16 20:52
菜单已经更正,图也更正了,
谢谢 群里的 hulucc 大侠的指点。
作者: Plantsoot    时间: 2010-5-16 21:16

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


恩,我用我的USB仿真软盘也测试下,软盘启动后看能否加载成功。
作者: Plantsoot    时间: 2010-5-16 23:32
原帖由 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菜单出现了,开心……


因为是笔记本测试的,没拍照片。
作者: zhaohj    时间: 2010-5-17 11:10
经过测试,基本成功。
这里关键的一点是chainloader (hd0)+1而不可以chainloader (hd0,0)+1
可以理解,这是UD是整个硬盘而不是分区,chainloader (hd0)+1表示启动hd0的mbr

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

感谢你的测试!
作者: Plantsoot    时间: 2010-5-18 08:19
原帖由 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 编辑 ]
作者: lvmenbo    时间: 2010-5-18 08:29
这样都可以 满强

。。。
作者: 3370123    时间: 2010-5-18 09:16
title [J]    返回fbinst菜单
find --set-root /fbinst.bin
chainloader --edx=0x80/fbinst.bin

这样是不是就可以把fbinst.bin放到UD里面?
作者: Plantsoot    时间: 2010-5-18 11: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还是放在可见区比较保险,通用性强。
作者: nerdpal    时间: 2010-5-20 10:36
哪位高人上传个可引导fbinst的软盘启动盘吧,自己做了几次都失败了
作者: zhaohj    时间: 2010-5-20 12:25
fbinst.bin也就是MBR对每个U盘来说不通用,所以让用户自己去制作也不太现实。
现在唯一可以确认的是:如果UD第一驱动,那这个UD盘肯定是hd0,有这个判断结果就好办了。

我现在这样处理:在刚启动GRLDR时判断0x82a0是否返回0X23,如果是就是UD启动。一定要刚开始判断。
作者: Plantsoot    时间: 2010-5-20 16:04
原帖由 zhaohj 于 2010-5-20 12:25 发表
fbinst.bin也就是MBR对每个U盘来说不通用,所以让用户自己去制作也不太现实。
现在唯一可以确认的是:如果UD第一驱动,那这个UD盘肯定是hd0,有这个判断结果就好办了。

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


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

呵呵,恳请共享下你的“GRLDR时判断0x82a0是否返回0X23,如果是就是UD启动”的菜单,
我的GRUB4DOS很菜,就懂点常见的皮毛。
作者: zhaohj    时间: 2010-5-20 16:59
原帖由 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写入已存在的文件中。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3