无忧启动论坛

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

[求助] 如何把grldr放置到扩容后的MBR中?

[复制链接]
跳转到指定楼层
1#
发表于 2013-9-28 20:14:42 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 pppfj 于 2013-9-28 21:02 编辑

    听说win7的分区软件在分区时为硬盘的MBR保留了2048个扇区,因此有了把整个grldr文件“塞进”MBR的想法,但不知如何去做。会使用磁盘编辑软件直接编辑磁盘扇区,是把grldr.mbr文件直接写入MBR的前18个扇区(注:不覆盖第一扇区的分区表),从第19扇区开始放置grldr文件?还是直接从第1扇区(注:不覆盖第一扇区的分区表)开始放置grldr文件?如果都不是,该如何做?
    与ntldr相比,grldr文件不受操作系统保护,更容易被他人误删,感觉还是放入MBR更安全。
    望不吝赐教,谢谢!
42#
发表于 2017-4-10 23:40:31 | 只看该作者
收藏一下,以后学习
回复

使用道具 举报

41#
发表于 2017-1-9 21:19:57 | 只看该作者
wuyou.com 怎么了?几年不来感觉。。。
回复

使用道具 举报

40#
发表于 2013-12-20 11:04:24 | 只看该作者
2012casscqt 发表于 2013-12-19 18:42
是的 我的意思也是把我的GRLDR放到MBR中, 请问如何实现?

自己再仔细看一下#6的贴子,一个字一个字地看.
回复

使用道具 举报

39#
发表于 2013-12-19 18:42:38 | 只看该作者
chenall 发表于 2013-12-18 23:41
这个根本没有办法嵌入到wee中,
只是把GRLDR写入到硬盘MBR上而已,要求你的MBR空间有足够大,除非特殊格式 ...

是的 我的意思也是把我的GRLDR放到MBR中, 请问如何实现?

点评

自己再仔细看一下#6的贴子,一个字一个字地看.  详情 回复 发表于 2013-12-20 11:04
回复

使用道具 举报

38#
发表于 2013-12-18 23:41:01 | 只看该作者
2012casscqt 发表于 2013-12-18 10:36
C大,我制作了一个grldr,请问如何具体 嵌入wee中?感谢您。

这个根本没有办法嵌入到wee中,
只是把GRLDR写入到硬盘MBR上而已,要求你的MBR空间有足够大,除非特殊格式化,一般情况下,都是不可能很大的.

点评

是的 我的意思也是把我的GRLDR放到MBR中, 请问如何实现?  详情 回复 发表于 2013-12-19 18:42
回复

使用道具 举报

37#
发表于 2013-12-18 10:36:21 | 只看该作者
chenall 发表于 2013-9-29 10:44
用最新版weesetup

把grldr文件放在同目录下,扫行命令就会把grldr安装到mbr,当然了MBR需要有足够大的空 ...

C大,我制作了一个grldr,请问如何具体 嵌入wee中?感谢您。

点评

这个根本没有办法嵌入到wee中, 只是把GRLDR写入到硬盘MBR上而已,要求你的MBR空间有足够大,除非特殊格式化,一般情况下,都是不可能很大的.  详情 回复 发表于 2013-12-18 23:41
回复

使用道具 举报

36#
发表于 2013-12-3 22:45:23 来自手机 | 只看该作者
多多浏览,多多受益。感谢各位大师细心指导。
回复

使用道具 举报

35#
发表于 2013-10-23 18:36:37 | 只看该作者
如果用 wee 的第一扇区,前面说了,由于要读入超过 127 个扇区,那么,你得修改 wee 的代码,增加一个循环。而至于说要读入多少个扇区,那就不必细算了,统一读入 1024 个扇区(也就是 512K)即可,这也就是 GRLDR 的最大理论长度。wee 的第一扇区是引导代码。第二扇区是空白,这与 grldr.mbr 一样,是用来放置 “备份的 MBR 扇区”。第三扇区开始,就是 GRUB 的核心 pre_stage2。

不过,既然天涯海角给出了成功的办法,也就没必要用 wee 了。更因为这些办法都不能处理针对 CHS 的兼容性,所以,只要有一种就行,多了也就没有太大的意义。

回复

使用道具 举报

34#
 楼主| 发表于 2013-10-23 12:24:11 | 只看该作者
    wee+grldr的引导方式,让我想起来了grub2。在grub2中,有一个“应急模式”的功能,在由于某种原因grub2不能正常加载的时候,grub2就会进入“应急模式的命令提示符,仅仅支持极少量的几个命令。通过这几个命令,可以手动将grub2加载到正常状态。这是一个不错实践。
    wee+grldr的方式,我认为有异曲同工之妙。相比grub2的应急模式,wee的功能要强大许多,是优点;但相比GRUB2的应急模式和普通模式命令的高度一致性,wee的命令和grldr的命令还是有些区别的。wee能不能算作mini grldr呢?
    不点大师在19楼提到:
如果假定 BIOS 支持 LBA,那么只需 1 个扇区即可完成加载。Wee 就是这样做的。Wee 的第一扇区可以加载 127 扇区的引导代码。为什么是 127 呢?那是因为,这个 127 就是 LBA 模式的 BIOS 每次传递的最大扇区数。如果加载的扇区数超过 127,那么需要反复调用 BIOS 多次,可以用一个循环来实现。wee 只调用了一次 BIOS,所以,wee 不需要循环。要读取更多的扇区,必须修改 Wee 的代码,增加一个循环。

    是否有人愿意让wee的第一扇区不但为加载wee服务,也能够为加载grldr服务呢?在第一扇区留出一个位置,可以定义读入后面连续扇区的数量,简单易行,又具有灵活性。
回复

使用道具 举报

33#
 楼主| 发表于 2013-10-23 11:56:52 | 只看该作者
不点 发表于 2013-10-20 18:51
如果只是给自己用,知道自己的电脑支持 LBA,那么根本问题就不存在了,很容易做。因为 LBA 是线性地址,是一 ...

    G4D这类优秀的软件,用户群体比较宽泛,不同的用户有不同的需求特点。
   如电脑专业从业人员,特别是搞电脑维修的,需要面对不同的硬件,因此需要最大限度的兼容性,此时采用fbinst的方案,可能是最佳选择。
   对非电脑行业的普通使用着,面对的是相对比较固定的电脑和硬件,对兼容性的要求不是特别高,在自己身边的电脑上测试能用,一般就不再苛求什么了。当然,软件本身对硬件良好的兼容性是基础,这也是G4D的优势。
回复

使用道具 举报

32#
发表于 2013-10-20 18:51:06 | 只看该作者
如果只是给自己用,知道自己的电脑支持 LBA,那么根本问题就不存在了,很容易做。因为 LBA 是线性地址,是一维的,是 “全球通用” 的。这一点就好比 UTF-8 语言字符编码也是全球通用的那样。而 CHS 是三维的,即,所谓的 “几何参数”,太复杂,不同的机器就不一样。所以,只要支持 LBA,那程序的编写就太简单了。本地硬盘是可以保证支持 LBA 的。

看到几位不是在本地硬盘上使用,而是在 U 盘上使用。假如主板不支持 LBA,那么其中有些方案就不行了,必须用 fbinst 才能保证最大的成功率。尤其是,Wee 也是依赖 LBA,所以,Wee 不能应付 USB 上的复杂情况。

除了 LBA 这个 “大问题” 以外,还有 “扇区数极限” 这个小问题。靠近磁盘开头的扇区容易被 BIOS 支持,而靠近磁盘尾部的扇区,就可能因 BIOS 的 “能力不济、鞭长莫及” 而无法访问了。即使是本地硬盘,其 BIOS 的扇区访问能力也是有极限的,有很多主板(是大量的主板),其 BIOS 只能访问 137G 的硬盘空间,不能访问超出这个极限的其他那些扇区数据。在 U 盘上,其极限值可能还要低。就是说,在支持 LBA 的情况下,仍然有 “扇区数极限” 的问题。不要以为,只要支持 LBA 就 “万事大吉” 了。

点评

G4D这类优秀的软件,用户群体比较宽泛,不同的用户有不同的需求特点。 如电脑专业从业人员,特别是搞电脑维修的,需要面对不同的硬件,因此需要最大限度的兼容性,此时采用fbinst的方案,可能是最佳选择。  详情 回复 发表于 2013-10-23 11:56
回复

使用道具 举报

31#
 楼主| 发表于 2013-10-20 16:40:30 | 只看该作者
授人以鱼,不如授人以渔。感谢天涯、不点、Chenall等大师传授的“渔”,深层次理解了相关问题,学会自己拼接,就可以随时跟上G4D的版本更新了。
回复

使用道具 举报

30#
 楼主| 发表于 2013-10-20 16:33:38 | 只看该作者
快雪时晴 发表于 2013-10-20 13:55
IBM兼容PC,INTEL继承,都是低位在低地址,高位在高地址
因此在存储空间(磁盘,内存)中你看到 AB CD ... ...

谢谢快雪,几句话简单明了,连历史演变过程都包括了,使我搞清楚了一个问题,又增长知识了。
回复

使用道具 举报

29#
发表于 2013-10-20 14:35:58 | 只看该作者
pppfj 发表于 2013-10-20 13:48
To 天涯斑竹:
    原因已找到,测试已成功。
    将您14楼提供的只包含2个扇区的文件和您在23楼提供的拼 ...

你的理解是正确的,呵呵!
20 08
这个代码我也不清楚,最初的 gnu 0.97 里就是这个代码,而且不能修改,否则失败!
回复

使用道具 举报

28#
 楼主| 发表于 2013-10-20 14:04:13 | 只看该作者
本帖最后由 pppfj 于 2013-10-20 16:48 编辑

To不点大师:
    通过诸多大师们的指点,我对启动过程和grldr的了解提升了一个层次,这是直接使用工具软件无法达到的。折腾的过程,其实是一个学习的过程,这就是我为什么选择手动制作的原因。掌握了解其原理之后,反倒可能会选择使用各种工具软件。
     fbinst软件兼容性更好,也是我计划在今后学习掌握的内容之一。下一步我计划首先尝试和学习Chenall所推荐的wee+grldr的方法,将grldr放入磁盘尾部的空闲扇区,以免被人无意删掉,而后学习fbinst软件的使用。因为U盘是经常借来借去的,放在文件系统中不保险。
回复

使用道具 举报

27#
发表于 2013-10-20 13:55:25 | 只看该作者
pppfj 发表于 2013-10-20 13:48
To 天涯斑竹:
    原因已找到,测试已成功。
    将您14楼提供的只包含2个扇区的文件和您在23楼提供的拼 ...

IBM兼容PC,INTEL继承,都是低位在低地址,高位在高地址
因此在存储空间(磁盘,内存)中你看到 AB CD .... 其对应的数值就是 0xCDAB

点评

谢谢快雪,几句话简单明了,连历史演变过程都包括了,使我搞清楚了一个问题,又增长知识了。  详情 回复 发表于 2013-10-20 16:33
回复

使用道具 举报

26#
 楼主| 发表于 2013-10-20 13:48:15 | 只看该作者
本帖最后由 pppfj 于 2013-10-20 13:54 编辑

To 天涯斑竹:
    原因已找到,测试已成功。
    将您14楼提供的只包含2个扇区的文件和您在23楼提供的拼接好grldr文件的前2个扇区做了对比,发现第二扇区的末尾四个字节不同。
14楼第二扇区末尾4字节:
  1. 3D 00  20 08
复制代码
23楼第二扇区末尾4字节:
  1. 0A 02  20 08
复制代码
按照您在17楼的说法:
第二个扇区倒数3,4两个字节是加载grldr的扇区数,我写入600个,你按照实际修改。

这里是决定读入多少扇区进内存的关键位置。
  我不是学计算机专业的,高位低位搞不太明白,只好都做了计算:
  第14楼:3D00=15616,太多了,不像。是字节吗?15616/512=30个扇区,又太少了。
          003D=3D=61个扇区,太少了。
  第23楼:0A02=A02=2562,太多了,不像。按字节折算为扇区:2562/512=5个扇区,更不像。
          020A=20A=522,非常接近拼接GRLDR后的扇区数量,我拼接后为517个扇区。
  因此,我假定上述最后一个推断是正确的,没有直接使用您在23楼提供的拼接好的文件,而是选择自己把昨天已制作好的U盘的第二个扇区最后四个字节由:
  1. 3D 00  20 08
复制代码
,改为:
  1. 0A 02  20 08
复制代码
,重启后选择U盘启动,顺利启动到grub>提示符下,成功!
    谢谢斑竹指点!
    猜想:是不是14楼的附件只读取61个扇区?
    另问:1.是不是计算机的双字节顺序,都是低位在前,高位在后,使用的时候要颠倒一下顺序?
2.第二扇区最后两个字节:
  1. xx xx  20 08
复制代码
是做什么用的?

点评

你的理解是正确的,呵呵! 20 08 这个代码我也不清楚,最初的 gnu 0.97 里就是这个代码,而且不能修改,否则失败!  详情 回复 发表于 2013-10-20 14:35
IBM兼容PC,INTEL继承,都是低位在低地址,高位在高地址 因此在存储空间(磁盘,内存)中你看到 AB CD .... 其对应的数值就是 0xCDAB  详情 回复 发表于 2013-10-20 13:55
回复

使用道具 举报

25#
发表于 2013-10-20 13:33:49 | 只看该作者
本帖最后由 快雪时晴 于 2013-10-20 14:14 编辑
不点 发表于 2013-10-20 11:53
没有几何参数的探测适应过程,也就不能保证有较高的成功率。虽然在一部分机器上测试成功,但不能大面积推广 ...


能否安装WEE63到MBR,把GRLDR用WINHEX写到硬盘最后的剩余空间处,这个扇区偏移数是知道的,比如1**678
然后用(hd0)1**678+1024移交控制

这样可以吗,有点类似pauly的XORLDR了
^^^^^^^^^^^^^^^^^^^^^^^^
经实验,可行,谢谢不点!
回复

使用道具 举报

24#
发表于 2013-10-20 11:53:17 | 只看该作者
没有几何参数的探测适应过程,也就不能保证有较高的成功率。虽然在一部分机器上测试成功,但不能大面积推广。

前面提到,要么采用 fbinst,要么集成 grldr.mbr 末尾的几何参数探测代码。否则不能应付各种主板变态的、五花八门的 CHS 值。

感觉采用 fbinst 是最根本的,因为它的成功率最高。

点评

能否安装WEE63到MBR,把GRLDR用WINHEX写到硬盘最后的剩余空间处,这个扇区偏移数是知道的,比如1**678 然后用(hd0)1**678+1024移交控制 这样可以吗,有点类似pauly的boot  详情 回复 发表于 2013-10-20 13:33
回复

使用道具 举报

23#
发表于 2013-10-20 11:23:08 | 只看该作者
这个是在我的本子IBM R51E上测试成功的,这个是20131018的新版grldr。

直接恢复这600个扇区。





stage-grldr-20311018.rar

131.79 KB, 下载次数: 18, 下载积分: 无忧币 -2

回复

使用道具 举报

22#
发表于 2013-10-20 10:46:21 | 只看该作者
不点 发表于 2013-10-20 08:32
多载入的尾部扇区,不影响 grldr 的执行。

天涯海角自己测试成功了吗?我假定天涯海角测试成功了。

这里的 stage 是 Pauly 的 bootice 里 GRUB2.0 的前2个扇区,我测试过,完全可以。。。
一个扇区也可以引导整个grldr。。。
回复

使用道具 举报

21#
发表于 2013-10-20 10:44:13 | 只看该作者
本帖最后由 天涯海角1216 于 2013-10-20 10:52 编辑
pppfj 发表于 2013-10-19 22:25
读入600个扇区肯定够用了,我猜想代码后面多读的几十个空白扇区,除了多占用了一些内存之外,应该不会对 ...


你用BOOTICE 恢复到MBR,注意分区表!
这个是在我的本子IBM R51E上测试成功的,可能是2011的grldr。
直接恢复,无需修改代码!注意分区表就行了。。。

stage-grldr.rar

130.28 KB, 下载次数: 16, 下载积分: 无忧币 -2

回复

使用道具 举报

20#
发表于 2013-10-20 09:11:26 | 只看该作者
进一步的引申。假如你为 MBR 保留 8M 以上的扇区数,那么你可以安装 fbinst 了。

fbinst 能够保证万无一失。fbinst 失败的情况,都可以通过调整安装参数(例如是否复制 BPB)来解决。到目前为止,没有见到一个真实的、经过确认的失败报告。理论上,fbinst 也可能成为主板 BIOS 攻击的对象,不过,从实践来看,却没有人给出一个确认无误的失败报告。

回复

使用道具 举报

19#
发表于 2013-10-20 08:32:35 | 只看该作者
多载入的尾部扇区,不影响 grldr 的执行。

天涯海角自己测试成功了吗?我假定天涯海角测试成功了。

那么可能还有什么问题呢?

有啊。我没有看天涯海角的引导代码,但我知道,两个扇区是无法完成加载的。困难在于,当 BIOS 对 USB 设备不支持 LBA 模式的读取时,必须探测正确的 CHS 值,才能成功启动超过一个磁道长度的 GRLDR 扇区序列。光是这 CHS 探测的代码,就要满满地占用 2 个扇区。再加上扇区引导记录也要占用一个或两个扇区,因此,最低的扇区占用是 3 个扇区。如果选择不探测,那么确实能够做到在一个扇区之内完成加载。不探测时,必须由用户在你所规定的位置填写正确的 H 和 S 值,才可以保证成功加载。然而用户确定 H 和 S 是麻烦的,除非用户事先知道 H 和 S 的值。

如果假定 BIOS 支持 LBA,那么只需 1 个扇区即可完成加载。Wee 就是这样做的。Wee 的第一扇区可以加载 127 扇区的引导代码。为什么是 127 呢?那是因为,这个 127 就是 LBA 模式的 BIOS 每次传递的最大扇区数。如果加载的扇区数超过 127,那么需要反复调用 BIOS 多次,可以用一个循环来实现。wee 只调用了一次 BIOS,所以,wee 不需要循环。要读取更多的扇区,必须修改 Wee 的代码,增加一个循环。

为了加载 GRLDR,可以假定 GRLDR 为 512K,即 1024 个扇区。GRLDR 不可以超过 512K。超过之后,GRLDR 就有可能无法被成功加载,或者在某些情况下(例如 PXE 启动时)产生内存冲突(内存覆盖),导致死机或运行失常。要知道,机器的最大可用常规内存也达不到 640K。所以,512K 的 GRLDR 就已经很大了。

用 BIOS 加载扇区,当不支持 LBA 模式时,最大的困难就是 H 和 S 的确定。如果这个没问题,那基本上就不会有问题了,顶多还有一个 “扇区号过大,超出 BIOS 加载能力” 的问题,不过这不会出现,因为我们这里的扇区都是在磁盘最开头,都在 1M 以内,是最安全的了,没有理由加载失败。

点评

这里的 stage 是 Pauly 的 bootice 里 GRUB2.0 的前2个扇区,我测试过,完全可以。。。 一个扇区也可以引导整个grldr。。。  详情 回复 发表于 2013-10-20 10:46
回复

使用道具 举报

18#
 楼主| 发表于 2013-10-19 22:25:54 | 只看该作者
天涯海角1216 发表于 2013-10-19 19:34
第二个扇区倒数3,4两个字节是加载grldr的扇区数,我写入600个,你按照实际修改。

  读入600个扇区肯定够用了,我猜想代码后面多读的几十个空白扇区,除了多占用了一些内存之外,应该不会对程序运行造成什么影响吧?不能启动到命令行,也没有出错信息,屏幕上只有一个光标在闪烁,会不会是grldr的内核没有被正确载入内存并被执行呢?
  虽然有这个怀疑,不过,明天我还是打算按斑竹说的,把读入的扇区数量修改一下,再试一试。

点评

你用BOOTICE 恢复到MBR,注意分区表! 这个是在我的本子IBM R51E上测试成功的,可能是2011的grldr。  详情 回复 发表于 2013-10-20 10:44
回复

使用道具 举报

17#
发表于 2013-10-19 19:34:44 来自手机 | 只看该作者
第二个扇区倒数3,4两个字节是加载grldr的扇区数,我写入600个,你按照实际修改。

点评

读入600个扇区肯定够用了,我猜想代码后面多读的几十个空白扇区,除了多占用了一些内存之外,应该不会对程序运行造成什么影响吧?不能启动到命令行,也没有出错信息,屏幕上只有一个光标在闪烁,会不会是grldr的内  详情 回复 发表于 2013-10-19 22:25
回复

使用道具 举报

16#
 楼主| 发表于 2013-10-19 17:10:11 | 只看该作者
天涯海角1216 发表于 2013-10-18 21:53
给个做好的,恢复到MBR,注意不要修改分区表。
将grldr从偏移0X2000开始到最后写入硬盘2号扇区以后。。。。 ...

天涯斑竹,不好意思,试验没有成功。
    我用一个U盘做的测试。具体制作过程如下:
    1、用磁盘软件将U盘的第一分区起始位置向后调整到640扇区,留下了640个扇区的MBR区,可容纳:640×512=327680=327k字节数据,grldr只有266k,大小足够。
    2、将您所给的14楼附件的前440字节写入mbr第一扇区的前440字节,绕过分区表后,将对应第二个扇区的512个字节写入第二扇区。
    3、打开grldr文件,按照您的指导,将从偏移地址2000H开始,直至文件结尾的内容,写入磁盘从第三扇区开始的位置,连同第1、第2扇区在内,大约好像占用了500多个扇区,具体记不清了。

    重启后,选择U盘启动,黑屏,只有光标一直在闪烁,无法进入grub>命令行,引导不成功。

    可以排除U盘启动的原因。为了查找原因,我做了一些测试,同一台机器,同样是这个U盘,同样的分区结构,将grldr.mbr写入前18个扇区,可以成功引导U盘第一分区中的grldr文件进入grub>提示符。
    不知道咋回事。
    猜想是不是因为grldr文件大小随版本不同不断变动,第二扇区中的代码不知道要读取多少个扇区所致?——外行瞎猜,不要见笑。
回复

使用道具 举报

15#
 楼主| 发表于 2013-10-18 23:34:06 | 只看该作者
天涯海角1216 发表于 2013-10-18 21:53
给个做好的,恢复到MBR,注意不要修改分区表。
将grldr从偏移0X2000开始到最后写入硬盘2号扇区以后。。。。 ...

好,容后测试,再行汇报!
回复

使用道具 举报

14#
发表于 2013-10-18 21:53:50 | 只看该作者
本帖最后由 天涯海角1216 于 2013-10-18 22:09 编辑

给个做好的,恢复到MBR,注意不要修改分区表。
将grldr从偏移0X2000开始到最后写入硬盘2号扇区以后。。。。

(即把头部16个扇区去掉,用stage1-2引导)

333.jpg (99.59 KB, 下载次数: 125)

333.jpg

stage1 2.rar

779 Bytes, 下载次数: 20, 下载积分: 无忧币 -2

点评

天涯斑竹,不好意思,试验没有成功。 我用一个U盘做的测试。具体制作过程如下: 1、用磁盘软件将U盘的第一分区起始位置向后调整到640扇区,留下了640个扇区的MBR区,可容纳:640×512=327680=327k字节数据  详情 回复 发表于 2013-10-19 17:10
好,容后测试,再行汇报!  详情 回复 发表于 2013-10-18 23:34
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-25 22:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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