无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 不点
打印 上一主题 下一主题

准备基于 fbinst 进行再开发,请各位提供帮助

    [复制链接]
91#
 楼主| 发表于 2014-1-3 20:26:48 | 只看该作者
本帖最后由 不点 于 2014-1-3 21:05 编辑
268M的SD卡用川宇的读卡器
用BOOTICE-扇区编辑-从文件恢复扇区,写入24M.img到SD卡,测试不成功,屏幕显示:0000 3F21 3F21  然后就卡在这里,按Ctrl+Alt+Del不能重启,只能热启


这个情况值得研究,它死在探测 LBA 支持的时候!这是个新情况,以前我们不曾了解过这一点。哦,想起来了,bean 的 fbinst 就有 chs 模式的开关,说的大概就是不支持 LBA 的情况。

我再去看看 bean 的代码……

【更新】确实,bean 用 --chs 来控制不再探测 LBA 支持。从此分析,我们干脆在这第一阶段放弃探测 LBA 支持,而只用 chs 模式。这样甚至还节约了大量的代码空间。

请等待下一个版本。

评论一下,真是作恶无极限,连探测 LBA 支持与否,都要死机。






点评

唉,早来看一下,就不用再花一小时测试60M的了,不过测试中发现一个问题: 所有国产品牌都能直接到到第二阶段,但DELL、HP不能通过,在第一阶段后卡死。 同时测试24M,所有品牌都能顺利测试到最后成功。  详情 回复 发表于 2014-1-3 21:06
回复

使用道具 举报

92#
发表于 2014-1-3 21:06:20 | 只看该作者
不点 发表于 2014-1-3 20:26
这个情况值得研究,它死在探测 LBA 支持的时候!这是个新情况,以前我们不曾了解过这一点。哦,想起来 ...

唉,早来看一下,就不用再花一小时测试60M的了,不过测试中发现一个问题:
所有国产品牌都能直接到到第二阶段,但DELL、HP不能通过,在第一阶段后卡死。
同时测试24M,所有品牌都能顺利测试到最后成功。
回复

使用道具 举报

93#
 楼主| 发表于 2014-1-3 21:57:31 | 只看该作者
本帖最后由 不点 于 2014-1-5 16:41 编辑

现在这个版本,只是在第一阶段屏蔽掉 LBA 探测。第二阶段没有读盘动作。第三阶段的 grldr 没有改变,仍然是探测 LBA 的。估计第一、二阶段可以顺利通过,但对于不支持 LBA 的主板 BIOS 来说,第三阶段进入 grub4dos 后,在访问 U 盘的时候会死机的。

请从头至尾看完所有的帖子,了解安装使用的方法、安装时存在的危险,以及屏幕显示信息的解释,等等。小米的路由器是拆开的,需要用户自己组装。我们这个启动工具,目前连名字都没有,也是发烧中的发烧。您能找到这里,是缘分;如果找不到这里,也就不用冒着很大风险来测试这个启动工具了。鼓励但不鼓动;自愿而不强迫。

附件 24M_2.img 已于2014年1月5日更新,请重新下载测试。

24M_2.rar

201.35 KB, 下载次数: 67, 下载积分: 无忧币 -2

第一阶段屏蔽掉 LBA,第三阶段未屏蔽 LBA,请测试。

点评

128M的SD卡用两个不同的读卡器,用BOOTICE-扇区编辑-从文件恢复扇区,写入24M_2.img到U盘, 联想台式机(实机) 屏幕显示:0080 3F60 3F60 0100 卡死 联想台式机(硬盘测试器虚拟机) 屏幕显示:0080 3F60 3F60  详情 回复 发表于 2014-1-4 09:17
回复

使用道具 举报

94#
发表于 2014-1-4 09:17:31 | 只看该作者
不点 发表于 2014-1-3 21:57
现在这个版本,只是在第一阶段屏蔽掉 LBA 探测。第二阶段没有读盘动作。第三阶段的 grldr 没有改变,仍然是 ...

128M的SD卡用两个不同的读卡器,用BOOTICE-扇区编辑-从文件恢复扇区,写入24M_2.img到U盘,
联想台式机(实机)
屏幕显示:0080 3F60 3F60 0100 卡死

联想台式机(硬盘测试器虚拟机)
屏幕显示:0080 3F60 3F60 后变为 CEDE 3F60 3F60  卡死
回复

使用道具 举报

95#
发表于 2014-1-4 20:31:57 | 只看该作者
128M的SD卡用两个不同的读卡器,用BOOTICE-扇区编辑-从文件恢复扇区,写入24M.img到U盘,
联想台式机(实机/虚拟机一样结果)

1.jpg (17.22 KB, 下载次数: 187)

1.jpg
回复

使用道具 举报

96#
 楼主| 发表于 2014-1-4 23:18:27 | 只看该作者
很抱歉,犯了一个低级错误,导致以前的测试无效。

请大家重新下载 84 楼的 24M.img 进行测试。它是启用 LBA 的。我希望它能够坚持很长时间的考验,直到最后有人发现它是失败的为止。

24M_2.img 是屏蔽掉 LBA 的版本。它作为候补版本。如果有一天 24M.img 被证明失败,那就只好采用 24M_2.img 了。

回复

使用道具 举报

97#
发表于 2014-1-5 07:45:08 | 只看该作者
联想台式机(硬盘测试器虚拟机)

24.jpg (22 KB, 下载次数: 182)

24.jpg

24_2.jpg (14.21 KB, 下载次数: 201)

24_2.jpg
回复

使用道具 举报

98#
 楼主| 发表于 2014-1-5 09:23:38 | 只看该作者
本帖最后由 不点 于 2014-1-5 17:04 编辑

很抱歉,程序代码弄好之后,又把尾部的文件弄错了。刚刚又更新了,试试。

8M 的测试文件暂时就不需要了。我们主要是用 24M 的测试文件。

关于 24M 映像文件结构的说明:总扇区数 48481。开头部分是 16193 个扇区(大约 8M),这是带有物理序列号的。每个扇区的物理序列号位于该扇区偏移 0x0E 处。最开头的扇区,其物理序列号是 0x3F60,其后的扇区,其物理序列号逐步递降,到最后一个扇区,其物理序列号为 0x20。然后是不带物理序列号的结尾部分。结尾部分是 FAT32 的文件系统,共 32288 个扇区(保留扇区是 31 个,即 0x1F 个,接着是从 FAT 表直到根目录的扇区),这是与开头部分配合的,用户不可以随意手动替换。这个 FAT32 文件系统的容量是 8G。刚才所说的 32288 个扇区(大约 16M),仅仅是 FAT32 的主框架,不是它的容量。

精细结构描述:

扇区 0 - 扇区 189,共 190 个扇区,填充的是第一阶段的扇区。目的是为了能够捕捉到 BIOS 传递过来的控制。只要屏幕有显示信息,就是捕捉到了控制。第一阶段在完成必要的探测之后,会加载第二阶段和第三阶段的代码到内存 0000:7E00。

扇区 190,共 1 个扇区,是第二阶段的扇区(stage2),它的物理序列号是 0x3EA2。第二阶段接管控制时, CS:IP=0000:7E00。第二阶段的代码首先检查 CPU 寄存器以及内存的数据是否正常,如果有错误,则停机并打印失败信息,让用户了解失败的原因。如果一切正常,则把内存中的第三阶段的 GRLDR 进行整理(即去掉其内嵌的物理序列号);然后打印一条信息,让用户有机会按 P 键暂停。用户松开 P 键,2 秒之后就启动 GRLDR 了。用户每秒按一次 P 键,可保持程序处于暂停状态。GRLDR 取得控制时, CS:IP=0000:8000,DH=0xFF,DL=启动盘的盘号(0 是软盘,0x80 是硬盘);同时,堆栈上也压入了 DX 的值,虽然这对于 GRLDR 来说,没什么用处。

扇区 191 - 扇区 1341,共 1151 个扇区,是第三阶段的扇区(grldr)。注意,它的每个扇区都带有正确的物理序列号。它的物理序列号是从 0x3EA1 (十进制 16033)开始的,逐步递降。grldr 的最后一个扇区的物理序列号是 0x3A23(十进制 14883)。

扇区 1342 - 扇区 16192,共 14851 个扇区(大约 7M),是空白扇区,但每个扇区都带有物理序列号。其最开头的扇区的物理序列号是 0x3A22(十进制 14882),其结尾的扇区的物理序列号是 0x0020(十进制 32)。空白扇区是用户可以使用的。当然了,用户不可以破坏扇区的物理序列号,要保持正确的物理序列号。用户可能需要在自己的 menu.lst 菜单中添加自己的特殊工具,才能使用空白扇区上的数据。

扇区 16193 - 扇区 48480,共 32288 个扇区(大约 16M),是 FAT32 的分区结构数据。目前是固定的,用户不可以随意修改。其开头的 31 个扇区(0x1F 个扇区)是保留扇区数,紧接着是两份 FAT 表,每一份占用 0x3F00 个扇区,两份共占用 0x7E00 个扇区。最后剩下一个扇区,就是 FAT32 根目录的数据。31 + 0x7E00 + 1 = 32288。

用户可以在 Windows 资源管理器中,向 FAT32 分区拷贝文件。建议首先拷贝 menu.lst 文件。menu.lst 文件的开头(也或者在某个 title 之后),可以添加一条 geometry --lba127sector 命令,来加快 U 盘的读取速度。默认的 grldr 的内置菜单,已经用 geometry --lba1sector 屏蔽掉 U 盘的多扇区读取功能。要知道,对于变态的主板,geometry 命令的 --lba127sector 参数会引起死机。


以上这些信息(位置、长度、序列号,等),将来还可能发生变动。根据大家的测试情况,将来为了应付变态的 BIOS,我们有可能被迫改变上述数据结构。
回复

使用道具 举报

99#
发表于 2014-1-5 10:17:29 | 只看该作者
本帖最后由 月光海洋 于 2014-1-5 10:19 编辑

NEC LL550/T   笔记本电脑
主板          NEC AK3M2 (Socket P uFCPGA)

测试反馈:
U盘:台电乐威 8G(DM8261主控)
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到U盘,测试成功,屏幕显示:0080 3F60 3F60 AA55 然后顺利进入GRLDR
268M的SD卡用川宇的读卡器
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到SD卡,测试成功,屏幕显示:0000 3F60 3F60 AA55 然后顺利进入GRLDR


台式组装电脑
主板           BIOSTAR Group G41D3+ (CPU 1)  
测试反馈:
U盘:台电乐威 8G(DM8261主控)
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到U盘,测试成功,屏幕显示:0080 3F60 3F60 AA55 然后顺利进入GRLDR    进入较慢
268M的SD卡用川宇的读卡器
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到SD卡,测试成功,屏幕显示:0000 3F21 3F21 003F 00FF 然后顺利进入GRLDR    进入较慢
回复

使用道具 举报

100#
 楼主| 发表于 2014-1-5 11:52:50 | 只看该作者
月光海洋的测试情况很好。

显示 AA55 的,表示支持 LBA,这样也就不需要探测几何参数了。

最后的一个情况是不支持 LBA 的,它的 S=63,H=255,很不错。它的 MBR 的扇区号是 3F21,距离开头的 3F60 刚好是 63 个扇区,说明它隐藏了 63 个扇区(即,隐藏了一个磁道)。它是以软盘 00 启动的。

回复

使用道具 举报

101#
发表于 2014-1-5 12:34:12 | 只看该作者
本帖最后由 月光海洋 于 2014-1-5 12:36 编辑

台式组装电脑
主板              ECS H61H2-MV (SOCKET 0)  
测试反馈:
U盘:台电乐威 8G(DM8261主控)
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到U盘,测试成功,屏幕显示:0000 3F60 3F60 AA55 然后顺利进入GRLDR
268M的SD卡用川宇的读卡器
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到SD卡,测试成功,屏幕显示:0000 3F21 3F21 AA55 然后顺利进入GRLDR


台式组装电脑
主板              To be filled by O.E.M. To be filled by O.E.M. (CPU 1)  
测试反馈:
U盘:台电乐威 8G(DM8261主控)
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到U盘,测试成功,屏幕显示:0080 3F60 3F60 AA55 然后顺利进入GRLDR    进入较慢   
268M的SD卡用川宇的读卡器
用BOOTICE-扇区编辑-从文件恢复扇区,写入今早上刚不点更新的84楼24M.img到SD卡,测试成功,屏幕显示:0000 3F21 3F21 003F 00FF  然后顺利进入GRLDR    进入较慢
回复

使用道具 举报

102#
 楼主| 发表于 2014-1-5 12:55:22 | 只看该作者
楼上这次测试,认成软盘的,有三个。认成硬盘的,有一个。有三个支持 LBA。即使最后有一个是不支持 LBA 的情况,它的 S=63,H=255 都是最大值,也很棒,它的最大访问能力可以达到 8G,如果用它来启动一个小小的 PE,那应该是很轻松的。

回复

使用道具 举报

103#
发表于 2014-1-5 13:36:20 | 只看该作者
在引导方面,移动硬盘比U盘的兼容性与成功率高很多.

点评

支持这个观点。  发表于 2014-12-11 20:56
回复

使用道具 举报

104#
发表于 2014-1-6 08:20:02 | 只看该作者
本帖最后由 mygamexxx 于 2014-1-6 12:36 编辑

联想台式机
用BOOTICE-扇区编辑-从文件恢复扇区,24M.img到U盘,测试成功,屏幕显示:0080 3F60 3F60 AA55 然后顺利进入GRLDR

用BOOTICE-扇区编辑-从文件恢复扇区,24M_2.img到U盘,测试成功,屏幕显示:0080 3F60 3F60 0010 然后顺利进入GRLDR   
回复

使用道具 举报

105#
 楼主| 发表于 2014-1-6 10:46:42 | 只看该作者
24M_2.img 测试成功,屏幕显示:0080 3F60 3F60 AA55


不可能显示 AA55,因为 24M_2.img 已经去掉了 LBA 支持代码。你可能依旧是使用 24M.img 做测试的。不过没关系,不用再费事了,反正能成功就行。

点评

是大意,写错了,已改正。  详情 回复 发表于 2014-1-6 12:39
回复

使用道具 举报

106#
发表于 2014-1-6 12:39:14 | 只看该作者
不点 发表于 2014-1-6 10:46
不可能显示 AA55,因为 24M_2.img 已经去掉了 LBA 支持代码。你可能依旧是使用 24M.img 做测试的。不过 ...


是大意,写错了,已改正。是0010。
回复

使用道具 举报

107#
 楼主| 发表于 2014-1-6 12:56:30 | 只看该作者
0010 是 S=16,但后面应该还有一个 H=????,你没看清楚。不可能不显示出 H 的值,就进入 GRLDR。

点评

0080 3F60 3F60 003F 0010  详情 回复 发表于 2014-1-6 15:13
回复

使用道具 举报

108#
发表于 2014-1-6 15:13:27 | 只看该作者
不点 发表于 2014-1-6 12:56
0010 是 S=16,但后面应该还有一个 H=????,你没看清楚。不可能不显示出 H 的值,就进入 GRLDR。

0080 3F60 3F60 003F 0010
回复

使用道具 举报

109#
 楼主| 发表于 2014-1-6 15:25:07 | 只看该作者
这么说来,S=63,H=16。CHS 模式最大访问能力:63×16×1024=1032192 个扇区 = 516096 K,即大约 500M。就是说,用 CHS 模式启动一个小型的 PE 也是没问题的。但是要想用 CHS 模式加载一个 650M 的 ISO,那就不行了。好在这个电脑支持 LBA,所以,一切都没问题,CHS 模式的缺点就被掩盖了。



点评

年底了,搞总结什么的比较忙,有点大意,回复总是丢三落四。  详情 回复 发表于 2014-1-6 15:29
回复

使用道具 举报

110#
发表于 2014-1-6 15:29:20 | 只看该作者
不点 发表于 2014-1-6 15:25
这么说来,S=63,H=16。CHS 模式最大访问能力:63×16×1024=1032192 个扇区 = 516096 K,即大约 500M。就 ...

年底了,搞总结什么的比较忙,有点大意,回复总是丢三落四。
回复

使用道具 举报

111#
发表于 2014-1-6 16:22:26 | 只看该作者
感谢不点大师
回复

使用道具 举报

112#
发表于 2014-1-7 16:33:55 | 只看该作者
大师,可以说一下怎么搭建fbinst的编译环境吗?
回复

使用道具 举报

113#
 楼主| 发表于 2014-1-7 17:07:50 | 只看该作者
本帖最后由 不点 于 2014-1-15 20:11 编辑

编译环境是现成的,chenall 在 google code 上的 grub4dos 项目首页,就有一个 Windows 下的 colinux 环境,这个环境既可以编译 grub4dos、wee,也可以编译 fbinst。

考虑了好几天,软件的名字不容易确定,就叫做 “多重 MBR” 吧。今天也就可以正式发布源代码了。

源代码中,最难写的部分是 “如何把物理扇区序列号嵌入到 GRLDR 之中”。如果用 C 语言当然比较容易实现,但是,这里需要用 shell 来实现,所以,还是很费劲的,至今我没能找到比较高效的办法。目前这种实现是很 “低效” 的,在我的一台笔记本上,需要花费 15 分钟才能编译完,而其中 14 分钟是浪费在 “向 grldr 中嵌入扇区序列号” 上了。如果有谁能够针对这部分(即,“嵌入序列号”)用 shell 写出高效的代码,请帮忙。


2014 年 1 月 10 日更新:

今天成功地优化了 shell 代码,能够把编译时间控制在 3 分钟。同时,开始支持导入用户数据。用户数据文件必须取名为 userdata,长度不超过 14851×510=7574010 字节。把 userdata 放在源代码所在的文件夹下,然后运行 make 即可开始编译。

2014 年 1 月 14 日更新:修复了 GRLDR 的 bug,更新了 GRLDR 的代码。
2014 年 1 月 15 日更新:再次修复 GRLDR,更新 GRLDR 源代码。


multimbr.7z

151.75 KB, 下载次数: 55, 下载积分: 无忧币 -2

再次修复 GRLDR

点评

谢谢大师指点。我还有个问题,编译以后是Linux平台下的程序,怎么编译成Windows平台下的程序呢?  详情 回复 发表于 2014-1-11 14:24
回复

使用道具 举报

114#
发表于 2014-1-8 11:27:06 | 只看该作者
本帖最后由 nivigo 于 2014-1-8 11:29 编辑

D:\搜狗高速下载\下载\新版本测试fbinst\20140108112432.jpg

20140108112432.jpg (14.54 KB, 下载次数: 149)

20140108112432.jpg
回复

使用道具 举报

115#
发表于 2014-1-8 11:28:25 | 只看该作者
测试成功

20140108112432.jpg (14.54 KB, 下载次数: 168)

20140108112432.jpg
回复

使用道具 举报

116#
 楼主| 发表于 2014-1-8 11:34:04 | 只看该作者
谢谢,请各位不要用 8M 的映像来测试了。因为 8M 的映像,其代码有毛病。

请选用 24M.img 或 24M_2.img 来测试。

回复

使用道具 举报

117#
发表于 2014-1-8 11:43:57 | 只看该作者
我用的就是24m的呀,
回复

使用道具 举报

118#
 楼主| 发表于 2014-1-8 11:53:26 | 只看该作者
您好像是弄错了,24M 的不可能显示 ACED。

24M 在成功后会进入 GRLDR,如果想看屏幕显示,需要接连不断地按 P 键才行。

另外,提醒一下,虚拟机就用不着再测试了,因为虚拟机总是成功。

当然了,虚拟机测试是第一步,是给您自己 “壮胆” 的,以免自己不放心。

虚拟机测试之后,就可以把 U 盘插在真实机上测试了。

制作 U 盘时,最危险。危险就在于,弄错盘符,误把自己的本地硬盘给做掉了。

请再三核实,一定不要阴差阳错地写入到自己的本地硬盘。

回复

使用道具 举报

119#
发表于 2014-1-8 23:13:05 来自手机 | 只看该作者
看来即将发布1.0啦

点评

按以前grub4dos的做法,估计是0.1版本。  发表于 2014-1-9 15:18
回复

使用道具 举报

120#
发表于 2014-1-9 10:32:25 | 只看该作者
不点大师,重振雄风
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 07:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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