Linux基础命令---mkisofs
Posted 一生有你llx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础命令---mkisofs相关的知识,希望对你有一定的参考价值。
mkisofs
mkisofs指令可以创建ISO9660/Joliet/HFS文件系统,现在使用指令genisoimage代替它。genisoImage是一个预掌握程序,用于生成iso 9660/joliet/hfs混合文件系统。
genisoImage能够生成由Rock Ridge交换协议指定的系统使用共享协议记录(SUSP),用于向unix主机进一步描述iso 9660文件系统中的文件,并提供诸如长文件名、UID/GID、POSIX权限、符号链接以及块和字符设备文件等信息。如果指定Joliet或HFS混合命令行选项,genisoImage将创建Joliet或HFS所需的附加文件系统元数据,否则genisoImage将生成纯ISO 9660文件系统。
genisoImage可以生成真正的(或共享的)HFS混合文件系统。这些文件从Macintosh访问时被视为HFS文件,从其他机器访问时被视为ISO 9660文件。HFS代表分层文件系统,是在Macintosh计算机上使用的本机文件系统作为替代,genisoImage可以为每个文件生成对ISO 9660的Apple扩展。当从Macintosh访问时,这些扩展为每个文件提供创建者、类型和某些Finder标志。请参阅下面的HFS Macintosh文件格式部分。
genisoImage获取给定目录树的快照,并生成二进制映像,当写入块设备时,该图像将对应于iso 9660和/或hfs文件系统。
写入iso 9660文件系统的每个文件都必须有一个8.3格式的文件名(最多8个字符.最多3个字符,全部大写),即使Rock Ridge正在使用。这个文件名用于无法使用Rock Ridge扩展名的系统(如MS-DOS),每个目录中的每个文件名必须与每个目录中的文件名不同。genisoImage通常试图通过强制unix文件名大写并根据需要截断而形成正确的名称,但当截断的名称并不都是唯一时,这通常会产生不满意的结果。genisoImage为每个文件名分配权重,如果找到两个其他相同的名称,则将优先级较低的名称重命名为包含一个3位数的数字(保证是唯一的)。例如,两个文件“foo.bar”和“foo.bar.~1~”可以呈现为“FOO.BAR;1“和”FOO000.bAR;1“
当与各种HFS选项一起使用时,genisoImage将尝试识别存储在多个Apple/Unix文件格式中的文件,并复制数据和资源派生以及任何相关的Finder信息。有关genisoImage支持的更多信息,请参见下面的HFS Macintosh文件格式部分。
请注意,genisoImage的设计并不是为了直接与作者通信。大多数编写人员都有专有的命令集,每个制造商的不同,您需要一个专门的工具才能真正地刻录盘。WODIM就是这样的工具之一。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
mkisofs [选项] [-o file.iso] srcfile
genisoimage [options] [-o filename] pathspec [pathspec ...]
pathspec是要复制到iso 9660文件系统中的目录树的路径。可以指定多个路径,genisoImage将所有指定路径组件中的文件合并成文件系统映像。
如果指定了“-graft-points “选项,则可以在root目录以外的点嫁接路径,也可以将文件或目录移植到CDRom映像上,并且源文件系统中的名称可以不同。我们首先假设存在一个本地文件”./old.lis“,并且希望将它包含在CDROM映像中。语句
foo/bar/=../old.lis
可以使”/foo/bar/old.lis“的CDROM映像中包括”old.lis“。而语句
foo/bar/xxx=../old.lis
可以使”/foo/bar/xxx“的CDROM映像中包括”old.lis“。同样的语法也可以与目录一起使用。genisoImage将创建任何目录,以满足CDROM映像上存在嫁接点的需求。默认情况下,像这样动态创建的任何目录都具有权限0555,被genisoimage的运行者拥有。如果您希望其他权限或中间目录的所有者,请参阅-uid, -gid, -dir-mode, -file-mode and -new-dir-mode。
2、选项列表
选项 |
说明 |
-abstract file |
设置摘要文件名称,可以有37个字符 |
-A AppId |
指定描述光盘应用程序Id的文本字符串,可以有128个字符 |
-allow-limited-size |
当处理不能在ISO 9660中容易表示的大于2GiB的文件时,用缩小的可见文件大小将它们添加到ISO 9660,并将正确的可见文件大小添加到UDF系统。结果是一个不一致的文件系统,用户需要确保他们真的使用UDF而不是ISO 9660驱动程序来读取这样的磁盘。意味着启用-UDF。 |
-allow-leading-dots-ldots |
允许ISO 9660文件名以句点开始。通常,为了保持MS-DOS的兼容性,使用下划线替换前导点。这违反了ISO 9660标准,但它恰好适用于许多系统。小心使用。 |
-allow-lowercase |
允许iso9660文件名中出现小写字母。这违反了ISO 9660标准,但它恰好适用于某些系统,谨慎使用。 |
-allow-multidot |
允许iso9660文件名中出现多个点。引导点不受此选项的影响,可以单独使用“-allow-leading-dots”,这违反了ISO 9660标准,但它恰好适用于许多系统。小心使用。 |
-biblio file |
指定书目文件名。有37个字符的空间。等效于“.genisoImagerc”文件中的BIBL。 |
-cache-inodes -no-cache-inodes |
启用或禁用inode缓存和以设备号查找指向文件的硬链接。如果genisoImage找到一个硬链接(具有多个名称的文件),该文件也将在cd上被硬链接,因此文件内容只显示一次。这有助于节省空间。类似Unix的操作系统,但在Cygwin等其他系统上默认使用非缓存inode,因为在这些系统上假定inode编号唯一是不安全的。(某些版本Cygwin使用弱散列算法创建假inode编号,这可能会产生重复。)如果两个文件有相同的inode号,但不是同一个文件的硬链接,“genisoImage -cache-indes”的行为将不正确。“-no cache-inode”在所有情况下都是安全的,但在这种情况下genisoImage无法检测硬链接,因此所产生的cd映像可能比所需的要大。 |
-alpha-boot alpha _boot_image |
指定在制作Alpha/SRM可引导CD时使用的引导映像的路径和文件名。路径名必须相对于指定给genisoimage的源路径。 |
-hppa-bootloader hppa_bootloader_image |
指定在制作HPPA可引导CD时使用的引导映像的路径和文件名。路径名必须相对于指定给genisoImage的源路径。还需要其他选项,至少需要一个内核文件名和一个引导命令行。 |
-hppa-cmdline hppa_boot_command_line |
指定在制作可引导CD时要传递给HPPA引导加载程序的命令行。用空格或逗号分隔参数。必须将更多选项传递给genisoImage,至少要传递一个内核文件名和引导加载程序文件名。 |
-hppa-kernel-32 hppa_kernel_32 -hppa-kernel-64 hppa_kernel_64 |
指定在制作HPPA可引导CD时使用的32位和/或64位内核映像的路径和文件名。路径名必须相对于指定给genisoImage的源路径。还需要其他选项,至少引导加载程序文件名和引导命令行。 |
-hppa-ramdisk hppa_ramdisk_image |
指定在制作HPPA可引导CD时使用的ramdisk映像的路径和文件名。路径名必须相对于指定给genisoImage的源路径。此参数是可选的。还需要其他选项,至少需要一个内核文件名和引导命令行。 |
-mips-boot mips_boot_image |
指定在生成SGI/大端MIPS可引导CD时使用的引导映像的路径和文件名。路径名必须相对于指定给genisoImage的源路径。可以多次指定此选项,以存储最多15个引导映像。 |
-mipsel-boot mipsel_boot_image |
指定制作DEC/小端MIPS引导映像的路径和文件名。路径名必须相对于指定给genisoImage的源路径。 |
-b eltorito_boot_image |
指定在为x86 PC制作EL Torito可引导CD时使用的引导映像的路径和文件名。路径名必须相对于为genisoImage指定的源路径。此选项是制作El Torito可引导CD所必需的。引导映像必须精确地为1200 kB、1440 kB或2880 kB,当创建iso 9660文件系统时,genisoImage将使用此大小。pc Bios将使用该映像来模拟软盘,因此第一个512字节扇区应该包含pc引导代码。 如果引导映像不是软盘映像,则需要添加“-hard-disk-boot”或“-no-emul-boot.”。如果系统不应该从模拟磁盘启动,则使用“-no-boot”。 如果未指定“-sort”,则引导映像将以低优先级(2)排序到介质的开头。如果您不喜欢这种情况,则需要为引导映像指定0的排序权重。 |
-B img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e -sparc-boot img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e |
设置引导文件名,img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e。 指定为SPARC系统制作可引导cd所需的逗号分隔的引导映像列表。分区0用于iso 9660映像,第一个映像文件映射到分区1。以逗号分隔的列表最多可能有7个字段,包括空字段。此选项是为Sun制作可引导cd所必需的。如果-B或-SPARC-引导已指定,则生成映像的第一个扇区将包含一个Sun磁盘标签。此磁盘标签为ISO 9660映像指定片0,为用此选项指定的引导映像指定切片1至7。每个附加引导映像中的字节偏移量512到8191必须包含适合于适当的SPARC体系结构的主引导。每个映像的其余部分通常包含一个用于主内核引导阶段的ufs文件系统。 实现的引导方法是在SunOS4.x和SunOS5.x中找到的。但是,它不依赖于SunOS内部,而只依赖于OpenBootprom的属性,因此它应该可以用于任何用于SPARC系统的操作系统。 如果指定了文件名,则将实际的和下面的所有引导分区映射到前一个分区。如果使用-G映像-B调用genisoImage,所有引导分区都映射到包含iso 9660文件系统映像的分区,而位于磁盘前16个扇区的通用引导映像用于所有体系结构。 |
-G generic_boot_image |
指定在制作通用可引导cd时使用的引导映像的路径和文件名。引导映像将放置在cd的前16个扇区上,位于iso 9660主卷描述符之前。如果此选项与-sparc-boot一起使用,则Sun磁盘标签将覆盖泛型引导映像的前512字节。 |
-eltorito-alt-boot |
从一组新的El Torito启动参数开始。最多63个El Torito引导项可以存储在一张CD上。 |
-hard-disk-boot |
指定用于创建El Torito可引导CD的引导映像是硬盘映像。映像必须以包含单个分区的主引导记录开始。 |
-no-emul-boot |
指定用于创建El Torito可引导cd的引导映像是“无仿真”映像。系统将在不执行任何磁盘模拟的情况下加载和执行此映像。 |
-no-boot |
指定应将创建的El Torito CD标记为不可引导。系统将提供一个模拟驱动器的图像,但将启动一个标准的启动设备。 |
-boot-load-seg segment_address |
指定非模拟El Torito cd的引导映像的加载段地址 |
-boot-load-size load_sectors |
指定在非模拟模式下加载的“虚拟”(512字节)扇区的数量。默认情况是加载整个引导文件。如果不是4的倍数,一些BIOSes可能会出现问题。 |
-boot-info-table |
指定在引导文件中的偏移量8处修补一个56字节的表,其中包含CD-ROM布局的信息。如果提供此选项,则启动文件将在源文件系统中被修改,因此,如果无法轻松重新生成该文件,请创建该文件的副本!有关此表的说明,请参阅El Torito启动信息表部分。 |
-C last_sess_start,next_sess_start |
此选项需要为多会话磁盘创建一个额外的CD或第二个会话或更高级别会话的图像。“-C”需要两个数字,用逗号分隔。第一个是应该附加到的磁盘最后一个会话中的第一个扇区。第二个是新会话的起始扇区号。正确的编号可以通过调用“wodin-msinfo”得到。如果-“C”与“-M”一起使用,genisoImage将创建一个文件系统映像,该映像将作为上一次会话的延续。如果使用“-C”而不使用“-M”,genisoImage将创建一个文件系统映像,用于CD额外的第二次会话。这是一个多会话cd,在第一个会话中保存音频数据,在第二个会话中保存iso 9660文件系统。 |
-c boot_catalog |
指定引导目录的路径和文件名,这是El Torito可引导CD所必需的。路径名必须相对于指定给genisoImage的源路径。此文件将插入到输出树中,而不是在源文件系统中创建,因此请确保指定的文件名不与现有文件冲突,否则将被排除。通常选择一个像“boot.Catalog”这样的名称。 如果未指定“-sort”,则引导目录以低优先级(1)排序到介质的开头。如果您不喜欢这种情况,则需要为引导目录指定0的排序权重。 |
-check-oldnames |
检查从旧会话导入的所有文件名是否符合iso 9660文件命名规则。如果没有此选项,只检查超过31个字符的名称,因为这些文件严重违反iso 9660标准。 |
-check-session file |
检查所有旧会话是否符合实际的genisoImage iso 9660文件命名规则。这是一个高级选项,它结合了“-M file -C 0,0 -check-oldnames” |
-copyright file |
指定版权信息,通常是光盘上的文件名。有37个字符的空间。相当于在“.genisoImagerc”文件中复制。 |
-d |
不要将句点附加到没有句点的文件中。这违反了ISO 9660标准,但它恰好适用于许多系统。小心使用。 |
-D |
不要使用深度目录重新定位,而是按我们看到的方式打包它们。如果未选择iso 9660:1999,则违反iso 9660标准,但它恰好适用于许多系统。 |
-dir-mode mode |
重写用于创建镜像的目录mode,指定为chmod(1)中权限位的4位数字。 |
-dvd-video |
生成一个符合DVD视频的UDF文件系统.这是通过排序适当文件的内容顺序和在需要时在文件之间添加填充来实现的。注意,只有当DVD视频文件名只包含大写字符时,排序才能工作。 注意,为了获得符合dvd视频的文件系统映像,您需要准备一个符合dvd视频的目录树,这需要生成dvd的根目录中包含目录VIDEO_TS和AUDIO_TS(所有大写)。VIDEO_TS需要包含视频文件系统的所有所需文件(文件名必须为所有大写)。 |
-f |
在生成文件系统时遵循符号链接。当这个选项没有使用时,符号链接将使用Rock Ridge,如果Rock Ridge也没有启用,那么它们将被忽略。 |
-file-mode mode |
重写用于创建image的常规文件的模式,使用4位模式 |
-gid gid |
将从源文件读取的组ID重写为gid的值。指定此选项将自动启用RockRidge扩展 |
-gui |
切换GUI的行为。这使得输出更加冗长,但将来可能会产生其他影响。 |
-graft-points |
允许文件名使用嫁接点。如果使用此选项,将检查所有文件名是否有嫁接点。文件名在第一个未转义的等号处被分隔。如果“-graft-points”已经指定,所有出现的‘\\’和‘=’字符必须用‘\\’转义。 |
-hide glob |
隐藏出现在ISO 9660或Rock Ridge目录中的与shell通配符模式GLOB匹配的任何文件。GLOB可能与文件名或路径的任何部分匹配。如果GLOB匹配某个目录,则该目录的内容将被隐藏。为了匹配目录名,请确保路径名不包括尾随“/‘字符。所有隐藏文件仍将写入输出CD映像文件。请参见-Hided-Joliet和README.Hide。此选项可多次使用。 |
-hide-list file |
包含要隐藏的shell通配符列表的文件 |
-hidden glob |
为匹配GLOB的文件和目录添加隐藏(存在)ISO 9660目录属性,这是一个shell通配符模式。该属性将防止文件被某些MS-DOS和Windows命令显示。GLOB可能匹配文件名或路径的任何部分。‘/’字符。此选项可多次使用 |
-hidden-list file |
包含获取隐藏属性的shell通配符列表的文件 |
-hide-joliet glob |
隐藏在Joliet目录中看到的与shell通配符模式GLOB匹配的文件和目录。GLOB可能匹配文件名或路径的任何部分。如果GLOB匹配某个目录,则该目录的内容将被隐藏。为了匹配目录名,请确保路径名不包括尾随的“/‘字符。所有隐藏文件仍将写入输出CD映像文件。此选项通常与-Hide一起使用。请参见README.Hide。此选项可多次使用。 |
-hide-joliet-list file |
包含要向Joliet树隐藏的shell通配符列表的文件。 |
-hide-joliet-trans-tbl |
将TRANS.TBL文件隐藏在Joliet树中。这些文件在Joliet世界中通常没有意义,因为它们列出了真实名称和ISO 9660名称,这两者都可能与Joliet名称不同。 |
-hide-rr-moved |
将RockRidge树中目录“RR_MOVED”的“.rr_move”目。这样似乎不可能完全将“RR_MOVED”目录隐藏在Rock Ridge树中。此选项只会使不知道该目录的人更容易混淆可见树。如果你不需要“RR_MOVED“目录,那么使用“-D”选项。请注意,如果指定了-D,则生成的文件系统不符合ISO 9660 level-1,在MS-DOS上也无法读取。 |
-input-charset charset |
定义本地文件名中使用的输入字符集。要获得有效字符集名称的列表,请调用“genisoImage-put-charset”获取帮助。要获得1:1的映射,可以使用默认值作为字符集名称。默认初始值在DOS系统上为cp 437,在所有其他系统上为iso 8859-1。有关详细信息,请参阅下面的字符集部分。 |
-output-charset charset |
定义Rock Ridge文件名中将使用的输出字符集,默认为输入字符集。有关详细信息,请参阅下面的字符集部分。 |
-iso-level level |
设置ISO 9660一致性级别。有效数字是1到4。 1)对于第1级,文件只能由一个部分组成,文件名限制为8.3类型。 2)对于第2级,文件只能由一个部分组成。 3)对于第三级,没有任何限制 (ISO-9660:1988除外)。 所有ISO 9660级别从1到3,所有文件名仅限于大写字母、数字和下划线(_)。文件名限制为31个字符,目录嵌套限制为8个级别,路径名限制为255个字符。 4)级别4正式不存在,但genisoImage将其映射到ISO-9660:1999,这是ISO 9660版本2。 使用第4级时,增强型卷描述符的版本号和文件结构的版本号设置为2。目录嵌套不限于8级,不需要文件包含点,点没有特殊意义,文件名没有版本号,文件名最长可达207个字符,如果使用Rock Ridge,文件名可达197个字符。 在创建第2版image时,genisoImage会发出一个增强的卷描述符,与主卷描述符相似但不完全相同。请注意不要使用损坏的软件通过假设第二个PVD副本并将这个假定的PVD副本修补为El Torito VD,从而使ISO 9660图像可引导。 |
-J |
除了正常的ISO 9660文件名之外,还生成Joliet目录记录。在Windows机器上使用光盘时,这是有用的。Joliet文件名是在Unicode编码,每个路径组件最多可以有64个Unicode字符。注意,Joliet不是标准的-只有Microsoft Windows和Linux系统才能读取Joliet扩展。要获得更好的可移植性,请同时考虑使用Joliet和Rock Ridge扩展。 |
-joliet-long |
允许Joliet文件名最多为103个Unicode字符,而不是64个字符。这违反了Joliet规范,但似乎有效。谨慎使用。 |
-jcharset charset |
“-J -input-charset charset”的组合。 |
-l |
允许完整的31个字符的文件名。通常iso 9660文件名将采用与MS-DOS兼容的8.3格式,尽管iso 9660标准允许最多31个字符的文件名。如果使用此选项,光盘可能很难在MS-DOS系统上使用,但会在大多数其他系统上使用。请谨慎使用。 |
-L |
过时的选项,使用“-allow-leading-dots”代替。 |
-jigdo-jigdo jigdo_file |
生成一个jigdo.jigdo元数据文件以及文件系统映像。 |
-jigdo-template template_file |
生成一个jigdo.template元数据文件以及文件系统映像。 |
-jigdo-min-file-size size |
指定要在.jigdo文件中列出的文件的最小size。默认值(和最小允许值)为1KB。 |
-jigdo-force-md5 path |
指定文件模式,其中文件必须包含在由“-md5-list”提供的externally-sup-plied MD5列表中。 |
-jigdo-exclude path |
指定一个不再“.jigdo”中列出的文件模式 |
-jigdo-map path |
为jigdo文件指定模式映射,例如“Debian=/mirror/debian” |
-md5-list md5_file |
指定一个文件,这个文件列出了包含在“.jigdo”文件列表中的文件的MD5sum、大小和路径名。 |
-jigdo-template-compress algorithm |
指定模板date.gzip和bzip 2当前支持的压缩算法,默认情况是gzip。 |
-log-file log_file |
将所有错误、警告和信息性消息重定向到log_file,而不是标准错误 |
-m glob |
将与shell通配符模式glob匹配的文件排除到CD-ROM。blob可能与文件名组件或完整路径名匹配。此选项可多次使用。例如“genisoimage -o rom -m ’*.o’ -m core -m foobar”,将从image中排除所有以“.o”结尾的文件,或者名为core或foobar的文件。 |
-exclude-list file |
包含要排除的shell通配符列表的文件 |
-max-iso9660-filenames |
允许ISO 9660文件名长达37个字符。此选项启用-N,因为额外的名称空间是从为文件版本号保留的空间中提取的。这违反了ISO 9660标准,但它恰好适用于许多系统。虽然符合要求的应用程序需要提供至少37个字符的缓冲区空间,但使用此选项创建的光盘可能会导致读取操作系统中的缓冲区溢出。极其小心地使用 |
-M path -M device -dev device |
指定要合并的现有ISO 9660映像的路径。另一种形式采用SCSI设备说明符,它使用与“dev= parameter”相同的语法。genisoImage的输出将是一个新的会话,它应该被写入-M中指定的image的末尾,这通常需要用于CD记录器的多会话功能。此选项只能与-C一起使用。 |
-N |
从ISO 9660文件名中省略版本号。这违反了iso 9660标准,但没有人真正使用版本号。 |
-new-dir-mode mode |
指定在文件系统映像中创建新目录时使用的mode,缺省值为0555。 |
-nobak -no-bak |
排除ISO 9660文件系统上的备份文件;也就是说,包含字符“~”或“#”或以.bak结尾的文件名。这些文件通常是Unix文本编辑器的备份文件。 |
-force-rr |
不要对以前的会话进行自动的Rock Ridge属性识别。这可以解决由Nero Burning ROM创建的image的问题 |
-no-rr |
不要使用以前会话中的RockRidge属性。这可能有助于避免当genisoImage在旧会话上发现非法的RockRidge签名时出现的问题。 |
-no-split-symlink-components |
不要拆分符号链接组件,而是开始一个新的连续区域(CE)。这可能会浪费一些空间,但是SunOS 4.1.4和Solaris 2.5.1 CDROM驱动程序在读取拆分的符号链接字段(a‘/’可以删除)时有错误。 |
-no-split-symlink-fields |
不要拆分符号链接字段,而是开始一个新的连续区域(CE)。这可能会浪费一些空间,但是SunOS 4.1.4和Solaris 2.5.1 CDROM驱动程序在读取拆分的符号链接字段(a‘/’可以删除)方面有一个错误。 |
-o filename |
指定iso 9660文件系统映像的输出文件。这可以是磁盘文件、磁带驱动器,也可以直接对应光盘写入器的设备名称。如果没有指定,则使用stdout。注意,输出也可以是常规磁盘分区的块设备,在这种情况下,可以使用iso 9660。可以正常安装文件系统,以验证是否正确地生成了文件系统。 |
-pad |
将整个映像的末尾按150个扇区(300 KB)填充。默认启用此选项。如果与-B一起使用,则在ISO 9660分区和引导分区之间插入填充,以便第一个引导分区以16的扇区号开始。当许多操作系统(例如Linux)在其文件系统I/O中实现readahead错误时,就需要填充。这些错误会导致位于磁道末尾附近的文件的读取错误,特别是如果磁盘是在一次模式下以磁道方式写入的,或者在CD音频轨道跟随数据轨道的情况下。 |
-no-pad |
不要将结束部分按150个扇区(300 KB)填充,也不要使引导分区在16个扇区的倍数上启动。 |
-path-list file |
包含要添加到ISO 9660文件系统中的路径规范目录和文件名列表的文件。此路径规范列表是在命令行中出现的任何路径规范之后处理的。如果参数为“-”,则从标准输入读取列表。 |
-P |
过时的操作,参考“-publisher” |
-publisher publisher_id |
指定要写入卷头的文本字符串。这应该描述CD-ROM的发行者,通常带有邮件地址和电话号码。有128个字符的空间。相当于”.genisoImagerc”文件中的PUBL。 |
-p preparer_id |
指定要写入卷头的文本字符串。这应该描述CD-ROM的发行者,通常带有邮件地址和电话号码。有128个字符的空间。相当于”.genisoImagerc”文件中的PREP。 |
-print-size |
以扇区大小的倍数(2048字节)打印估计的文件系统大小并退出。这个选项是磁盘在一次模式下需要的,并且在某些cd-R驱动器中,当管道pipe进入wodim时,需要提前了解文件系统映像的大小。旧版本的mKisofs将此信息(以及其他信息)写入stderr。由于这是很难解析的,因此没有任何其他信息的数字。如果您想编写一个简单的shell脚本,请重定向stderr并从stdout捕获数字。例如下面的操作 cdblocks=‘ genisoimage -print-size -quiet ... ‘ genisoimage ... | wodim ... tsize=$cdblockss - |
-quiet |
静默模式,只有少量的输出。 |
-R |
使用Rock Ridge协议生成SUSP和RR记录,以进一步描述ISO 9660文件系统上的文件。 |
-r |
这类似于-R选项,但是文件所有权和模式被设置为更有用的值。uid和gid设置为零,因为它们通常只在作者的系统中有用,而对客户端没有用处。所有文件读取位都设置为true,以便在客户端上全局可读文件和目录。如果为文件设置了任何执行位,则设置所有执行位,以便可在客户端上全局执行可执行文件。如果为某个目录设置了任何搜索位,则设置所有搜索位,以便在客户端上对目录进行全局搜索。所有写入位都将被清除,因为在任何情况下,文件系统都将被挂载只读。如果设置了任何特殊模式位,则清除它们,因为文件锁在只读文件系统上是无用的,并且uid 0或gid 0不需要设置id位。在Win 32上使用时,对所有文件都设置执行位。这是Win 32和CygwinPOSIX仿真层缺乏文件权限的结果。 |
-relaxed-filenames |
允许ISO 9660文件名包含除小写字母以外的所有7位ASCII字符.这违反了ISO 9660标准,但它恰好适用于许多系统。谨慎使用 |
-root dir |
当写入多会话映像时,此选项是必需的,而上一次(甚至更早的)会话是用-root dir编写的。使用上一次会话中找不到的目录名将导致genisoImage错误终止。如果没有此选项,genisoImage将无法找到未经修改的文件,并将被迫再次将它们的数据写入映像中。-root和-old-root将一起用于进行增量备份。 |
-old-root dir |
-root和-old-root用于一起进行增量备份。初始会话将使用“genisoimage -root backup_1 dirs”,下一次使用“genisoimage -root backup_2 -old-root backup_1 dirs”将会对这些目录进行另一次快照。第一个快照将在backup_1中找到,第二个快照将在backup_2中找到,但是只需要将修改后的或新的文件写入到第二次会话中。如果没有这些选项,将添加新的文件并保留旧的文件。但是如果文件被修改了,旧的文件就会被覆盖。通过从CD复制整个目录来恢复文件也会还原有意删除的文件。访问一个文件的几个旧版本需要操作系统支持来选择要挂载哪些会话。 |
-sort sort_file |
对媒体上的文件位置进行排序。排序由包含一对文件名和排序偏移加权的文件控制。如果权重较高,则文件将位于更接近媒体开头的位置,如果权重较低,则文件将位于接近媒体末尾的位置。文件名和权重之间必须只有一个空格或制表符,而权重必须是行中的最后一个字符。文件名被视为包含了上面的所有字符,但不包括最后一个空格或制表符。这是为了允许空格字符位于文件名的末尾。此选项不对ISO 9660目录中文件名的顺序进行排序。它对文件数据写入CD映像的顺序进行排序,这对于优化CD上的数据布局非常有用。 |
-sparc-boot img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e |
参考“-B” |
-sparc-label label |
为使用“-sparc-boot”创建的Sun磁盘标签设置Sun磁盘标签名。 |
-split-output |
将输出image分割成几个文件,每个文件大约1GB。这有助于在没有大型文件支持的操作系统上创建DVD大小的ISO 9660图像。如果要写入DVD,那么wodim将多个文件连接成一个单一的音轨。要使“-split-output”输出工作,必须指定-o文件名。得到的输出image将命名为:filename_00,filename_01,filename_02。 |
-stream-media-size # |
选择流操作并将媒体大小设置为#扇区。这允许您将tar(1)程序的输出输送到genisoImage,并创建一个ISO 9660文件系统,而不需要中间的tar存档文件。如果指定了此选项,genisoImage将从stdin读取并创建一个名为STREAM.IMG的文件。该文件的最大大小(带填充)比指定的媒体大小200个扇区。如果指定了“-no-pad”,则文件大小比指定的媒体大小50个扇区。如果文件较小,genisoImage将写入填充。这可能需要一段时间。选项流媒体大小只创建简单的ISO 9660文件系统,不能与多会话或混合文件系统选项一起使用。 |
-stream-file-name name |
保留 |
-sunx86-boot UFS_img,,,AUX1_img |
指定为Solaris x86系统制作可引导CD所需的以逗号分隔的文件系统映像列表。请注意,分区1用于iso 9660映像,分区2是整个磁盘,因此分区1和分区2不能被外部分区数据使用。第一个image文件映射到分区0。逗号分隔的列表中可能有空字段,分区1和2的列表条目必须为空。所支持的分区的最大数目为8个(尽管Solaris x 86分区表最多可支持16个分区),因此不可能指定超过6个分区映像。要为Solaris x 86系统制作可引导CD,则需要此选项。 如果指定了“-sunx86-boot”,则结果映像的第一个扇区将包含一个带有Solaris类型0x82 fdisk分区的PC fdisk标签,该分区从偏移512开始,覆盖整个cd。此外,对于Solaris类型0x82 fdisk分区,在CD的第一个扇区中有一个位于偏移量1024的SVR 4磁盘标签。为用于引导PC的第一个文件系统映像(通常为UFS类型)指定切片0,为ISO 9660映像指定切片1。片2跨越整个CD,片3~.片7可用于使用此选项指定的其他文件系统映像。 Solaris x86引导CD使用1024字节大小的主引导,它使用ElTorito不模拟引导模式,以及在cd扇区1~15中的第二泛型引导。 |
-sunx86-label label |
为使用-sunx86-boot创建的svr 4磁盘标签设置svr 4磁盘标签名。 |
-sysid ID |
指定系统ID。有32个字符的空间。相当于“.genisoImagerc”文件中的SYSI。 |
-T |
在CD-ROM上的每个目录中生成一个TRANS.TBL文件,该文件可用于非Rock Ridge系统,以帮助建立正确的文件名。文件中也有指示块和字符设备的主要和次要数字的信息,每个符号链接都有给定链接文件的名称。 |
-table-name table_name |
替代翻译表文件名(见上文)。如果要创建多会话映像,则必须使用与上一次会话相同的名称。 |
-ucs-level level |
在JolietSVD中设置Unicode一致性级别。默认级别为3。可以使用此选项将其设置为1~3 |
-udf |
在生成的文件系统映像中包含UDF文件系统支持。UDF支持目前处于alpha状态,因此无法创建仅UDF的映像。UDF数据结构目前耦合到Joliet结构,因此当前的实现存在许多缺陷。没有UID/GID支持,没有POSIX权限支持,也没有对符号链接的支持。请注意,除了真正的UDF数据结构所需的空间外,UDF浪费了磁盘开头的扇区~20到扇区256的空间。 |
-uid uid |
将从源文件读取的uid重写。指定此选项将自动启用RockRidge扩展 |
-use-fileversion |
-use-fileversion选项允许genisoImage使用文件系统中的文件版本号。如果未指定该选项,genisoImage将为所有文件创建一个版本号为1。文件版本是范;1~;32767内的字符串;该选项是VMS上的默认选项。 |
-U |
允许“未翻译”文件名,完全违反了上面描述的ISO 9660标准。允许以下标志:-d -l -N -allow-leading-dots-relaxed-filenames -allow-lowercase -allow-multidot -no-iso-translate。允许文件名中包含多个“.”字符,以及混合大小写文件名,这在HP-UX上很有用,因为内置的CDF文件系统不识别任何扩展名。使用时要格外小心。 |
-no-iso-translate |
不要翻译ISO 9660文件名中无效的字符“#”和“~”。虽然这些字符无效,但Microsoft系统经常使用这些字符。这违反了ISO 9660标准,但它恰好适用于许多系统。谨慎使用 |
-V volid |
指定要写入主块的卷ID(卷名或标签)。有32个字符的空间。相当于“.genisoImagerc”文件中的VOLI。卷ID被Solaris卷管理器用作挂载点,并作为分配给光盘的标签。 |
-volset ID |
指定卷集ID。有128个字符的空间。相当于“.genisoImagerc”文件中的VOLS |
-volset-size # |
将卷集大小设置为#。卷集大小是CD卷集中的CD数。卷集是一个或多个卷的集合,其中记录了一组文件。卷集不打算用于创建一组编号为CD的CD,例如操作系统安装CD集。卷集用于记录不适合单个卷的大目录树。卷集的每个卷都包含对所有目录和记录在序列号小于或等于当前卷的指定卷集大小的卷上的文件。 GenisoImage目前不支持大于1的-volset-size。选项-volset-size必须在每个命令行的-volset-seqno之前指定. |
-volset-seqno # |
将卷集序列号设置为#。卷集序列号是cd集中当前cd的索引号。选项-volset-size必须在每个命令行的-volset-seqno之前指定。 |
-v |
冗长的执行。如果在命令行上给出两次,则会打印额外的调试信息。 |
-x glob |
与-m glob相同 |
-z |
为透明压缩的文件生成特殊的RRIP记录。这只是支持透明解压缩的主机(如Linux 2.4.14或更高版本)的用途和兴趣。您必须指定-R或-r来启用Rock Ridge,并在运行genisoImage之前使用mkzftree实用程序生成压缩文件。请注意,透明压缩是一个非标准的Rock Ridge扩展。结果磁盘只有在Linux上才能透明地读取。在其他操作系统上,您需要手动调用mkzftree来解压缩文件。 |
HFS选项 |
|
-hfs |
创建ISO 9660/HFS混合CD。此选项应与-map、-magic或下列各种双破折号选项结合使用。 |
-apple |
创建带有Apple扩展的ISO 9660 CD。类似于-hfs,只是添加了对ISO 9660的苹果扩展,而不是创建一个HFS混合卷。以前的genisoImage版本在默认情况下包括Rock Ridge属性,如果“-apple”是指定的。这个版本的genisoImage不再这样做了。如果您希望拥有RockRidge属性,则需要分别指定此属性。 |
-map mapping_file |
使用映射文件根据文件名的扩展名为文件设置创建者并键入文件的信息。只有当文件名不是已知的Apple/Unix文件格式时,才会映射它。请参阅下面的HFS CREATOR/TYPE部分。 |
-magic magic_file |
创建者和类型信息是通过使用文件的magic数字(通常是文件的前几个字节)来设置的。只有当文件不是已知的Apple/unix文件格式,或者文件扩展名尚未使用-map映射时,才会使用magic_file。 |
-hfs-creator creator |
设置所有文件的默认创建者。一定是4个字符。请参阅HFSCREATOR/TYPE。 |
-hfs-type type |
设置所有文件的默认类型。必须精确为4个字符。请参阅HFSCREATOR/TYPE。 |
-probe |
搜索所有已知的Apple/Unix文件格式的文件内容。然而,检测MacBinary and AppleSingle文件唯一的方法是打开和读取他们,因此这个选项可能会增加处理时间。如果已知正在使用的Apple/Unix格式,最好使用下面给出的选项 |
-no-desktop |
不要创建(空)桌面文件。当在Macintosh上使用CD时,将创建新的hfs桌面文件。默认情况下,空桌面文件将添加到hfs卷中。 |
-mac-name |
使用HFS文件名作为ISO 9660、Joliet和Rock Ridge文件名的起点。有关更多信息,请参见下面的HFS Macintosh文件名部分。 |
-boot-hfs-file driver_file |
安装驱动程序文件,使CD可在Macintosh上启动。 |
-part |
生成一个HFS分区表。默认情况下,不生成分区表,但是一些较老的macintosh CD-ROM驱动程序需要CD-ROM上的hfs分区表才能识别混合CD-ROM。 |
-auto AutoStart_file |
让HFS CD使用QuickTime2.0自动启动功能来启动应用程序或文档。给定的文件名必须是位于CD顶层的文档或应用程序的名称。文件名必须小于12个字符。 |
-cluster-size size |
以字节为单位设置PC Exchange文件的群集或分配单元的大小。 |
-hide-hfs glob |
将shell通配符模式GLOB隐藏在HFS卷中。该文件或目录仍然存在于iso 9660和/或Joliet目录中。GLOB可能与文件名的任何部分匹配。可以排除多个全局。例如命令 genisoimage -o rom -hfs -hide-hfs ’*.o’ -hide-hfs foobar 将会从HFS卷中排除所有以“.o”结尾或称为foobar的文件。注意,如果您有一个名为foobar的目录,那么它(当然还有它的所有后代)也会被排除在外。GLOB也可以是相对于命令行上给定的源目录的路径名,例如
仅从src目录中排除名为html的文件或目录。树中任何其他名为html的文件或目录都不会被排除。应该与“-hide”或“-hide-joliet”一起使用。为了匹配目录名,请确保模式不包含尾随的“/”字符。 |
-hide-hfs-list file |
指定一个文件,该文件包含要隐藏的通配符模式的列表,如“-hide-hfs”中所示。 |
-hfs-volid hfs_volid |
HFS分区的卷名称。这是分配给macintosh上的磁盘的名称,并用-V替换使用的volid。 |
-icon-position |
如果存在图标位置信息,就使用。图标将显示在与Macintosh桌面相同的位置。文件夹在屏幕上的位置和大小、滚动位置、文件夹视图(视图为图标、小图标等)也会保留下来。 |
-root-info file |
为HFS卷的根文件夹设置位置、屏幕上的大小、滚动位置、文件夹视图等。 |
-prep-boot file |
准备引导映像文件。最多允许4次 |
-chrp-boot |
添加CHRP引导头 |
-input-hfs-charset charset |
输入字符集,定义与“-mac-name”一起使用时在hfs文件名中使用的字符。默认字符集为cp 10000 |
-output-hfs-charset charset |
定义将在HFS文件名中使用的字符的输出字符集。默认输入字符集 |
-hfs-unlock |
默认情况下,genisoImage将创建一个被锁定的hfs卷。此选项使卷不被锁定,以便其他应用程序(例如hfsutils)可以修改卷。 |
-hfs-bless folder_name |
“Bless”指定目录(文件夹)。这通常是系统文件夹,用于创建HFS可引导CD。目录的名称必须是genisoImage所看到的整个路径名。例如,如果给定的路径规范是“./cddata“,所需的文件夹称为系统文件夹,则整个路径名为“/cddata/system”文件夹(如果名称包含空格,请记住使用引号)。 |
-hfs-parms parameters |
重写用于创建HFS文件系统的某些参数。不太可能在正常情况下使用 |
--cap |
查找AUFS CAP Macintosh文件。仅搜索CAP Apple/Unix文件格式。搜索其他可能的Apple/Unix文件格式将被禁用,除非给出其他“--”选项 |
--netatalk |
查找NETATALK Macintosh文件 |
--double |
查找AppleDouble Macintosh文件 |
--ethershare |
查找Helios EtherShare Macintosh文件 |
--ushare |
查找IPT UShare Macintosh文件 |
--exchange |
查找PC Exchange Macintosh文件 |
--sgi |
查找SGI Macintosh文件 |
--xinet |
查找XINET Macintosh文件 |
--macbin |
查找MacBinary Macintosh文件 |
--single |
查找AppleSingle Macintosh文件 |
--dave |
查找Thursby Software Systems DAVE Macintosh文件 |
--sfm |
查找Microsoft’s Services for Macintosh文件 |
--osx-double |
查找Mac OS X AppleDouble Macintosh文件 |
--osx-hfs |
查找Mac OS X HFS Macintosh文件 |
3、字符集
genisoImage以符合POSIX的方式将文件名处理为8位字符的字符串。要表示所有语言的所有编码,8位字符是不够的。Unicode或Iso-10646定义了至少需要21位才能表示所有已知语言的字符编码。它们可以用utf-32、utf-16或utf-8编码表示。utf-32使用普通的32位编码,但似乎不常见。microsoft使用utf-16时使用win 32,缺点是16位字符不符合POSIX文件系统接口。
现代unix操作系统可以对文件名使用utf-8编码。每个32位字符由一个或多个8位字符表示。如果一个字符用iso-8859-1(在中欧和北美使用)编码,则以1:1映射到utf-32或utf-16编码的Unicode字符。如果一个字符是用7位asci编码(在美国和其他字符集有限的国家)将以1:1映射到UTF-32、UTF-16或UTF-8编码的Unicode字符。不能用UTF-8(如果值大于0x7F)中的单个字节表示的字符代码使用转义序列,这些转义序列映射到多个8位字符。
如果所有操作系统都使用utf-8,genisoImage将不需要在文件名中重新编码字符。不幸的是,Apple使用完全非标准的编码,而microsoft使用与POSIX文件名接口不兼容的unicode编码。对于所有非utf-8编码的操作系统,每个字节表示的实际字符取决于本地操作系统使用的字符集或代码页(microsoft使用的名称)。字符集中的字符将反映用户的区域或自然语言集。通常字符代码0x00-0x1f是控制字符,代码0x20-0x7f是7位ASCII字符,(在PC和Mac上)0x80-0xff用于其他字符。
由于有超过256个字符/符号在使用,只有一个小子集表示在一个字符集。因此,相同的字符代码可以表示不同字符集中的不同字符。因此在中欧生成的文件名,在东欧的机器上查看时可能不会显示相同的字符。为了使事情变得更复杂,不同的操作系统对区域或语言使用不同的字符集。例如,‘é’的字符代码(带有尖锐口音的小e)可以是PC上的字符代码0x82、Macintosh上的代码0x8e、西欧Unix系统上的代码0xe9和Unicode中的代码0x000e9。
只要不是所有操作系统和应用程序都使用相同的字符集作为文件名的基础,就可能需要指定文件名中使用的字符集以及文件名应该显示在CD上的字符集。有四个选项可以指定要使用的字符集:
1)-input-charset。定义您在主机上使用的本地字符集。发生的任何字符集转换都将使用此字符集作为起点。默认输入字符集在基于MS-DOS的系统上为cp 437,在所有其他系统上为iso 8859-1。如果给定-j,则输入字符集的unicode等效项将在joliet目录中使用。“-jcharset”选项 和“-input-charset –J”选项时一样的。
2)-output-charset。定义用于CD上Rock Ridge名称的字符集。默认为输入字符集。
3)-input-hfs-charset。定义从各种Apple/Unix文件格式解码的用于HFS文件名的HFS字符集。只有当与“-mac-name”一起使用时才有用。
4)-output-hfs-charset。定义用于从正在使用的输入字符集创建hfs文件名的hfs字符集。在大多数情况下,这将来自“-input-charset”选项指定的字符集。默认为输入hfs字符集。
在genisoImage中内置了许多字符集。要获得列表,请使用输入字符集帮助。此列表不包括从当前区域设置派生的字符集,如果genisoImage是使用iconv支持构建的。通过将文件名作为选项的参数,可以从任意字符集选项的文件中读取其他字符集。只有当文件的名称与内置字符集中的一个不匹配时,才会读取给定的文件。
字符集文件的格式与“http://www.unicode.org/Public/MAPPINGS”提供的映射文件相同。格式如下:
Column #1 is the input byte code (in hex as 0xXX) Column #2 is the Unicode (in hex as 0xXXXX) The rest of the line is ignored. |
任何空白行、没有上述格式的两个(或更多)列的行或注释行(以#字符开始)都会被忽略,而不会发出任何警告。任何丢失的输入代码都映射到Unicode字符0x0000。
请注意,虽然支持UTF-8,但其他Unicode编码(如UCS-2/UTF-16和UCS-4/UTF-32)则不支持,因为POSIX操作系统无法本地处理它们。1:1字符集映射可以通过使用关键字默认值作为任何字符集选项的参数来定义。从输入文件名生成的iso 9660文件名不会从输入字符集转换。iso 9660字符集是ASCII字符的非常有限的子集,因此任何转换都是没有意义的。任何不能转换的字符都将被“_”字符替换。
4、HFS CREATOR/TYPE(创建者和类型)
Macintosh文件有两个与其相关的属性,它们定义了创建文件的创建者和文件类型。两者都是(完全)4个字母字符串。通常,这允许Macintosh用户双击文件并启动正确的应用程序等。可以通过在Macintosh上使用ResEdit(或类似的)之类的方法找到特定文件的创建者和类型。
创建者和类型信息存储在所有Apple/Unix编码的文件中。对于其他文件,可以使用文件的映射文件(带-map)或使用文件的魔术号(通常是前几个字节中的签名),将创建者和输入文件的扩展名作为基础。如果这两个选项都给出了,那么它们在命令行上的顺序是有效的。如果“-map”是首先给出的,则在魔术号匹配之前尝试进行文件扩展名匹配。但是,如果先给出“-magic”,则在文件扩展名匹配之前尝试进行魔法号匹配。
如果没有使用映射或魔术文件,或者没有找到匹配,则可以通过使用“.genisoImagerc”文件中的条目或使用“-hfs-creator”或“-hfs-type,”来设置所有常规文件的默认创建者和类型,否则默认的创建者和类型是Unix和Text。
映射文件的格式与aufs使用的afpfile格式相同。该文件有五列用于扩展名、文件转换、创建者、类型和注释。以“#”字符开头的行是注释行,被忽略。下面就是一个例子
# Example filename mapping file # # EXTN XLate CREATOR TYPE Comment .tif Raw ’8BIM’ ’TIFF’ "Photoshop TIFF image" .hqx Ascii ’BnHq’ ’TEXT’ "BinHex file" .doc Raw ’MSWD’ ’WDBN’ "Word file" .mov Raw ’TVOD’ ’MooV’ 以上是关于Linux基础命令---mkisofs的主要内容,如果未能解决你的问题,请参考以下文章 linux mkisofs(genisoimage)命令用法 docker镜像ubuntu:14.04内mkisofs: command not found |