news 2026/10/7 9:26:42

如何用 chdman 把 ISO 转成 CHD:ROM 库缩减 40%-60% 的完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 chdman 把 ISO 转成 CHD:ROM 库缩减 40%-60% 的完整教程

如何用 chdman 把 ISO 转成 CHD:ROM 库缩减 40%-60% 的完整教程

【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm

自托管 ROM 库里塞满了光盘镜像,4TB 级存储的容量长期吃紧。用 chdman 把 ISO 转成 CHD、对光盘镜像做 CHD 压缩,整个库的体积可以再压掉约 40%-60%;ROMm 的扫描、播放和管理习惯照旧,不用为此重建流程。

先算一笔账:ISO 为什么虚胖

光盘 ISO 的标称容量远大于实际使用的数据。一张 1.xGB 的镜像里,真正装游戏数据的区域不到一半,其余是未使用的轨道和间隙填充。ZIP、7Z 把整个镜像当成一个大文件整体压缩,空区域一个字节都省不了,读取时还得整包解压。打个比方,光盘 ISO 就像一只塞了半箱空气的行李箱——通用压缩只是连同空气一起压。

CHD 的思路相反:它按光盘的真实布局把数据切成可单独寻址的块,空块直接不存,音频轨走专门编码,每个数据块独立解压。模拟器读某个扇区时只解那一段,不碰整个文件。还有一个利好细节:CHD v5 的文件头内嵌了原始数据的 SHA1 哈希,同一张盘多次压缩后字节不同,ROMm 也能识别为同一款游戏,去重与校验都顺。

装好 chdman 并压出第一张 CHD 🧰

chdman 是 MAME 官方出品的转换工具,各平台都有现成包:

系统安装命令
Ubuntu/Debiansudo apt install mame-tools
Fedora/RHELsudo dnf install mame-tools
Arch Linuxsudo pacman -S mame-tools
macOSbrew install mame
Windows从 MAME 官网下载二进制包并加入 PATH

装完用chdman --version验证可用。挑一张 700MB 量级的 PS1 镜像,两条命令完成首转:

chdman createcd -i game.iso -o game.chd -1 chdman info -i game.chd

第一条完成转换:-i指源镜像,-o指定输出文件,-1是压缩档位,档位含义下一节细说。第二条回读文件头,确认版本与完整性无误。产出的 .chd 丢进 ROMm 对应平台目录,扫描后就会出现在游戏库里。

档位怎么定:-0 还是 -1

两档的区别在于"压得多小"和"压得多快",按场景选即可:

使用场景建议档位预期效果
4GB 级 PS2 单碟、空间优先-1成品落在 1.5GB 量级,省掉一半以上;CPU 满载一阵,建议错峰执行
几十款的日常增量导入-0约省一半体积,几分钟出片,无需值守
上千款的大库批量处理-0吞吐稳定,一遍跑完

多盘游戏逐盘转换:所有 CHD 放进同一个游戏文件夹,文件名保留盘号规律(disc1、disc2 这类命名)。ROMm 会把它们自动归并为一款游戏,网页端按盘号自动选盘,体验与 ISO 时代一致。

大库批量跑与验收

千款级库一条脚本跑完:

find /roms/ps2 -name "*.iso" -print0 | while IFS= read -r -d '' f; do chdman createcd -i "$f" -o "${f%.iso}.chd" -0 done

-print0与read -r -d ''负责兜住带空格的文件名;${f%.iso}.chd把原文件名扩展名替换为 .chd,一一对应。跑完不要急着清理原镜像:先用du -sh对比目录体积前后差,确认省下来的量级对得上;再用chdman info回读哈希,抽样与源文件核对。

出问题先查这三件事

遇到异常别急着删文件,按三步走:

  1. 看文件头:chdman info -i game.chd查看 CHD 版本与内嵌哈希,确认文件本身完好。
  2. 比对哈希:把头部的 SHA1 与源发布给出的原始数据 SHA1 对照,一致即无恙;不一致说明源镜像存疑,先别继续压。
  3. 查兼容性:模拟器加载时闪退或卡死,多半是档位过高或模拟器版本过旧,降-0档重压,或把模拟器升到最新版。

几个常见分支场景:

  • 进度卡 99%:多半源镜像有坏扇区,先chdman fix -i game.chd试修复;不行就换质量更好的源。
  • CHD 比 ISO 还大:源文件本身已被压缩过,解回原始 ISO 再压;--force能强转,但别指望省空间。
  • 多盘换盘失败:CHD 不在同一目录,或文件名没带盘号;同文件夹放齐、保留盘号顺序即可。

单张 PS2 盘从 4GB 量级压到 1.5GB 量级,省四到六成是普遍水平;千款级的库省出来的是数百 GB,块级解压还让读盘比整包更利索。先拿一张单碟 ISO 把第一条createcd命令跑通即可,剩下是重复劳动。部署流程见 README.md,前后端架构细节在 docs/ 目录。

【免费下载链接】rommA beautiful, powerful, self-hosted ROM manager and player.项目地址: https://gitcode.com/GitHub_Trending/rom/romm

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 9:20:08

数字地与模拟地EMC设计:回流路径真相与PCB实战整改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 9:19:47

Allegro 17.4位号重排与OrCAD反标实战:从PCB到原理图同步

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 9:19:12

振动分析中相位测量与故障诊断:从原理到现场实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华