如何用 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/Debian | sudo apt install mame-tools |
| Fedora/RHEL | sudo dnf install mame-tools |
| Arch Linux | sudo pacman -S mame-tools |
| macOS | brew 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回读哈希,抽样与源文件核对。
出问题先查这三件事
遇到异常别急着删文件,按三步走:
- 看文件头:
chdman info -i game.chd查看 CHD 版本与内嵌哈希,确认文件本身完好。 - 比对哈希:把头部的 SHA1 与源发布给出的原始数据 SHA1 对照,一致即无恙;不一致说明源镜像存疑,先别继续压。
- 查兼容性:模拟器加载时闪退或卡死,多半是档位过高或模拟器版本过旧,降
-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),仅供参考