无忧启动论坛

标题: 关于grub4dos直接从PBR启动的疑惑 [打印本页]

作者: liuzhaoyzz    时间: 2012-7-29 20:43
标题: 关于grub4dos直接从PBR启动的疑惑
关于grub4dos直接从PBR启动的疑惑
当grub4dos从带有MBR(主引导记录)和DPT(硬盘分区表)的硬盘或者优盘启动时,grldr.mbr全盘搜索grldr并启动,启动成功率也很高,这没有疑问。
当grub4dos从没有MBR和DPT的类似大软盘格式的优盘、tf卡、sd卡等上启动时,如果用bootice把grub4dos.pbr引导代码写入pbr,grub4dos往往不能直接从pbr直接启动,这时候如果把dos或者syslinux的引导代码写入pbr,能够启动,启动后可以引导grub.exe或者grldr,就能启动grub4dos了。这个情况我只碰到过几次,有一次把一个手机用数据线连接到电脑,安装syslinux到pbr可以启动,安装grub4dos到pbr启动不了,可悲的是手机重启后直接无法启动,后来去刷机才行,所以也不敢尝试了。还有一次,碰到一个优盘没有MBR,用bootice把grub4dos安装到pbr,结果grub4dos不能启动,光标一直在屏幕左上角闪个不停,用diskgenius重新分区后有了MBR,在MBR安装grub4dos成功启动。这些情况很少见,所以也没有充分的证据来说明什么问题,不知道其他网友是否碰到类似问题。
对于没有MBR的这种情况,往往是一些特殊的usb设备,例如mp3,tf卡,sd卡,手机等等,如果用fbinst或者diskgenius重新分区,可能会导致手机、mp3不能正常工作,不点在这个帖子http://bbs.wuyou.net/forum.php?m ... p;page=1#pid2360000中,说明了原因。但是同样是作为第一引导器,为什么syslinux可以从pbr正常引导,而gurb4dos不能从pbr正常引导?grub4dos的pbr引导代码有没有可以改进的地方,让grub4dos.pbr作为第一引导器直接引导grub4dos?比如grub4dos.pbr不使用chs模式,而是象wee那样用lba模式是否可行?我查阅了一些资料,发现硬盘pbr和软盘pbr格式的bpb似乎有区别(不是很确定),那么bootice对于处理这两种情况的pbr写入是否有需要改进的地方?
欢迎大家讨论。

[ 本帖最后由 liuzhaoyzz 于 2012-7-29 22:48 编辑 ]
作者: 不点    时间: 2012-7-30 00:43
有如下可能性:

1、bootice 的安装有毛病,BPB 中的 H 和 S 值未能正确设置。用 grub4dos 自己的 bootlace 比较可靠,加上适当的参数,尤其是与 BPB 有关的参数。

2、BIOS 以某种方式攻击 grub4dos,导致 grub4dos 不能以这种方式启动。


grub4dos 的 boot sector 代码锤炼了很多年,bug 是很难存在的(多年来也没人报告 bug 了)。因此,除了上述两点以外,我并不列举第三种可能性(虽然严格来讲当然也有可能存在未知 bug)。

你可以把失败时的 boot sector 抓取下来,与 syslinux 成功启动的 boot sector 相比,看看有没有不同。如果 BPB 参数不同,那就说明是安装 grub4dos 的程序的毛病。如果 BPB 参数完全一样,那就说明是 grub4dos 自己的 bug(或者是被 BIOS 攻击了)。这很容易确定,只要你稍稍费一点时间便可彻底弄清楚。

补充一点:grub4dos 的 boot record 代码自动判断和使用 LBA 模式。只有当 LBA 不被 BIOS 支持时,才使用 CHS 模式。这锤炼了很多年,应该不会有 bug 的。

[ 本帖最后由 不点 于 2012-7-30 00:47 编辑 ]
作者: liuzhaoyzz    时间: 2012-7-30 06:48
那个没有mbr的优盘已经还给别人了,而且也有了MBR没法测试,下次碰到类似的情况,我尝试下比对下bootice和bootlace引导代码的区别,同时比对下syslinux和grub4dos引导代码的boot sector。

[ 本帖最后由 liuzhaoyzz 于 2012-7-30 08:52 编辑 ]
作者: sgw888    时间: 2012-7-30 09:17
有了MBR也可以去掉.没有MBR也可以用分区软件做上.
对于一个U盘来说,用DISKGEN就可以创建分区,有了分区自然也就有了MBR. 想恢复没有MBR的样子,可以用DISKGEN删掉所有的分区,然后,插拔一下U盘,用WINDOWS自身的格式化功能格一下U盘就OK了. 用WINHEX清空U盘的第一扇区也可以,清空完以后,用WINDOWS格一下U盘就可以变成没有MBR的结构了.

syslinux 的启动有些复杂,在安装SYSLINUX的时候,安装程序会根据目标U盘分区信息进行一些设置,BOOTICE的作者对此应该是很熟悉的. 不同U盘或同一U盘不同分区大小下面的LDLINUX.SYS文件都是不相同的,在安装的时候就进行了改动.
作者: liuzhaoyzz    时间: 2012-7-30 10:48
原来可以这样子去掉mbr。
感觉syslinux的pbr启动成功率挺高的。
作者: 不点    时间: 2012-7-30 11:36
曲径通幽,自己选择合适的启动方法。多元化的世界本身就是这样的。启动到 syslinux 之后,还可以进入 grub4dos。有时候,用户不想追究技术原因(比如由于没有时间或者没有兴趣),那就让那些失败与成功的情况都保持其本来面目好了。用户选择自己习惯的、喜欢的方式或者会用的方式,这是自由的,也是应该的。




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