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支持构建的。通过将文件名作为选项的参数,可以从任意字符集选项的文件中读取其他字符集。只有当文件的名称与内置字符集中的一个不匹配时,才会读取给定的文件。 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’ "QuickTime Movie" * Ascii ’ttxt’ ’TEXT’ "Text file" |
第一列EXTN定义要映射的Unix文件名扩展名,任何不匹配的文件扩展名的默认映射都定义为“*”字符。第二列Xate列定义了Unix和Macintosh文件之间的文本转换类型,它被genisoImage忽略,但与aufs(1)兼容。虽然genisoImage不改变文件的内容,但如果二进制文件的类型设置为文本,则可能会在Macintosh上错误地读取它。因此,默认类型的更好选择可能是“????”。CREATOR和TYPE关键字必须为4个字符长,并以单引号括起来。注释字段以双引号括起来-它被genisoImage忽略,但与aufs兼容。 魔术文件的格式几乎与file (1)命令使用的魔术(5)文件格式相同。该文件有偏移量、类型、测试和消息用四个字节的制表符分隔列。以‘#’字符开头的行是注释行,被忽略。一个示例文件将类似于: # Example magic file # # off type test message 0 string GIF8 8BIM GIFf GIF image 0 beshort 0xffd8 8BIM JPEG image data 0 string SIT! SIT! SIT! StuffIt Archive 0 string \037\235 LZIV ZIVU standard Unix compress 0 string \037\213 GNUz ZIVU gzip compressed data 0 string %! ASPS TEXT Postscript 0 string \004%! ASPS TEXT PC Postscript with a ^D to start 4 string moov txtt MooV QuickTime movie file (moov) 4 string mdat txtt MooV QuickTime movie file (mdat) |
文件的格式用magic(5)来描述。这里唯一的区别是,对于魔术文件中的每个条目,message的初始偏移量必须是4个字符的CREATOR,紧接着是4个字符的TYPE,空格是可选的。此行上的任何其他字符都将被忽略。延拓行(从‘>’开始)也会被忽略,即只使用初始偏移行。 使用”-magic“可能会显著增加处理时间,因为每个文件必须打开和读取,以找到其魔术号码。 总之,对于所有文件,默认创建者是Unix,默认类型是TEXT。这些可以通过使用“.genisoImagerc“文件中的条目或使用”-hfs-creator “或”-hfs-type“选项来更改。如果文件是以已知的Apple/Unix格式之一(并且已经选择了该格式),则创建者和类型将从存储在Apple/Unix文件中的值中提取。其他文件的创建者和类型可以通过其文件扩展名(-map)或它们的魔术号(-magic)进行设置。如果在映射文件中使用了默认匹配,则这些值将覆盖默认的创建者和类型。
5、HFS MACINTOSH FILE FORMATS(文件格式) Macintosh文件有两个部分,称为数据和资源叉。两者都可能是空的。unix(和许多其他开放源码软件)只能处理只有一部分(或分叉)的文件。另外,macintosh文件有许多与它们相关的属性-可能最重要的是类型和创建者。同样,unix对这些类型的属性没有概念。例如,Macintosh文件可以是JPEG图像,其中图像存储在数据分叉中,桌面缩略图存储在资源分叉中。数据分叉中的信息通常是跨平台有用的。因此,要在Unix文件系统上存储Macintosh文件,必须找到一种方法来处理两个分叉和额外的属性(称为Finder info)。不幸的是,似乎每个在Unix上存储Macintosh文件的软件包都选择了一种完全不同的存储方法。genisoImage(部分)支持的Apple/Unix格式如下: CAP AUFS format。数据存储在文件中,资源存储在子目录。资源和数据有相同的文件名 AppleDouble/Netatalk。数据存储在文件中。资源存储在以‘%’作为前缀的文件中,查找器信息也存储在相同的‘%’文件中 AppleSingle。数据结构类似于上面的结构,除了分叉和Finder信息都存储在一个文件中。 Helios EtherShare。数据存储在文件中的,资源和查找器信息一起存储在子目录.rsrc中,与数据具有相同的文件名。 IPT UShare。与EtherShare格式类似,但是Finder信息的存储方式略有不同 MacBinary。分叉和查找器信息都存储在一个文件中。 Apple PC Exchange。Macintoshes将苹果文件存储在DOS(FAT)磁盘上。数据分叉存储在文件中。资源分叉存储在子目录Resoure.frk(或RESOURCE.FRK)中。finder info作为文件finder.dat(或FINDER.DAT)中的一条记录。为每个数据叉目录分离finder.dat。注意:genisoImage需要知道pc Exchange文件所在的磁盘的本机胖集群大小(或已从其复制)。此大小由“-cluster-size”确定。使用DOS实用程序chkdsk可以找到群集或分配大小。 SGI/XINET。SGI机器在安装HFS磁盘时使用。存储在文件中的数据分叉。.hsResource子目录中的资源叉,具有相同的文件名.finder info作为文件中的一条记录。 Thursby Software Systems DAVE。允许Macintoshes将苹果文件存储在SMB服务器上。存储在文件中的数据分叉。使用AppleDouble格式存储资源叉。 genisoImage将尝试从finder信息中设置创建者、类型、日期和可能的其他标志。此外,如果存在,则从finder info设置macintosh文件名,否则macintosh名称基于unix文件名 Services for Macintosh。NT服务器存储在NTFS文件系统上的文件格式。数据分叉存储为文件名。资源叉存储为名为filename:afp_Resource的NTFS流。查找信息存储为名为filename:AFP_AfpInfo的NTFS流。NTFS流通常对用户不可见。注意:genisoImage只部分支持SFM格式。如果存储在NT服务器上的HFS文件或文件夹在其名称中包含非法NT字符,则NT将这些字符转换为私有使用Unicode字符。这些字符是:“*/<>?\和空格或句点(如果它是文件名的最后一个字符,则编码0x01到0x1f)。(控制字符)和苹果的苹果标志。不幸的是,这些私有Unicode字符无法被genisoImageNT可执行文件读取。因此,包含这些字符的任何文件或目录名称都将被忽略-包括任何此类目录的内容。 Mac OS X AppleDouble。当MacOSX将HFS/HFS文件复制或保存到非HFS文件系统(例如UFS、NFS等)时,文件以AppleDouble格式存储。存储在以“._”开头的同名文件中的资源叉。查找器信息也存储在相同的“._”文件中。 Mac OS X HFS (Alpha)。实际上不是Apple/Unix编码,而是MacOSX系统上的实际HFS/HFS文件。存储在文件中的数据分叉。资源叉存储在同名、后缀/rsrc的伪文件中。只有在MacOSX上使用时才能工作。如果发现一个文件具有零长度的资源分叉和空的finderinfo,则假定它没有任何Apple/Unix编码,因此可以使用其他方法设置类型和创建者。
genisoImage将尝试从finder信息中设置创建者、类型、日期和可能的其他标志。此外,如果存在,则从finder info设置macintosh文件名,否则macintosh名称基于unix文件名。 在使用“-apple”时,类型和创建者存储在ISO 9660目录记录中的可选系统使用或SUSP字段中,方式与Rock Ridge属性非常类似。实际上,为了简化生活,在现有Rock Ridge属性的开头添加了Apple扩展(即,为了获得Apple扩展,您也可以获得Rock Ridge扩展)。Apple扩展要求将资源叉存储为与ISO 9660关联的文件。这与存储在ISO 9660文件系统中的任何普通文件一样,只是相关的文件标志是在目录记录(位2)中设置的。该文件与数据分叉(由非苹果计算机看到的文件)具有相同的名称。相关文件通常被其他操作系统忽略。 使用“-hfs”时,类型和创建者以及其他查找器信息存储在单独的HFS目录中,在ISO 9660卷中不可见。HFS目录引用上述相同的数据和资源叉文件。在大多数情况下,最好使用“-hfs”而不是“-apple”,因为后者在文件名中使用了有限的ISO 9660字符。然而,Apple扩展名确实提供了这样的优势:文件被更高效地打包到磁盘上,并且可能在CD上安装更多的文件
6、HFS MACINTOSH FILENAMES 在可能的情况下,存储在Apple/Unix文件中的HFS文件名用于CD的HFS部分。但是,并不是所有的Apple/Unix编码都使用finderinfo存储HFS文件名。在这些情况下,使用Unix文件名-带有转义的特殊字符。特殊字符包括‘/’和代码超过127的字符。AUFS使用‘:’转义这些字符,后面跟着字符代码作为两个十六进制数字。Netatalk和EtherShare有类似的方案,但使用‘%’而不是‘:’。如果genisoImage无法找到HFS文件名,则使用Unix名称,将任何“%xx”或“:xx”字符(xx是两个十六进制数字)转换为单个字符代码。如果xx不是十六进制数字([0-9a-FA-F]),则它们将被单独保留-尽管其余的“:”转换为“%”,因为“:”是hfs目录分隔符。必须小心,因为带有“%xx”或“:xx”的普通Unix文件也将被转换。例如下面的例子 This:2fFile converted to This/File This:File converted to This%File This:t7File converted to This%t7File |
虽然HFS文件名似乎支持大写字母和小写字母,但文件系统不区分大小写,即文件名AbC和aBC是相同的。如果在具有相同HFS名称的目录中找到一个文件,genisoImage将尝试通过在其中一个文件名中添加“_”字符来创建唯一的名称。如果文件存在HFS文件名,genisoImage可以使用“-mac-name”选项,让此名称作为ISO 9660、Joliet和Rock Ridge文件名的起始点。没有HFS名称的普通Unix文件仍将使用它们的Unix名称。 如果在unix系统中,一个mac的二进制文件存储名字是这是someimage.gif.bin,但是系统中还有一个名字为someimage.gif的文件,那么这个名字是将出现在CD的HFS部分的名称。但是,由于genisoImage使用Unix名称作为其他名称的起点,生成的ISO 9660名称可能是SOMEIMAG.BIN,Joliet/Rock Ridge将是某某Image.gif.bin。此选项将使用HFS文件名作为起点,ISO 9660名称可能为SOMEIMAG.GIF,而Joliet/Rock Ridge可能是一些Image.gif。 “-mac-name”目前不能和“-T”一起使用。Unix名称将在TRANS.TBL文件中使用,而不是Macintosh名称。 用于将任何HFS文件名转换为Joliet/Rock Ridge文件名的字符集默认为cp 10000(Mac Roman)。使用的字符集可以使用“-input-hfs-charset.”选项指定。HFS字符集中的其他内置字符集是:cp 10006(Mac希腊语)、cp 10007(MacCyrilic)、cp 10029(MacLatin 2)、cp 10079(Mac冰岛和andic)和cp 10081(Mac土耳其语)。注意:从各种Apple/Unix格式中提取的HFS文件名使用的字符代码将不会被转换,因为它们被假定在正确的Apple字符集中。只有从HFS文件名派生的Joliet/Rock Ridge名称才会被转换。 现有的genisoImage代码将过滤掉ISO 9660和Joliet文件名的任何非法字符,但随着genisoImage预期将直接处理Unix名称,它将保留Rock Ridge的名称。但“/”是一个合法的HFS文件名字符,“-mac-name”选项在Rock Ridge文件名中将“/”转换为“_”。 如果使用Apple扩展,则只会在Macintosh上显示ISO 9660文件名。然而,由于MacintoshISO 9660驱动程序可以使用级别2文件名,您可以使用类似于“-allow-multidot”的选项,这在Macintosh上没有问题的。但是仍然要注意名称,例如“this.file.name”将转换为“THIS.FILE”,即只有一个‘.’,也可以将文件名“abcdefgh”视为“ABCDEFGH”,但“abcdefghi”将被视为“ABCDEFGHI.”。也就是说,在结尾有一个“.”不知道这是Macintosh问题还是genisoImage/mk混合问题。当在Macintosh上查看时,所有的文件名都是大写的。当然,DOS/Win3.X机器将无法看到二级文件名。
7、HFS CUSTOM VOLUME/FOLDER ICONS 若要为HFS CD提供自定义图标,请确保根(顶级)文件夹包含一个标准Macintosh卷图标文件。若要在Macintosh上为卷提供自定义图标,必须在卷的“获取信息”框中将一个图标粘贴到卷的图标上。这将在根文件夹中创建一个名为“Icon\r“(‘\r’是回车字符)的不可见文件。自定义文件夹图标非常相似,文件夹本身存在一个名为”Icon\r“的不可见文件。 可能创建genisoImage可以使用的自定义图标的最简单方法是格式化Mac上的空白HFS软盘,并将图标粘贴到其“GET Info”框中。如果在安装hfs模块的情况下使用linux,请挂载软盘:”mount -t hfs /dev/fd0 /mnt/floppy”。默认情况下,软盘将作为CAP文件系统挂载。然后使用以下内容运行genisoImage:“genisoimage --cap -o output source_dir /mnt/floppy “。 如果您不使用Linux,您可以使用hfsutils从软盘复制图标文件。但是,必须小心,因为图标文件包含一个控制字符。例如: hmount /dev/fd0 hdir -a hcopy -m Icon^V^M icon_dir/ico |
其中‘^V^M’是“ctrl+v“,然后是控制”ctrl+m“。然后以下面的方式运行genisoimage:“genisoimage --macbin -o output source_dir icon_dir” 创建/使用自定义文件夹图标的过程非常相似-将图标粘贴到文件夹的“Get Info”框中,并将生成的“Icon\r”文件传输到genisoImage源树中的相关目录。您可能需要将图标文件隐藏在iso 9660和Joliet树中。
8、HFS BOOT DRIVER 可以在Macintosh上启动混合CD。可引导的HFS CD需要一个AppleCD-ROM(或兼容)驱动程序、一个可引导的HFS分区和必要的系统、Finder等文件。使用Apple_Driver实用程序,可以从任何其他Macintosh可引导CD-ROM中获得驱动程序。然后,这个文件可以与“-boot-hfs-file”一起使用。HFS分区(在本例中是混合磁盘)必须包含一个合适的系统文件夹,同样来自另一个光盘或磁盘。 要使分区可引导,必须设置其引导块。引导块位于分区的前两个块中。对于不可引导的分区,引导块中满是零。通常情况下,当系统文件被复制到Macintosh磁盘上的分区时,引导块会被许多必需的设置填充。因此,实用程序Apple_Driver还从它在给定的cd-ROM上找到的第一个hfs分区中提取引导块,这用于genisoImage创建的hfs分区。 请注意:通过使用来自Apple CD的驱动程序并将Apple软件复制到您的CD上,您将很容易服从Apple Computer,Inc。软件许可协议。
9、EL TORITO BOOT INFORMATION TABLE 当给出“-boot-info-table”时,genisoImage将修改-b指定的引导文件,方法是在文件的偏移量8处插入一个56字节的引导信息表。这一修改是在源文件系统中完成的,因此,如果该文件不易重新创建,请确保使用副本!此文件包含指针,这些指针在启动时可能不易或可靠地获得。本表的格式如下;所有整数均采用7.3.1(“小Endian”)格式: Offset Name Size Meaning 8 bi_pvd 4 bytes LBA of primary volume descriptor 12 bi_file 4 bytes LBA of boot file 16 bi_length 4 bytes Boot file length in bytes 20 bi_csum 4 bytes 32-bit checksum 24 bi_reserved 40 bytes Reserved |
32位校验和是引导文件中从字节偏移64开始的所有32位字的总和。所有线性块地址(LBA)都以CD扇区(通常为2048字节)给出。
10、HPPA说明 要为HPPA制作一个可引导的CD,至少必须指定一个引导加载程序文件(-hppa-boot-loader)、一个内核映像文件(32位、64位,或者两者兼而有之,视硬件而定)和一个引导命令行(-hppa-cmdline)。有些系统可以启动32位或64位的内核,如果两者都存在,固件将选择其中一种。还可以选择使用“-hppa-cmdline”对根文件系统使用ramdisk。
11、JIGDO说明 Jigdo是一个帮助分发大文件的工具,如cd和dvd镜像;更多细节请参见http://atterer.net/jigdo/。debian cd和dvd iso镜像以jigdo格式在网络上发布,以便最终用户更有效地下载它们。若要从genisoImage在ISO映像旁边创建jigdo和模板文件,您必须首先生成将使用的文件列表,格式如下: MD5sum File size Path 32 chars 12 chars to end of line MD5sum应该用jigdo的伪BASE 64格式编写。文件大小应该是十进制,文件的路径必须是绝对的。拥有此文件后,使用所有常规命令行参数调用genisoImage。使用“-jigdo-jigdo”和“-jigdo-Template”指定jigdo和模板文件的输出文件名,并使用“-md5-list”传递md5列表的位置。 如果您不希望将一些文件添加到jigdo文件中(例如,如果它们可能经常更改),请使用-jigdo-忽略指定它们。如果您想在将一些文件写入镜像时验证它们,请使用“-jigdo-force-md5”指定它们。如果任何文件不匹配,genisoImage就会中止。这两个选项都以正则表达式作为输入。可以根据大小,使用”-jigdo-min-file-size”选项限制将进一步使用的文件集。 最后,jigdo代码需要知道如何将给定的文件映射到镜像样式的配置中。指定如何使用“-jigdo-map”映射路径。使用“debian=/mirror/debian”将导致所有以“/mirror/debian”开头的路径映射到输出jigdo文件中的debian:<file>。 12、例子代码 1)若要在cd.iso文件中创建一个普通的ISO 9660文件系统映像,如果CD为cd.iso,目录cd_dir将成为根目录,使用命令: % genisoimage -o cd.iso cd_dir |
2)使用目录cd_dir的Rock Ridge扩展创建CD % genisoimage -o cd.iso -R cd_dir |
3)若要创建源目录cd_dir的RockRidge扩展名的CD,其中所有文件至少具有读取权限,且所有文件均为root所有,使用命令: % genisoimage -o cd.iso -r cd_dir |
4)将tar存档直接写入CD,该CD将包含带有tar存档的简单iso 9660文件系统。使用命令: % tar cf - . | genisoimage -stream-media-size 333000 | wodim dev=b,t,l -dao tsize=333000s – |
5)用源目录cd_dir的Joliet和Rock Ridge扩展创建HFS混合CD % genisoimage -o cd.iso -R -J -hfs cd_dir |
6)从包含Netatalk Apple/Unix文件的源目录cd_dir创建HFS混合CD % genisoimage -o cd.iso --netatalk cd_dir |
7)要从源目录cd_dir创建HFS混合CD,只需根据文件“映射”中列出的文件扩展名提供所有文件创建者和类型 % genisoimage -o cd.iso -map mapping cd_dir |
8)要创建一个带有Apple扩展到ISO 9660的CD,可以从源目录cd_dir和another_di。.解码所有已知Apple/Unix格式的文件,并根据文件魔术中给出的魔术号给出任何其他文件的创建者和类型。 % genisoimage -o cd.iso -apple -magic magic -probe cd_dir another_dir |
9)下面的示例在CD上放置不同的文件,这些文件都有自述的名称,但当被视为ISO 9660/Rock Ridge、Joliet或HFS CD时,它们的内容不同。当前目录包含“README.hfs README.joliet README.Unix cd_dir/”。下面的命令将cd_dir目录的内容连同三个自述文件放在CD上,但在这三个文件系统中只能看到一个 % genisoimage -o cd.iso -hfs -J -r -graft-points \ -hide README.hfs -hide README.joliet \ -hide-joliet README.hfs -hide-joliet README.Unix \ -hide-hfs README.joliet -hide-hfs README.Unix \ README=README.hfs README=README.joliet \ README=README.Unix cd_dir |
文件README.hfs将被视为HFS CD上的自述文件,另外两个自述文件将被隐藏。同样适用于Joliet和ISO 9660/Rock Ridge CD。隐藏选项的组合可能会产生各种奇怪的结果。
13、说明 genisoImage可以安全地安装在suid root中。这可能是为了允许genisoImage在创建多会话映像时读取上一次会话。如果genisoImage正在创建具有Rock Ridge属性的文件系统映像,而源目录树的目录嵌套级别对于ISO 9660来说太高,genisoImage将执行深度目录重定位。这将导致CD根目录中的一个名为RR_Move的目录。您无法避免此目录。不同平台的许多引导代码选项是互斥的,因为引导块不能共存,即不同平台共享映像中相同的数据位置。
14、bug 任何与被复制到iso 9660文件系统的树中的文件没有硬链接的文件都将有一个不正确的文件引用计数。不检查根目录的“.”条目中的SUSP记录以验证是否存在RockRidge增强功能。在以多会话模式添加数据时,读取旧会话时会出现此问题。在添加数据时,不以多会话模式正确读取已重新定位的目录。如果新会话不包括深度目录,则任何重新定位的深度目录都会丢失。在从TRANS.TBL执行多会话时不重复使用RR_MOVE。不要在多会话模式中为RR_MOVE创建全名条目。
15、HFS PROBLEMS/LIMITATION 虽然HFS文件名似乎支持大写字母和小写字母,但文件系统不区分大小写,即文件名ABC和ABC是相同的。如果在具有相同HFS名称的目录中找到一个文件,genisoImage将尝试通过在其中一个文件名中添加“_”字符来创建唯一的名称。 共享前31个字符的HFS文件/目录名称有‘_N’(十进制数字)替代最后几个字符以生成唯一的名称。在“嫁接”Apple/Unix文件或目录(所涉及的方法和语法见上文)时,必须小心。不能为Apple/Unix编码的文件/目录使用新名称。例如,如果要将名为oldname的Apple/Unix编码文件添加到CD中,则不能使用一下命令行: “genisoimage -o output.raw -hfs -graft-points newname=oldname cd_dir” genisoImage将无法解码旧名。但是,只要您不尝试像上面那样给它们命名,就可以移植Apple/unix编码的文件或目录。 当使用多会话选项-M和-C创建HFS卷时,仅上一次会话中的文件将位于HFS卷中。也就是说,genisoImage不能将以前会话中的现有文件添加到hfs卷中。但是,如果每个会话都是使用“-part”创建的,则在Mac上挂载时,每个会话将显示为单独的卷。在这种情况下,值得使用“-v”或-”hfs-volid“为每个会话提供一个唯一的卷名,否则每个“卷”都会以相同的名称出现在桌面上。符号链接(与所有其他非常规文件一样)不会添加到hfs目录中。 混合卷可能大于包含相同数据的纯ISO 9660卷。在某些情况下(例如DVD大小的卷),差异可能很大。随着HFS卷的增大,分配块的大小(文件所能占用的最小空间)也会变大。对于650 MB的CD,分配块是10 kb,对于4.7GB的DVD,大约是70 kB。hfs卷中的最大文件数约为65500,但实际限制将略小于此。 生成的混合卷可以使用hfsutils例程在Unix机器上访问。但是,当卷被设置为锁定时,不能对其进行任何更改。这个选项“-hfs-unlock“将创建一个未锁定的输出映像-但是不应该对卷的内容进行任何更改(除非您真正知道自己在做什么),因为它不是“真实的”hfs卷。 “-mac-name“目前不能和“-T”一起使用,-Unix名称将在TRANS.TBL文件中使用,而不是Macintosh名称。 虽然genisoImage不改变文件的内容,但如果二进制文件的类型设置为”TEXT“,则可能在Macintosh上不正确地读取它。因此,默认类型的更好选择可能是”????“。 “-mac-boot-file “选项可能完全不能工作。可能无法使用PC Exchangev2.2或更高版本的文件(MacOS8.1可用)。当使用Linux时,包含PC Exchange文件的DoS媒体应该以MSDOS(而不是vFAT)类型挂载。SFM格式仅部分支持。geniso映像应该能够创建超过4GB的hfs混合映像,尽管这还没有经过充分的测试。
16、实例 创建iso文件 [root@localhost weijie]# mkisofs -v -o my.iso /weijie/ I: -input-charset not specified, using utf-8 (detected in locale settings) genisoimage 1.1.9 (Linux) Scanning /weijie/ Scanning /weijie/wjtpflR Writing: Initial Padblock Start Block 0 Done with: Initial Padblock Block(s) 16 Writing: Primary Volume Descriptor Start Block 16 Done with: Primary Volume Descriptor Block(s) 1 Writing: End Volume Descriptor Start Block 17 Done with: End Volume Descriptor Block(s) 1 Writing: Version block Start Block 18 Done with: Version block Block(s) 1 Writing: Path table Start Block 19 Done with: Path table Block(s) 4 Writing: Directory tree Start Block 23 Done with: Directory tree Block(s) 2 Writing: Directory tree cleanup Start Block 25 Done with: Directory tree cleanup Block(s) 0 Writing: The File(s) Start Block 25 Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 2048 Path table size(bytes): 26 Done with: The File(s) Block(s) 0 Writing: Ending Padblock Start Block 25 Done with: Ending Padblock Block(s) 150 Max brk space used 0 175 extents written (0 MB) You have new mail in /var/spool/mail/root [root@localhost weijie]# ls 1.c my.iso wj123.kpET wj123.oH2o4P wj234.q1C wjtpflR [root@localhost weijie]# |
|