无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
广告位招租系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: 窄口牛

我的硬盘gpt格式

  [复制链接]
发表于 2019-4-6 18:00:37 | 显示全部楼层
继续瞎猜——

那个区域是放分区表的地方?是不是不允许放代码?是不是因此之故,yaya 放置在那里的代码就被强制清零了?

也许是主板给它清零了,也许是 Windows 下的某个工具(例如 dg 之类的)给它清零了?
回复

使用道具 举报

发表于 2019-4-6 18:05:34 | 显示全部楼层
我就是想知道,楼主安装成功 grldr_mbr 之后,到出现下面这个提示之前,还做过什么?可以说的详细一些。

QQ五笔截图未命名.jpg
回复

使用道具 举报

发表于 2019-4-6 18:25:04 | 显示全部楼层
按照 frg521 所说,分区表的空间是不允许写入代码的。有可能是被主板清零的。

yaya 有没有更新校验和?如果没更新,我猜肯定是不行的。即使更新了校验和,主板也不一定允许尾部存放代码。分区表的区域,是不可以存放代码的,正如 MBR 的分区表,也是不允许存放代码(空闲的分区表,也要保持为 00 字节,不允许用作别的用途)。

就算是后来重启动以后由 Windows 清零的,那也没办法。不管是主板,还是 Windows,都算是必须遵守的规范。作为第三方的工具,必须适应这些规范才行。

我猜应该是主板把它清零的吧?主板发现 GPT 校验和不对,判定为非法,于是从备份的 GPT 那里复制过来扇区,覆盖掉了当前的 GPT 扇区。谢谢 frg521 的介绍,让我能凭空发表这么多文字。
回复

使用道具 举报

发表于 2019-4-6 18:26:48 | 显示全部楼层
gpt分区表里面写入数据是非法的,因为有校验和

没注意分区表有校验和。看来代码只能安装到间隙里。楼主费事得把间隙调整为0了。

选择对齐为xx,结果必须是大于或等于50也是0x32,才能安装下代码(代码16扇区)。

点评

人多力量大,找到原因就好。 让分区对齐为 32 扇区(而不是对齐为 16 扇区),那么,34 扇区对齐为下一个 32 的整数倍,那就是 64 了,这就满足 yaya 所要求的 “至少 50 扇区”的条件了。  详情 回复 发表于 2019-4-6 18:37
回复

使用道具 举报

发表于 2019-4-6 18:37:39 | 显示全部楼层
2011yaya2007777 发表于 2019-4-6 18:26
没注意分区表有校验和。看来代码只能安装到间隙里。楼主费事得把间隙调整为0了。

选择对齐为xx,结果 ...

人多力量大,找到原因就好。

让分区对齐为 32 扇区(而不是对齐为 16 扇区),那么,34 扇区对齐为下一个 32 的整数倍,那就是 64 了,这就满足 yaya 所要求的 “至少 50 扇区”的条件了。
回复

使用道具 举报

发表于 2019-4-6 19:00:36 | 显示全部楼层

如果 GPT 占用 34 扇区,那么,把它对齐为 32 扇区,就是 64 扇区。也就是说,如果让第一个分区起始于 64 扇区,那么,yaya 的 16 扇区代码,就能够放在 34 至 64 之间的空闲空间上了。

要么干脆就让第一扇区起始于 2048 扇区——多省事啊,就不会出问题了。

yaya 前面也提到了,在第一扇区也放置有一些引导代码,用来加载并跳转到这 16 扇区的代码。
回复

使用道具 举报

发表于 2019-4-6 21:31:39 | 显示全部楼层
分区表头 (LBA 1),前 92 字节有 CRC32 校验。
分区表项 (LBA 2–33),没有  CRC32 校验。

主板及 windows 没有自动纠正分区表项。一般有错的时候要纠正,也会提示询问的。

在 DiskGenius,当选择 gpd 格式的磁盘时,提示 “DUID主分区表数据CRC错误”,点“更正”,清除 0x4000 之后代码。

点评

根据你的描述,如果我理解正确的话,你是说,diskgen 会纠正分区表的错误,也就是说,把分区表尾部两个扇区的 grldr.mbr 代码清除掉了。 diskgen 这么做,我想,大概不会是毫无根据的。它可能是按照规范去做的。  详情 回复 发表于 2019-4-7 00:43
回复

使用道具 举报

发表于 2019-4-7 00:43:33 | 显示全部楼层
2011yaya2007777 发表于 2019-4-6 21:31
分区表头 (LBA 1),前 92 字节有 CRC32 校验。
分区表项 (LBA 2–33),没有  CRC32 校验。

根据你的描述,如果我理解正确的话,你是说,diskgen 会纠正分区表的错误,也就是说,把分区表尾部两个扇区的 grldr.mbr 代码清除掉了。

diskgen 这么做,我想,大概不会是毫无根据的。它可能是按照规范去做的。也就是说,这里很可能有一个 CRC 校验,来校验分区表。

你提到主板没有自动纠正分区表项,我猜你很可能是说你遇到的主板不纠正。从严谨的逻辑来考虑,那么别人的主板,倒是有可能自动纠正。

这个 CRC 分区表校验如果确实是个规范的话,那就可能被各种软件纠正,只要那些软件严格遵从规范。
回复

使用道具 举报

发表于 2019-4-7 00:59:02 | 显示全部楼层
没有在windows下写入GPT或MBR的程序吗? 只编写 linux 用的 工具?

bootlace 工具只能在实模式的 DOS 下以及保护模式的 Linux 下,才能写入设备,不支持在 Windows 下写入设备。

由于 DOS 已经不可靠了(原因是 BIOS 不可靠了,这是另外一个很长很长的话题,此处略去),所以只能在 Linux 下操作。

话说这年月,进入 Linux 也并不是很奇葩的一件事,用一个 U 盘即可进入 Linux 来执行必要的操作。

回复

使用道具 举报

发表于 2019-4-7 06:59:21 | 显示全部楼层

我多年没参与开发了,手头没有现成的扇区数据用来安装。
在我开发维护期间,我在 readme 文件里面详细描述了如何手动把 GRLDR.MBR 写入硬盘。不过,那时只支持 mbr 格式,不支持 GPT 格式。

yaya 让 bootlace 以及 GRLDR.mbr 支持gpt格式,非常好。我猜它的结构是,第一扇区有固定不变的代码以及一个可变的起始扇区号,用来指示 后续的 16扇区在哪里。你可以看看 readme是否已经有说明了。如果readme没有提到 gpt,那就是没有更新 readme。
写入gpt与写入 mbr 是不同的。mbr 格式简单,而 gpt 复杂一些。
让 yaya 帮你吧。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-7-22 20:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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