菜鸟科技网

mkisofs命令如何创建ISO镜像文件?

什么是 mkisofs

mkisofs (Make ISO File System) 是一个经典的命令行工具,用于根据指定的目录结构创建符合 ISO 9660 或 Rock Ridge 扩展标准的 CD/DVD 映像文件(通常为 .iso 文件)。

mkisofs命令如何创建ISO镜像文件?-图1
(图片来源网络,侵删)

重要提示mkisofs 已经被一个更现代、功能更强大的工具 genisoimage 所取代,在大多数现代 Linux 发行版(如 Ubuntu, Debian, CentOS, Fedora)中,mkisofs 实际上只是 genisoimage 的一个符号链接或软链接,它们的用法和选项基本相同,虽然 mkisofs 这个名字仍然被广泛使用,但背后执行的是 genisoimage 程序。

主要用途

  1. 制作数据光盘:将你的文件和文件夹制作成一个标准的 ISO 镜像文件,以便刻录到 CD 或 DVD 上。
  2. 制作启动盘:结合引导文件(如 isolinuxeltorito 格式的引导映像),可以创建可启动的安装盘或恢复盘(许多 Linux 发行版的安装 ISO 就是这样制作的)。
  3. 归档和分发:将一组文件打包成一个单一的、跨平台兼容的文件,方便通过网络分发。

基本语法

mkisofs [选项] -o <输出文件名.iso> <源目录>
  • [选项]:各种控制镜像行为的参数。
  • -o <输出文件名.iso>:指定生成的 ISO 文件的名称,这是必需的选项。
  • <源目录>:包含你想要打包到 ISO 中的所有文件的根目录。

常用选项详解

以下是一些最常用和最重要的选项:

输出和基本选项

  • -o, --output <filename>:指定输出的 ISO 文件名。

    mkisofs -o my_files.iso /path/to/my/files
  • -v, --verbose:显示详细的创建过程,对于调试问题非常有用。

    mkisofs命令如何创建ISO镜像文件?-图2
    (图片来源网络,侵删)
    mkisofs -v -o my_files.iso /path/to/my/files
  • -r, --rock强烈推荐使用,启用 Rock Ridge 扩展,这允许:

    • 保留 Unix/Linux 风格的文件所有者和权限信息。
    • 支持长文件名(最多 255 个字符)。
    • 支持符号链接。
    • 在 Unix、Linux 和 macOS 系统上,挂载此 ISO 时能正确显示文件属性。
  • -J, --joliet强烈推荐使用,启用 Joliet 扩展,这允许:

    • 支持长文件名(最多 64 个字符,路径最多 120 个字符)。
    • 确保 Windows 系统能正确显示所有文件名,即使文件名包含非 ASCII 字符(如中文、日文等)。

    最佳实践:通常将 -r-J 一起使用,以确保在 Windows、macOS 和 Linux 上都有最佳兼容性。

    mkisofs -r -J -o my_files.iso /path/to/my/files

启动盘选项

  • -b, --boot-load-size <number>:指定引导映像的大小(以扇区为单位)。
  • -b, --boot-info-table:将引导信息写入映像的引导扇区。
  • -no-emul-boot:指示加载器不模拟软盘。
  • -boot-load-segment <number>:指定引导加载程序的加载段。
  • -eltorito-boot <boot_image>:指定 El Torito 引导映像文件(isolinux/isolinux.binboot/grub/grub2.img)。
  • -eltorito-catalog <catalog_file>:指定引导目录的文件名(通常是 boot.cat)。

制作启动盘的示例: 假设你有一个引导目录 /tmp/boot,里面包含 isolinux.binisolinux.cfg

mkisofs命令如何创建ISO镜像文件?-图3
(图片来源网络,侵删)
mkisofs -r -J -o install.iso \
    -b isolinux/isolinux.bin \
    -c boot.cat \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    /tmp/boot /path/to/installation/files

高级和特殊选项

  • -V, --volume-id <id>:设置卷标(光盘的名称),这个名称在挂载后可以看到。

    mkisofs -V "My Backup Disc" -r -J -o backup.iso /path/to/backup
  • -A, --application-id <id>:设置应用程序 ID。

  • -publisher <publisher>:设置发布者信息。

  • -p, --preparer <preparer>:设置准备者信息。

  • -iso-level <level>:指定 ISO 9660 的级别。

    • 1:最严格的限制,文件名必须是大写字母、数字和下划线,且不超过 8.3 格式(8个字符主名,3个字符扩展名),目录深度不超过 8 层。
    • 2:放宽了对文件名的长度限制,但其他限制依然存在。
    • 3:最常用的级别,没有文件名长度限制,但文件名仍然必须是大写字母、数字和下划线。这是 Windows 兼容性最好的级别。
    • 4:允许小写字母,但兼容性会下降。

    注意:如果你使用了 -r-J 选项,这个设置可能会被覆盖或忽略,因为 Rock Ridge 和 Joliet 扩展本身就提供了更灵活的命名规则。

  • -graft-points:允许你将 ISO 中的任意路径挂载到源文件系统上的任意位置,这对于创建非标准目录结构的 ISO 非常有用。

    # 将 /home/user/docs 挂载到 ISO 根目录的 "Documents"
    # 将 /etc/passwd 挂载到 ISO 根目录的 "system/passwd"
    mkisofs -o custom.iso -graft-points \
        "/Documents=/home/user/docs" \
        "/system/passwd=/etc/passwd"

实际示例

示例 1:创建一个简单的数据备份 ISO

假设你想将 /home/user/documents 目录备份成一个名为 backup_docs.iso 的文件,并确保在 Windows 和 Mac 上都能正常工作。

# 进入你的家目录
cd ~
# 创建 ISO
mkisofs -r -J -V "My Documents Backup" -o backup_docs.iso documents/

示例 2:创建一个带有启动信息的安装 ISO

这是一个更复杂的例子,模拟创建一个 Linux 安装盘。

# 假设你的安装文件结构如下:
# /tmp/install/
# ├── isolinux/
# │   ├── isolinux.bin
# │   ├── isolinux.cfg
# │   └── initrd.img
# └── packages/
#     ├── package1.rpm
#     └── package2.deb
mkisofs -r -J -V "My Linux Installer" \
    -o install.iso \
    -b isolinux/isolinux.bin \
    -c boot.cat \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    /tmp/install

重要提示和常见问题

  1. mkisofs vs. genisoimage:如前所述,它们本质上是同一个东西,如果你遇到 "command not found",你可能需要安装 genisoimage 包。

    • 在 Debian/Ubuntu 上:sudo apt-get install genisoimage
    • 在 CentOS/RHEL/Fedora 上:sudo yum install genisoimagesudo dnf install genisoimage
  2. xorriso:对于新的项目,特别是需要创建 UEFI 启动盘时,推荐使用更现代的工具 xorriso(它是 libburnia 包的一部分)。xorriso 功能更强大,支持 UEFI 引导,并且是许多现代 Linux 发行版创建官方 ISO 的首选工具。

  3. 空间不足mkisofs 需要在你的硬盘上有足够的空间来临时存放将要生成的 ISO 文件的内容,创建一个 4.7GB 的 DVD ISO,你可能需要超过 4.7GB 的可用空间。

  4. 权限问题:运行 mkisofs 的用户需要有读取源目录中所有文件的权限。

mkisofs (即 genisoimage) 是一个非常强大和灵活的工具,用于创建各种类型的 CD/DVD 映像,对于大多数用户来说,-o, -r, -J, -V 这几个核心选项就足以应对日常需求了,如果你需要制作复杂的启动盘,则需要深入研究 -eltorito-boot 等相关选项。

分享:
扫描分享到社交APP
上一篇
下一篇