无忧启动论坛

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

[讨论] 关于grub4dos直接从PBR启动的疑惑

[复制链接]
跳转到指定楼层
1#
发表于 2012-7-29 20:43:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
关于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 编辑 ]
6#
发表于 2012-7-30 11:36:53 | 只看该作者
曲径通幽,自己选择合适的启动方法。多元化的世界本身就是这样的。启动到 syslinux 之后,还可以进入 grub4dos。有时候,用户不想追究技术原因(比如由于没有时间或者没有兴趣),那就让那些失败与成功的情况都保持其本来面目好了。用户选择自己习惯的、喜欢的方式或者会用的方式,这是自由的,也是应该的。
回复

使用道具 举报

5#
 楼主| 发表于 2012-7-30 10:48:11 | 只看该作者
原来可以这样子去掉mbr。
感觉syslinux的pbr启动成功率挺高的。
回复

使用道具 举报

4#
发表于 2012-7-30 09:17:56 | 只看该作者
有了MBR也可以去掉.没有MBR也可以用分区软件做上.
对于一个U盘来说,用DISKGEN就可以创建分区,有了分区自然也就有了MBR. 想恢复没有MBR的样子,可以用DISKGEN删掉所有的分区,然后,插拔一下U盘,用WINDOWS自身的格式化功能格一下U盘就OK了. 用WINHEX清空U盘的第一扇区也可以,清空完以后,用WINDOWS格一下U盘就可以变成没有MBR的结构了.

syslinux 的启动有些复杂,在安装SYSLINUX的时候,安装程序会根据目标U盘分区信息进行一些设置,BOOTICE的作者对此应该是很熟悉的. 不同U盘或同一U盘不同分区大小下面的LDLINUX.SYS文件都是不相同的,在安装的时候就进行了改动.
回复

使用道具 举报

3#
 楼主| 发表于 2012-7-30 06:48:08 | 只看该作者
那个没有mbr的优盘已经还给别人了,而且也有了MBR没法测试,下次碰到类似的情况,我尝试下比对下bootice和bootlace引导代码的区别,同时比对下syslinux和grub4dos引导代码的boot sector。

[ 本帖最后由 liuzhaoyzz 于 2012-7-30 08:52 编辑 ]
回复

使用道具 举报

2#
发表于 2012-7-30 00:43:59 | 只看该作者
有如下可能性:

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 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 14:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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