genisoimage

关注
义项:光盘镜像制作工具
genisoimage

genisoimage是用于把目录树转换成 ISO 9660 光盘文件系统镜像的命令行程序,属于 Unix 类系统上的光盘制作工具集 cdrkit。它由 Debian 开发者于 2006 年从 mkisofs 分支而来,改名是为了在许可证争议后与原项目脱钩[1]。该程序支持生成可引导的 El Torito 光盘镜像,以及带 Joliet、Rock Ridge、HFS 等扩展的镜像,生成的文件可再由 wodim 等程序写入 CD 或 DVD 介质。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

genisoimage 是一个命令行程序,作用是把指定目录树的内容打包成一个符合 ISO 9660 标准的文件系统镜像,这个镜像写入块设备后即可作为光盘的卷结构使用[2]。它属于所谓的前期制作(pre-mastering)工具,即在刻录之前先把数据组织成光盘可识别的文件系统。

该程序是 cdrkit 工具集的组成部分,cdrkit 是一组运行在 Unix 类系统上的 CD 与 DVD 制作程序,采用 GNU 通用公共许可证第 2 版发布[1]。名称 genisoimage 是 generate ISO image 的缩写,直接说明了它的用途[1]。

原理

genisoimage 读取用户指定的目录树,为该目录树建立索引与目录记录,输出一个二进制镜像文件,其结构与 ISO 9660 文件系统一致。写盘由另外的程序完成:镜像生成后交给 wodim 之类的刻录程序写入 CD 或 DVD 介质。

ISO 9660 本身对文件名和权限的限制较强,genisoimage 通过附加扩展来弥补:Rock Ridge 扩展用于保留 Unix 文件权限、长文件名和符号链接,Joliet 扩展用于在 Windows 环境下呈现较长的文件名,HFS 支持则面向 Macintosh 文件系统[3]。如果只需要知道镜像会占多大空间,可以用 $\texttt{-print-size}$ 选项在不真正生成镜像的情况下算出体积[4]。

与 tar 等归档工具相比,genisoimage 的行为有一个明显区别:它把指定父目录下的文件与子目录直接放在镜像的根目录下,而不会在外面再套一层以父目录命名的目录[4]。

发展历程

genisoimage 的前身是 mkisofs。mkisofs 最初由 Eric Youngdale 编写,后来由 Jörg Schilling 在 cdrtools 项目中维护,James Pearson 等人也参与过贡献[5]。cdrtools 项目的许可证发生变化后,Debian 开发者以当时最后一份明确以 GPL 发布的 cdrtools 版本 2.01.01a08(2006 年 5 月)为基础建立分支,这一分支被命名为 cdrkit[5]。

在分支建立过程中,Debian 一方认为 cdrtools 中部分代码采用的 CDDL 许可证与 GPL 不兼容,因而无法继续分发原软件;原维护者 Jörg Schilling 则否认存在许可证冲突,并认为这一分支在法律上不可再分发。Red Hat 的法务团队与 Schilling 看法不同,指出他未提供许可证或著作权被侵害的证据[1]。Schilling 还表示 cdrkit 重新引入了早期 cdrtools 中已经修复的缺陷,Debian 开发者则认为这些改动是解决既有问题所必需的[1]。

为与原项目脱钩并减少混淆,cdrkit 中的程序被改名,mkisofs 由此更名为 genisoimage;维护者解释说不建立旧名软链接是希望使用者采用新名称,同时便于 cdrkit 与 cdrtools 在同一系统上共存[6]。cdrkit 由 Joerg Jaspert 担任项目负责人与版本发布管理者,其稳定版本 1.1.11 于 2010 年 10 月 17 日发布[1]。

应用

genisoimage 最常见的用途是制作数据光盘镜像和可引导光盘镜像。它支持生成符合 El Torito 规范的可引导 CD,因此常用于制作系统安装盘、Live 光盘等需要在启动时加载引导程序的介质。

该程序随 cdrkit 一同被多个 Linux 发行版收录,Fedora、Gentoo Linux、Mandriva Linux、Ubuntu 等都在其列[1]。不少图形化刻录软件也把它当作后端调用,包括 GNOME 桌面环境默认的 Brasero、KDE 桌面环境默认的 K3b,以及不依赖特定桌面环境的 X-CD-Roast[1]。

cdrkit 包内还附带了若干处理 ISO 镜像的辅助工具:mkzftree 用于生成内容经过压缩的 ISO 9660 镜像,dirsplit 用于把体积较大的目录内容按预设大小拆分成多张盘,geteltorito 则可以从光盘镜像中提取 El Torito 引导镜像。

局限

genisoimage 长期处于事实上的停止维护状态。Debian 的说明指出,该程序既没有新功能,也不再获得缺陷修复,只有在需要使用其 $\texttt{-udf}$ 或 $\texttt{-hfs}$ 选项时才有首选价值[7]。2025 年 9 月,Debian 缺陷跟踪系统中仍有请求将依赖方从 genisoimage 迁移到 xorriso 的报告,理由同样是该程序多年来实质上无人维护。

由于分支后的代码线长期停滞,一些较新的用法在 genisoimage 上无法实现。例如它不支持创建大于 4 GiB 的 ISO 9660 Version 2 镜像,有项目为此改用其他工具。此外,某些旧选项在新版本中被明确标记为不再支持,使用者会遇到因选项失效而无法构建镜像的情况。

在多数使用场景中,尤其是制作可引导 ISO 9660 文件系统、归档和备份,替代方案是 xorriso;通过 xorriso 的 -as mkisofs 兼容模式可以接管 genisoimage 原有的命令行接口[7]。cdrkit 的维护者曾讨论把源代码拆分成多个独立发布包,并逐步替换掉 libschily 等支持库,但 cdrkit 整体仍停留在 2010 年的版本线上[8][1]。

参见

  • mkisofs —— genisoimage 的前身,两者命令行选项高度兼容。

  • cdrkit —— genisoimage 所属的光盘制作工具集。

  • wodim —— 与 genisoimage 配合使用、负责向光盘写入镜像的程序。

  • xorriso —— 可通过兼容模式替代 genisoimage 的现代镜像制作工具。

  • ISO 9660 —— genisoimage 输出镜像所遵循的文件系统标准。

  • El Torito —— 可引导光盘镜像所依据的规范。

参考资料

  1. cdrkit [引用日期2026-10-14]
  2. genisoimage - Creates an image of an ISO9660 filesystem [引用日期2026-10-14]
  3. mkisofs.1 [引用日期2026-10-14]
  4. Genisoimage [引用日期2026-10-14]
  5. Tree - source-git/cdrkit [引用日期2026-10-14]
  6. debian.net 上的网页 [引用日期2026-10-14]
  7. Change Details [引用日期2026-10-14]
  8. debian.net 上的网页 [引用日期2026-10-14]
词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T18:22:49Z

历史版本

本条目引用的词条
mkisofs cdrkit wodim xorriso ISO 9660 El Torito