中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 03:51
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 用WinImage制作GRUB能识别的软盘格式.xls
楼 主 用WinImage制作GRUB能识别的软盘格式.xls 发表于 2008-09-17 21:13 ·  中国 四川 资阳 联通
初级用户
积分 20
发帖 9
注册 2007-01-14 13:15
UID 76504
性别 男
状态 离线
用EXCEL计算的GRUB能识别的软盘格式
链接地址:
http://upload.cn-dos.net/img/758.zip
[已使用 Gemini 解答]
Gemini 解答

在 2000 年代中后期的中文 DOS 与多系统启动环境下,使用 GRUB4DOS 引导集成多种工具的软盘镜像(IMG/IMA)是主流技术方案。该帖中提到的“用 Excel 计算 GRUB 能识别的软盘格式”,其核心技术背景在于软盘几何参数(Geometry)的自动识别机制与 FAT12 文件系统的结构限制

1. 技术背景:软盘几何参数与 BIOS 中断

在传统的 PC 架构中,操作系统通过 BIOS 中断(INT 13h)访问磁盘。软盘的寻址依赖于磁柱(Cylinder)、磁头(Head)和扇区(Sector)三个参数。

  • 标准格式:如 1.44MB(80/2/18)和 2.88MB(80/2/36)。
  • 非标格式:为了容纳更多工具(如 MaxDOS 或系统维护工具),技术人员常制作超大容量镜像(如 4MB、8MB 甚至更高)。

2. GRUB4DOS 的镜像映射逻辑

当使用 GRUB4DOS 的 map --mem 命令加载软盘镜像时,GRUB 需要为该镜像模拟一个虚拟的 BIOS 设备(通常是 (fd0))。

  • 自动识别依赖:如果镜像文件的大小不符合预定义的标准尺寸,GRUB 会根据文件总字节数反推 C/H/S 参数。
  • 计算公式总扇区数 = 磁柱数 × 磁头数 × 每磁道扇区数
  • 误判后果:如果镜像的总大小无法被预设的扇区数(通常是 18 或 36)整除,或者反推出的参数与 DOS 启动文件(IO.SYS)及 FAT 分区表中的 BPB(BIOS Parameter Block)信息不一致,就会导致“Disk Error”、“Invalid system disk”或读取文件偏移错误。

3. Excel 工具解决的核心问题

该帖子提供的 Excel 计算工具,实际上是用于反向工程计算出**“合法”的非标镜像大小**。

  • 对齐参数:确保 WinImage 在制作“Custom size”镜像时,输入的扇区总数能够精确对应一个逻辑上的 C/H/S 组合。
  • 兼容性保障:通过预先计算,确保生成的镜像在被 GRUB 加载后,模拟出的几何结构能被 DOS 内核正确识别。例如,若要制作一个约 4MB 的镜像,必须保证其扇区数能被 2(磁头)和 18 或 36(扇区)整除,从而得到一个整数的磁柱数。

4. 关于 MaxDOS 启动失败的补充解释

跟帖中提到的 MaxDOS 无法启动,通常是因为其使用的镜像超出了 2.88MB 的标准软盘限制。

  • BPB 冲突:当镜像大小不规范时,GRUB 模拟出的 (fd0) 几何参数与镜像内部 FAT 表记录的物理参数不匹配。
  • INT 13h 限制:DOS 的 IO.SYS 在启动初期高度依赖 BIOS 报告的扇区数。如果 Excel 计算不准确或 WinImage 没按计算结果设置,IO.SYS 将无法在内存中正确定位数据区,导致启动中断。

5. 现代替代与演进

随着技术发展,此类“几何参数对齐”的需求在后期逐渐被以下方案取代:

  • 硬盘镜像模拟:对于大于 2.88MB 的需求,后期倾向于将镜像制作成硬盘格式(带分区表,map 为 (hd0)),因为硬盘模式对几何参数的敏感度低于软盘模式。
  • --chs 参数强制指定:在 GRUB4DOS 命令中直接使用 --chs-sectors=... 手动定义参数,而不依赖镜像大小自动计算。

该工具在 2008 年前后是解决“非标超大软盘镜像”启动问题的关键辅助手段,解决了当时 WinImage 自定义尺寸与 GRUB 自动识别算法之间的适配问题。

2 发表于 2010-11-05 11:30 ·  中国 天津 电信
初级用户
积分 32
发帖 16
注册 2007-11-19 18:11
UID 103152
性别 男
状态 离线
已经下载了,回去制作一个,难怪我的maxdos不能启动呢
3 发表于 2026-06-05 16:04 ·  中国 重庆 电信
新手上路
积分 4
发帖 2
注册 2026-06-04 10:06
UID 186085
性别 男
状态 离线
学习一下
论坛跳转: