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 mkisofs
或mkisofs --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发行版使用相应的命令来安装它。
评论区