|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
16 楼』:
请有兴趣的兄弟姐妹们测试GRLDR引导代码的查找功能。
在任意一个磁盘、任意一个分区的根目录下放置 GRLDR 文件,GRLDR 的引导代码都可以找到它。
测试方法是这样的:首先将机器上所有的 GRLDR 统统删去,将新的 GRLDR 文件拷贝到 C: 盘根目录,并更名为 GRLDR1。修改boot.ini,增加一行 C:\GRLDR1="GRLDR1",用这行来启动,肯定找不到 GRLDR 文件,但是,屏幕上应当显示查找GRLDR 的全过程,你的全部硬盘和全部分区都应当列出来了,如果有未列出的硬盘或者分区,则视为 BUG。
上述测试完毕,接着测试:将 GRLDR 拷贝到某个硬盘的某个分区的根目录,仍然用上述的 C:\GRLDR1="GRLDR1" 一行来启动,看看这次 GRUB 是否顺利启动了。如果没有启动,则视为 BUG。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-21 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
17 楼』:
下载地址: ftp://ftp.linuxeden.com/tinybit/grldr
这个文件会不断地更新,在初次测试失败时,两天之后再下载一次,请不断地测试它。谢谢。
也可以做第三个测试:当上述硬盘分区查找完毕后,会查找软盘 A:的(但永远也不查找软盘 B:)。所以,现在删除硬盘上的 GRLDR,在软盘根目录放置 GRLDR,看看上述 GRLDR1 的启动代码是否可以找到它。
第四个测试,如果上述查找全部失败,则接着会尝试启动你先前备份的一个 MBR。第一块硬盘 hd0 的第二个扇区,也就是紧接 MBR
之后的那个扇区,可以用来存放你想放置的任何启动扇区,可以是旧的 MBR,也可以是一个分区的引导记录,例如 DOS boot
record,还可以是你自己写的任何其它引导代码。无论你放置什么,它都称做 previous
MBR(这只是一个称呼而已)。这个引导代码的末尾两个字节必须是通常的 55, AA
才被认为是一个合法的引导扇区,否则不予启动。好了,你用DEBUG或者其它工具将你想要启动的引导扇区写入 hd0 的第二扇区,并将硬盘和软盘上的
GRLDR 都删除,然后测试上述的 GRLDR1 是否能够引导它。(既然这里有写入硬盘的操作,所以还是应该提醒一下,这很危险,不能熟练使用
DEBUG 的兄弟,千万不要自己尝试,否则,你的硬盘会很容易毁于一旦的。)
更进一步的技术实现:在 GRLDR 文件的最开头,是一个双字节的 jmp
指令,紧接该指令之后的字节,也就是第三个字节(在偏移地址0x02),它不是程序代码的一部分,而是被用来控制 GRLDR
的查找操作方式。当该控制字节的第0位被设置为1时,软盘的查找就被禁止了。当该控制字节的第1位被设置为1时,一个不含分区表的 previous
MBR 将被禁止启动。此时要求你所备份的 previous MBR 确实是你以前的 MBR,而不是某个分区的 partition boot
record。该控制字节的其它位被保留作为将来之用。这个控制字节在默认时是0,也就是说,它对什么都不禁止,所有的操作都处于最大开放状态。该控制字
节的用途很明了,用户程序可以放心地根据自己的需要任意写入该字节(当然注意不要破坏了其余那些不该写入的字节,尤其是,当该扇区处于 MBR
时,当然要更加小心了)。
[此贴子已经被作者于2005-2-22 10:51:23编辑过]
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-21 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
18 楼』:
我已经将GRLDR的引导部分提取为GRUB.DAT.....可以在BOOT.INI或用NT软盘加载GRUB.DAT来启动自动寻找各分区根目录下的GRLDR,这样就解决了原来GRLDR只能在系统盘的限制了.....下载:http://bbs.wuyou.com/cgi-bin/topic.cgi?forum=34&topic=7201&show=0
|

我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-2-25 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
19 楼』:
很棒!
正如你所注意到的,GRLDR 的引导代码就是位于 GRLDR 最开头的 16 个扇区,你制作的 GRUB.DAT 必须至少是 16扇区的(也就是 8192 字节),比 16 扇区多了也行,但决不能少,如果少了,查找可能要失败。如果比 8192字节多,那么多余的字节不起任何作用(但也没有任何坏处)。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
20 楼』:
是否能够启动逻辑分区上面的GRLDR呢,我还没有测试呢,请不点兄指点...还有就是你所说的MEMDRIVR我下载不到,能否发我信箱以便测试hnlyzhd@163.com
|

我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-2-25 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
21 楼』:
可以启动逻辑分区上的 GRLDR,但是,和通常一样,只查找其根目录。
在 linux 下用 ftp 命令手动登入 ftp.linuxeden.com 就可以下载了。wget 命令有时无效,在执行 PASV命令时长时间无回应。windows 下的那些下载工具,比如 flashget, 影音传送带等等,也都通通无效,表现方式也是在执行 PASV命令是失去响应。估计这是一个什么病毒干的,挺厉害的,可惜似乎没人报告这个病毒。
在 linux 下还有一个命令可以应付这种情况,试试 curl 下载,一般能成功:
curl --ftp-port 20 -C - -O ftp://ftp.linuxeden.com/tinybit/grldr
念出来:
curl 空格 杠杠ftp杠port 空格 20 空格 杠大写的C 空格 杠 空格 杠大写的O 空格 后面就是接着URL地址。
在 windows 下用 FTP 手动登录似乎也不行的。
-----------------------
我会发给你的,不过不是现在,因为我还要改,把修改后的新版本再给你寄去。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
22 楼』:
谢谢...前面提到的几个文件已经下载,只是没有MEMDRIVE,等你做好了发我信箱就行,再次感谢..我在无忧设的有一个GRUB学习专区,如果你有时间,请到这里指点一二,Gandalf也经常在http://bbs.wuyou.com/cgi-bin/topic.cgi?forum=34&topic=5697&show=0
|

我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-2-25 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
23 楼』:
那么,无需再发邮件了,因为需要的文件你都得到了,它就是 grub.exe, grldr, grub4lin 之中的任何一个。
注意它们还会不断更新的。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-25 00:00 |
|
|
blue777
中级用户
  
积分 452
发帖 134
注册 2004-6-16
状态 离线
|
『第
24 楼』:
不点兄你好,请教您下列问题:我在软盘里安装未将scdrom编译进去的GRUB时(用的是stage1和stage2),实现从光驱引导只有借助于BCDL.BIN和VIDE-CDD.SYSBoot from CD-ROM
root (fd0)
chainloader /boot/grub/cdboot.bs为了给软盘启动盘腾出更多空间,我想将scdrom编译进stage2里,这样scdrom --bootcd就可从光驱引导了,如何在Windows或DOS下将scdrom编译进GRUB的Stage2里?我没有Linux环境,也不知道编译方法.grub-0.96-patch6-scdrom和grub-0.96-patch7-bioscdrom有区别么?我能将最新版scdrom编译进低版本的GRUB如0.90版的Stage2吗?因为我用不着新功能,只想stage2既小又能支持从光驱引导,不吝请教,谢谢!
|
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
|
2005-2-25 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
26 楼』:
有两个办法,其一是用 gandalf 制作的版本,scdrom 模块其实是由他提供的,因为我无法解决碰到的BUG,所以,我不打算再维护这个模块了。他从 smart boot manager 里面提取出来的程序,我不能读太懂,所以,我无法继续维护。
第二个办法,可以从 GRUB for DOS 里面调用最原始的 sbm.bin,这个方法也可以启动 CDROM。sbm.bin 来自于smart boot manager ,你可以从网上搜索到这个文件,下载它用了便可。在 grub4dos 中调用 sbm.bin的方法,也可以从网络上搜索得到,例如 http://grub.linuxeden.com 上面就有介绍。sbm.bin 只有 18K,应该说还是可以接受的。
bioscdrom 模块是我自己写的,目前只能用于华硕的某些旧型号的机器,所以基本没用,你就不要编译它了。这个模块也基本上停止维护了,因为这个事情不是很重要的,它不作为优先解决的对象。将来实在有闲功夫了,再去考虑增强它的问题。
你没有 linux, 是无法编译 grub 的,如果你实在想编译,还是安装一个 linux 吧。
最省事的就是坐着等,等 gandalf 做出来一个可靠的版本直接用就行了。
虽然我的发布中仍然有 scdrom 补丁,但是我不能肯定它现在还工作,因为我没有试验过。因此之故,我不会提供一个含有 scdrom 模块的二进制文件的发布。
总而言之,gandalf 对此很熟悉,有问题最好能同他联系。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
27 楼』:
1.gandlaf已经换工作了很忙没时间开发GRUB2.他的版本支持SCDROM已经很好.title 从光盘启动
scdrom --bootcd
scdrom --bootcd用两次命令就行了,光驱启动是GRUB的老问题了,这样已经很好3.建议不点兄为GRLDR加入安装到硬盘功能,写到MBR上,按下热键才寻找GRLDR,否则从硬盘正常启动(GANDLAF写过一个类似的STAGE1文件)
|

我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
『第
28 楼』:
不点兄,请你在修改chainloader功能的时候,看能否启动下面的这个BIOS模块...{{{http://bbs.wuyou.com/cgi-bin/attachment.cgi?forum=33&topic=1387&postno=9&type=.rar&name=Idiopf_1108629898}}}}}
[此贴子已经被作者于2005-2-25 16:49:02编辑过]
|

我的留言簿
http://hnlyzhd.ys168.com 我的网络盘
|
|
2005-2-25 00:00 |
|
|
不点
银牌会员
     不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
29 楼』:
> 按下热键才寻找GRLDR,否则从硬盘正常启动
想法还真有趣,赞一个。目前已经实现的,是先查找 GRLDR,失败时才启动以前的 MBR备份。我会考虑再改改,做到让这个先后顺序可控制。
------------------
那个 BIOS 模块的结构怎样?它被装载到内存中什么位置?它在内存中占有多少空间?
我不需要打开它,只要知道这些情况,就知道能否用 chainloader 来做了。
|

因为我们亲手创建,这个世界更加美丽。 |
|
2005-2-25 00:00 |
|
|
hnlyzhd
高级用户
   
积分 544
发帖 164
注册 2004-10-17
状态 离线
|
|
2005-2-27 00:00 |
|