无忧启动论坛

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

【转】MBR 嵌入微型 grub (2010年12月19日更新,不点大师加菜单)

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-15 05:31:33 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本文和所有文件来自时空论坛“不点”大师!在此致谢!

这个 grldr 的头部不再是 16 扇区,而是 2 个扇区。只有这样,体积才可能减小到 63 扇区以内。

现在说说这个新的 GRLDR 精简版的结构:

1。第一扇区是为了放置在 MBR 上的。你只需要将开头的 440 个字节复制到 MBR 就可以了。分区表当然不能被破坏,这和以前的做法是一样的。

2。第二扇区仍然是为了备份先前的 MBR,这个也与以前一样,不多说了。

从第三扇区,一直到文件结尾,就是放置在 MBR 上的相应扇区上的。也就是说,MBR 为第一扇区,紧接着是第二扇区(放置先前的 MBR 的备份),再接着,就是第三扇区,放置的当然应该是 GRLDR 的第三扇区以后的全部扇区(总共放置的扇区数不超过 63 个,因为 GRLDR 的长度就在 63 扇区以内)。

大家先在虚拟机下测试,以免有什么 bug 把你的硬盘破坏掉,那我可不负责。

然后,再说说 grldr 文件结尾处的 echo weeeee 命令。这仅仅是一条测试用的命令。你在这里放置任何命令都可以的。grldr 启动之后,首先就要执行这里的命令序列。是的,很多命令都可以放在这里,不同的命令之间,用回车或者换行分隔都可以。

如果你放置的是如下两条命令:
复制内容到剪贴板代码:
find --set-root /grldr
/grldr
那么启动时会自动寻找 grldr,如果找到,就启动 grldr。当然这个 grldr 就是常规的、非精简版的 grldr 了。而精简版的 grldr 是不能用这种方法来启动的。


一个附带的特性,这次把 grldr 放在任意深的目录下是可能的了: 复制内容到剪贴板 代码:find --set-root /boot/grub/grldr
/boot/grub/grldr

得益于 find 的查找功能。好多人以前希望 grldr 不放在根目录,那时候是不可能做到的。现在可以了。而且也支持 ext4 分区的 grldr 文件(当然任何别的文件也一样)的查找了。


需要说明,精简版不支持 title 等命令,也不支持 && 和 || 逻辑符号。其实只支持 root, find, command 这三条内部命令。其他的都是外部命令。例如,grldr,grub.exe,ntldr,bootmgr,vmlinuz,io.sys,kernel.sys,echo 等,统统都是外部命令。


提醒一下:不要安装在 U 盘的 MBR 上。有很多主板对于 U 盘不使用 LBA 模式。而我们这个精简版的 GRLDR 只支持 LBA 模式,而完全不支持 CHS 模式。所以,放在 U 盘就不行了。当然,如果你知道你的主板 BIOS 在你的 U 盘上确实提供了 LBA 支持,那倒是可以试一试的。


新版本到 http://nufans.net/grub4dos/wee/ 底下

原文地址:  
http://bbs.znpc.net/viewthread.php?tid=5838&extra=page%3D1
--------------------2010年12月19日更新-----------------------------

地址:http://nufans.net/grub4dos/wee/
菜单如下:
(最大支持20个菜单条,恳请各位测试反馈)

title                            WDC-500G-wee
clear
title                            01  WinXP
root (hd0,1)
+1
title                            02  WIN7
root (hd0,0)
+1
title                            03  D_PAN
root (hd0,4)
+1
title                            04  E_PAN
root (hd0,5)
+1
title                            05  XORLDR
52628941+1
title                            06  GRLDR
2104000+490
title                            07  FBINST.MBR
557134253+1
title                            08  PLoP Boot Manager
2103900+100
title                            09  GMY-GHOST
/memdisk /ghost.img img raw
title                            10  SYSLINUX
find --set-root /boot/IBM.ICO
+1
title                            11  SSXF-WinPE
find --set-root /boot/SSXFLDR
/boot/SSXFLDR
title                            12  SSHY-WINPE
find --set-root /boot/SSHYLDR
/boot/SSHYLDR
title                            13  VISTA
find --set-root /boot/IBM.ICO
/boot/bootmgr
title                            14  SKTQB
2101000+480
title                            15  WIN NT/2003/XP
find --set-root /NTLDR
/NTLDR
title                            16  Win7/VISTA
find --set-root /BOOTMGR
/BOOTMGR
title                            17  WinPE.ISO
/memdisk /winpe.iso iso raw


注意:
1.不要用chainloader 命令,仿上述命令即可!
2.也请各位测试

title                            03  D_PAN
rootnoverify (hd0,4)
+1
title                            04  E_PAN
rootnoverify (hd0,5)
+1

即 rootnoverify 命令是否有问题?








3. 【改造】可以将U盘可见分区的BPB复制到MBR,可能提高安装到U盘的启动兼容性。
如果U盘启动电脑成功,则不需复制BPB如果U盘启动失败,再试试这个方法。欢迎大家测试反馈!
将可见分区(最好是FAT分区)的引导扇区从偏移0X02到偏移0X59止,复制到MBR的0X02到偏移0X59后再按不点大师指导的方法稍作修改即可!
【不点大师指正:BPB 是促使某些 USB 的主板识别 USB 设备的。有些主板需要 BPB。而有些主板,不喜欢 BPB,有了 BPB,它反而会失败了。另外,既然是欺骗主板的,那么 BPB 是不是就要做得很像呢?比如说,位于 0x1C 处的四字节的“hidden sectors”(隐藏扇区数)域,应该清零,才算是一个合法的软盘引导扇区。在第一扇区上的 BPB,其实就是模仿软盘。同时,位于 0x0E 处的两字节的“reserved sectors”(保留扇区数),应该指向第一分区的 FAT 表的开头,此时第一分区最好也应该是 FAT 格式的,这样更容易欺骗成功。通常,第一分区起始于扇区号 63。隐藏扇区数,加上保留扇区数,就是 FAT 表的起始扇区的号码。所以,很容易算出来。那么,位于 MBR 上的 BPB 中的隐藏扇区数,加上保留扇区数,也应该等于 FAT 表的起始扇区号才算完美。不过,有时候(隐藏扇区数和保留扇区数)两者加起来超过了 2 个字节,那就没办法了,没法写入保留扇区数中了,因为保留扇区数只有两个字节的空间。这时,你可以随便设置一个保留扇区数,不过,应该至少是 64(也就是十六进制的 0x40)。而前面已经解释过了,MBR 上的隐藏扇区数应该是 00 00 00 00,只有这样才算一个完全的欺骗。但是,欺骗得完全,不一定能提高启动的成功率。这就要靠实践来证实了。




4. 【应用之绝对扇区启动】
将某文件写入绝对扇区,如:plpbt.bin,位置是8388000扇区,大小约85个扇区
菜单写入:command (hd0)8388000+85    (注意command后空一格)
即可从本机启动plpbt.bin。。。目的是加载USB启动

【其他】若想启动grldr完整版也可以,类似:
command (hd0)X+Y                                         X是grldr的绝对扇区位置,Y grldr占用扇区数
目的是系统或分区损坏,从绝对扇区启动加以维护。。




  
请大家测试反馈,谢谢!


















[ 本帖最后由 天涯海角1216 于 2010-12-21 14:13 编辑 ]

WDC-500G-wee_20101219.rar

18.42 KB, 下载次数: 243, 下载积分: 无忧币 -2

用BOOTICE恢复,勾选“保留磁盘签名和分区表不变”切记!

memdisk.rar

12.68 KB, 下载次数: 193, 下载积分: 无忧币 -2

2#
 楼主| 发表于 2010-6-15 05:32:12 | 显示全部楼层
留空,等待反馈!。。。。。。。。。。。


你还可以将分区PBR备份为:c.bin(1个扇区即可),放在根目录
用:
find --set-root /c.bin
/c.bin

即可成功启动该分区


find --set-root /boot/IBM.ICO
+1


也可以启动该分区!
find --set-root /boot/IBM.ICO
是定位分区的!



[ 本帖最后由 天涯海角1216 于 2010-6-15 06:29 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2010-6-15 09:03:45 | 显示全部楼层

回复 #3 jxzhzcf 的帖子

是的!
可以直接启动文件或分区PBR,支持子目录查找和支持 ext4 分区的 grldr 文件(当然任何别的文件也一样)的查找了
回复

使用道具 举报

4#
 楼主| 发表于 2010-6-15 09:18:24 | 显示全部楼层

回复 #5 sratlf 的帖子

如果是GHOST,则不会覆盖掉嵌入的微型Grub,
如果是安装版的,则会覆盖掉嵌入的微型Grub的第一扇区。。
回复

使用道具 举报

5#
 楼主| 发表于 2010-6-15 09:41:29 | 显示全部楼层

回复 #9 jxzhzcf 的帖子

不是!
其微型grub是安装到mbr上,它的mbr是专为微型grub使用,若0扇区被修改,同样无法启动此grub,其他mbr也是一样!

原来的grub安装到mbr,占用18个扇区,只是能够搜索grldr,其本身不能启动分区或文件,而此微型grub则具有启动分区和文件的功能了!
回复

使用道具 举报

6#
 楼主| 发表于 2010-6-15 17:38:40 | 显示全部楼层

回复 #16 混合 的帖子

不放心的话,可以先备份MBR到U盘,再用BOOTICE写入就可以了!
回复

使用道具 举报

7#
 楼主| 发表于 2010-6-15 17:40:09 | 显示全部楼层

回复 #15 tdq868xin 的帖子

我使用结果要比 63S-GRUB要好,启动系统和分区都很成功!
缺憾就是无选择菜单。。。。
回复

使用道具 举报

8#
 楼主| 发表于 2010-6-15 20:55:57 | 显示全部楼层

回复 #20 33445566 的帖子

是的!
我是在文本编辑后,用 WINHEX 写入的 !
回复

使用道具 举报

9#
 楼主| 发表于 2010-6-15 21:48:52 | 显示全部楼层

回复 #22 tdq868xin 的帖子

将里面的 grldr 第一扇区除分区表外写入硬盘MBR,再从第三扇区开始复制并写入硬盘第三扇区开始处!
回复

使用道具 举报

10#
 楼主| 发表于 2010-6-15 22:10:09 | 显示全部楼层

回复 #22 tdq868xin 的帖子

因为其大小不是512字节的整数倍,所以BOOTICE会拒绝写入。。。

我将其写入硬盘,加上菜单再备份出来,一定是512字节的整数倍了,所以才可以用BOOTICE写入硬盘了。
回复

使用道具 举报

11#
 楼主| 发表于 2010-6-20 05:33:21 | 显示全部楼层
6月20日更新,欢迎测试反馈!
回复

使用道具 举报

12#
 楼主| 发表于 2010-6-20 16:32:43 | 显示全部楼层

回复 #31 LOVPE 的帖子

不点大师的本意是安装到MBR及其以后的62个扇区内,再加上简单的启动系统和其他功能的,所以只有不足31.5KB(63个扇区就是31.5KB大小)
回复

使用道具 举报

13#
 楼主| 发表于 2010-6-21 08:00:01 | 显示全部楼层

回复 #35 不点 的帖子

非常感谢不点大师指导!

4.的确复制BPB提高U盘启动兼容性的问题还待补充和修正。
5.的确经过我的测试wee绝对扇区启动 plpbt.bin 和完整版的 grldr 是成功的,所以发了出来。

再次感谢大师莅临指导!
回复

使用道具 举报

14#
 楼主| 发表于 2010-6-21 14:05:47 | 显示全部楼层

回复 #37 不点 的帖子

非常感谢不点大师指导!

我再进行整理和修改一下!让他们能够正确修改和使用BPB!
回复

使用道具 举报

15#
 楼主| 发表于 2010-6-21 21:54:45 | 显示全部楼层

回复 #41 jxzhzcf 的帖子

这个是精简版的,可能复杂一点的功能就不可以了
回复

使用道具 举报

16#
 楼主| 发表于 2010-7-1 14:00:45 | 显示全部楼层

回复 #52 sratlf 的帖子

把这2次MBR备份63个扇区,用WINHEX比较,就可以知道代码是否修改了
回复

使用道具 举报

17#
 楼主| 发表于 2010-7-4 09:15:03 | 显示全部楼层

回复 #61 不点 的帖子

我写了加载菜单方法:
将如下内容写入wee的尾部菜单处,这样启动后可以显示(写入绝对扇区位置+该文件占用扇区数),需启动哪个,只需写入XX+YY即可!欢迎批评指正!

exit
1+1(ntldr)------------------------------绝对扇区位置+该文件占用扇区数
exit
63+1(XP)
exit
12685680+1(xorldr)
exit
51324855+468(grldr)
exit
42627991+480(sktqb)
exit
13212175+88(Plop.bin)
exit
12544467+580(setupldr.bin)

请不点大师指正!谢谢!
回复

使用道具 举报

18#
 楼主| 发表于 2010-7-4 19:02:14 | 显示全部楼层

回复 #65 不点 的帖子

回不点大师:
我的意思是:让wee遇到错误文件名(加个括号内的注释,wee肯定找不到了),从而不执行,这样便可以将所有的启动项列出,相当于打印出菜单了。


1+1(ntldr)
63+1(XP)
12685680+1(xorldr)
51324855+468(grldr)
42627991+480(sktqb)
13212175+88(Plop.bin)
12544467+580(setupldr.bin)
回复

使用道具 举报

19#
 楼主| 发表于 2010-7-4 19:08:26 | 显示全部楼层

回复 #65 不点 的帖子

有了括号,我们就详细知道该绝对扇区启动的文件,wee却不知道了,所以写屏。
我们就可以将其列举的菜单中想启动项再输入即可了。。
回复

使用道具 举报

20#
 楼主| 发表于 2010-12-13 13:31:26 | 显示全部楼层

回复 #72 2010roytam1 的帖子

哦,刚看了!
不过这个菜单目前还不会编写呢,呵呵
回复

使用道具 举报

21#
 楼主| 发表于 2010-12-16 17:28:33 | 显示全部楼层
新版已到,请各位测试反馈!
谢谢!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-20 22:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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