侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux mkisofs命令详解:如何创建ISO镜像文件(附实例教程和注意事项)

Linux mkisofs命令介绍

mkisofs是一个用于创建ISO 9660文件系统的命令行工具,通常用于在Linux和UNIX操作系统中创建CD或DVD镜像。它的全称是make ISO file system,有时也被称为genisoimage。这个工具是cdrkit软件包的一部分,是开源软件,允许用户修改和分发它。

mkisofs可以生成混合的ISO 9660/JOLIET/HFS/UDF文件系统,支持Rock Ridge属性,可以在UNIX主机上提供更多的文件描述信息,如长文件名,用户ID/组ID,POSIX权限,符号链接,硬链接,块和字符设备。如果指定了Joliet,HFS或UDF混合命令行选项,mkisofs将为Joliet,HFS或UDF创建额外的文件系统元数据。在这种情况下,文件内容指向媒体上的相同数据块。如果没有给出Joliet,HFS或UDF混合命令行选项,它将生成纯ISO 9660文件系统。

mkisofs可以生成真正的(或共享的)HFS混合文件系统。当从Macintosh访问时,相同的文件被视为HFS文件,当从其他机器访问时,被视为ISO 9660文件。HFS代表分层文件系统,是Macintosh计算机使用的本地文件系统。作为一种替代方案,mkisofs可以为每个文件生成ISO 9660或UDF的Apple扩展。这些扩展为每个文件提供CREATOR,TYPE和某些Finder标志,当从Macintosh访问时。

mkisofs对给定的目录树进行快照,生成一个二进制镜像,当写入一个块设备时,将对应于ISO 9660或HFS/UDF文件系统。写入ISO 9660文件系统的每个文件必须具有8.3格式的文件名(8个字符,句点,3个字符,全部大写),即使使用了Rock Ridge属性。这个文件名用于那些不能使用Rock Ridge扩展的系统(如MS-DOS),并且每个目录中的每个文件名必须与同一目录中的其他文件名不同。mkisofs通常尝试通过将UNIX文件名强制转换为大写并根据需要截断来形成正确的名称,但是当有截断的名称不都是唯一的情况时,这通常会产生不满意的结果。mkisofs为每个文件名分配权重,如果发现两个名称在其他方面相同,那么权重较低的名称将被重命名为具有3位数字作为扩展名的名称(其中数字保证是唯一的)。

当使用各种HFS选项时,mkisofs将尝试识别以多种Apple/Unix文件格式存储的文件,并将数据和资源分叉以及任何相关的Finder信息复制。有关mkisofs支持的格式的更多信息,请参见下面的HFS MACINTOSH FILE FORMATS部分。

注意,mkisofs不是设计用来直接与写入器通信的。

Linux mkisofs命令适用的Linux版本

mkisofs命令适用于大多数Linux发行版,如Ubuntu,Debian,Fedora,CentOS,Arch Linux等。如果你的系统没有安装mkisofs,你可以使用以下命令来安装它:

  • Ubuntu/Debian: sudo apt-get install mkisofs
  • Fedora/CentOS 7: sudo yum install mkisofs
  • CentOS 8: sudo dnf install mkisofs
  • Arch Linux: sudo pacman -S mkisofs

Linux mkisofs命令的基本语法

mkisofs命令的基本语法如下:

mkisofs [选项] [-o 文件名] 路径 [路径 ...]

其中:

  • 选项:指定创建ISO镜像的各种参数,如文件系统类型,卷标,排除文件等。
  • -o 文件名:指定输出的ISO镜像文件的名称和位置。
  • 路径:指定要包含在ISO镜像中的目录或文件的路径,可以有多个。

Linux mkisofs命令的常用选项说明

mkisofs命令有很多选项,可以使用man mkisofsmkisofs --help来查看完整的选项列表。这里列出一些常用的选项:

选项说明
-A 应用程序ID指定应用程序ID,即用于标识ISO镜像的字符串。
-b 引导镜像指定一个引导镜像文件,用于创建可引导的ISO镜像。
-c 引导目录指定一个引导目录,用于存储引导信息。
-D允许深度不受限制的目录结构。
-f跟随符号链接,将其指向的文件或目录包含在ISO镜像中。
-J生成Joliet文件系统扩展,用于支持Windows系统的长文件名。
-l允许ISO 9660文件名超过8个字符,最多31个字符。
-L允许ISO 9660文件名以点开头。
-N禁止使用ISO 9660版本2扩展,即不允许文件名超过8个字符。
-o 文件名指定输出的ISO镜像文件的名称和位置。
-R生成Rock Ridge文件系统扩展,用于支持UNIX系统的文件属性。
-T生成TRANS.TBL文件,用于记录每个目录中的文件名映射。
-V 卷标指定ISO镜像的卷标,即用于标识ISO镜像的名称。
-v显示详细的信息,用于调试。
-x 路径排除指定的文件或目录,不包含在ISO镜像中。

Linux mkisofs命令的实例

下面是一些使用mkisofs命令的实例:

  • 创建一个简单的ISO镜像,包含当前目录下的所有文件和子目录:
[linux@bashcommandnotfound.cn ~]$ mkisofs -o myiso.iso .
  • 创建一个带有卷标和应用程序ID的ISO镜像,包含/home/user/data目录下的所有文件和子目录:
[linux@bashcommandnotfound.cn ~]$ mkisofs -o data.iso -V DATA -A "My Data Backup" /home/user/data
  • 创建一个带有Joliet和Rock Ridge扩展的ISO镜像,包含/home/user/music目录下的所有文件和子目录,但排除以.mp3结尾的文件:
[linux@bashcommandnotfound.cn ~]$ mkisofs -o music.iso -J -R -x "*.mp3" /home/user/music
  • 创建一个可引导的ISO镜像,包含/boot目录下的所有文件和子目录,使用/boot/grub/stage2_eltorito作为引导镜像,使用/boot/boot.catalog作为引导目录:
[linux@bashcommandnotfound.cn ~]$ mkisofs -o boot.iso -b grub/stage2_eltorito -c boot.catalog /boot
  • 创建一个HFS混合文件系统的ISO镜像,包含/home/user/mac目录下的所有文件和子目录,使用-auto以自动检测文件格式:
[linux@bashcommandnotfound.cn ~]$ mkisofs -o mac.iso -hfs -auto /home/user/mac

Linux mkisofs命令的注意事项

  • mkisofs命令不是设计用来直接与写入器通信的,如果要将ISO镜像写入CD或DVD,需要使用其他工具,如cdrecord或wodim。
  • mkisofs命令不会检查输出的ISO镜像是否超过了CD或DVD的容量,如果超过了,可能会导致写入失败或数据损坏。
  • mkisofs命令不会自动压缩或加密输出的ISO镜像,如果需要这些功能,需要使用其他工具,如gzip或openssl。
  • mkisofs命令不会自动验证输出的ISO镜像是否符合ISO 9660标准,如果需要这个功能,可以使用isovfy工具。
  • 如果在执行mkisofs命令时遇到bash: mkisofs: command not found的错误,说明你的系统没有安装mkisofs,你可以根据你的Linux发行版使用相应的命令来安装它。
0

评论区