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

[发布] grldr单扇区引导代码

 荐  火 [复制链接]
发表于 2026-9-28 16:35:45 | 显示全部楼层
太好了,成功启动

好消息。
这个扇区尺寸不需要太精确,稍微大一些也行,只要不覆盖内存有效信息就行。

使用DiskGenius分区,其中选项“对齐分区到此扇区数的整数倍”,是不是至少要选择“1024扇区”,才能安放grldr?

点评

yaya,你的代码qemu测试没有问题,但实机使用时还是表现为将grldr当作grldr.mbr ,提示 No GRLDR 把扇区数0x277改成0x280,qemu测试也没有问题,实机测试提示 Error loading grldr.mbr  详情 回复 发表于 2026-10-1 11:45
是的,扇区对齐要选择最少1024才能安放grldr (20260528版631个扇区),我看现在多数建议2048了的(1M对齐)  详情 回复 发表于 2026-9-28 16:42
回复

使用道具 举报

发表于 2026-9-28 16:42:30 | 显示全部楼层
本帖最后由 hilsonma 于 2026-9-28 16:53 编辑
2011yaya2007777 发表于 2026-9-28 16:35
好消息。
这个扇区尺寸不需要太精确,稍微大一些也行,只要不覆盖内存有效信息就行。

是的,扇区对齐要选择最少1024才能安放grldr (20260528版631个扇区),我看现在多数建议2048了的(1M对齐)

如果分区前空间不足以安放grldr,可以调整分区,但数据太多时不建议调整,不过gpt盘缩小esp是很容易做到的,mbr盘就麻烦些。
空间不足的话gpt盘可以考虑你原先的引导方案,即扇区代码引导grldr.mbr,只需16个扇区。mbr盘可以直接安装grldr.mbr引导。

顺便说一下,如果发现原来的分区方案没有做到扇区对齐,不需要重新分区,可以使用傲梅分区助手,有修正扇区对齐功能。重大数据要备份,提防意外导致数据丢失(如调整中断电等).
回复

使用道具 举报

发表于 2026-9-28 17:27:15 | 显示全部楼层
是的,扇区对齐要选择最少1024才能安放grldr

知道了,谢谢!
回复

使用道具 举报

发表于 2026-9-28 17:37:15 | 显示全部楼层
学习一下,还没有搞懂。
回复

使用道具 举报

发表于 2026-9-30 16:11:38 | 显示全部楼层
楼主辛苦
回复

使用道具 举报

发表于 2026-10-1 11:45:53 | 显示全部楼层
本帖最后由 hilsonma 于 2026-10-1 11:55 编辑
2011yaya2007777 发表于 2026-9-28 16:35
好消息。
这个扇区尺寸不需要太精确,稍微大一些也行,只要不覆盖内存有效信息就行。

yaya,你的代码qemu测试没有问题,但实机使用时还是表现为将grldr当作grldr.mbr ,提示 No GRLDR
把扇区数0x277改成0x280,qemu测试也没有问题,实机测试提示 Error loading grldr.mbr

看来扇区数还是需要精确
代码引导grldr需要你再次检查修改
回复

使用道具 举报

发表于 2026-10-1 12:41:49 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2026-10-1 12:47 编辑

好的,知道了。
实机启动没有条件,我只能是EFI启动。
你精确地计算一下扇区数,然后加减1,共测试3次看看。麻烦你了。
回复

使用道具 举报

发表于 2026-10-1 12:51:33 来自手机 | 显示全部楼层
我知道怎么回事了。可能实机启动,一次只能加载0x7f扇区。我下午再看看。

点评

pauly的代码里就有个一次读多少扇区的参数,默认就是0x7f 我还在疑惑这个参数与什么有关系,该怎么取值才能最优化  详情 回复 发表于 2026-10-1 14:39
回复

使用道具 举报

发表于 2026-10-1 14:39:18 | 显示全部楼层
本帖最后由 hilsonma 于 2026-10-1 15:47 编辑
2011yaya2007777 发表于 2026-10-1 12:51
我知道怎么回事了。可能实机启动,一次只能加载0x7f扇区。我下午再看看。

pauly的代码里就有个一次读多少扇区的参数,默认就是0x7f
我还在疑惑这个参数与什么有关系,该怎么取值才能最优化

===============================
我也试过加减扇区数了,qemu没有影响,只改成0x275时就进入命令行(0x275刚好就是到内置菜单开头),改成0x274时grldr就读不完整了,就当成grldr.mbr使用了,提示跟实机测试一样。
而不管怎么改,实机测试都是当成grldr.mbr,应该就是一次只能读有限的扇区数,所以读不到完整的grldr,就当成grldr.mbr使用
估计你的代码要添加多次读取,直至把grldr加载完整。比如一次读0x7f,读5次就是0x27b

===============================
我也大概想到pauly设置那个一次读取多少扇区的参数的意义了
比如文件大小是636个扇区,一次读127个扇区,5次读不完,6次又读太多了
127*5=635
127*6=762
这时将一次读的扇区数设置成106个扇区,就刚刚好了
106*6=636

纯粹瞎想
不知道真实情形是不是这样,还是代码里可以让最后一次读取是读取剩余数,而不是读取每次读的扇区数,这就要看代码里是怎么写的了。
回复

使用道具 举报

发表于 2026-10-1 14:59:09 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-1 16:43:34 | 显示全部楼层

感谢分享
回复

使用道具 举报

发表于 2026-10-1 21:05:27 | 显示全部楼层
试一试这个。
0x1b0处的4字节是文件起始扇区,0x1b4处的2字节是文件的扇区数。要使用16进制数。

gpt.bin.txt

512 Bytes, 下载次数: 7, 下载积分: 无忧币 -2

点评

实机测试成功启动 扇区数改成 0x280 也成功启动。 即你原来说的扇区尺寸不需要太精确,稍微大一些也行,只要不覆盖内存有效信息就行。  详情 回复 发表于 2026-10-2 01:43
回复

使用道具 举报

发表于 2026-10-2 01:43:38 | 显示全部楼层
2011yaya2007777 发表于 2026-10-1 21:05
试一试这个。
0x1b0处的4字节是文件起始扇区,0x1b4处的2字节是文件的扇区数。要使用16进制数。

实机测试成功启动

扇区数改成 0x280 也成功启动。
即你原来说的扇区尺寸不需要太精确,稍微大一些也行,只要不覆盖内存有效信息就行。

已更新30楼附件批处理。
回复

使用道具 举报

发表于 2026-10-27 08:25:04 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2026-10-27 10:14:24 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-28 17:44:24 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-10-29 19:45:37 | 显示全部楼层
这个收藏,感谢几位大佬的探讨
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
感谢分享。
回复

使用道具 举报

发表于 昨天 17:45 | 显示全部楼层
技术贴 顶起
回复

使用道具 举报

发表于 昨天 20:21 | 显示全部楼层
学习学习,谢谢分享
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-15 12:38

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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