看linux下关于mkisofs命令帮助文档的的时候,我是一头雾水。帮助文档里面关于mkisofs命令的很多东西我都不明白,到目前为止,我只知道用该命令制作linux系统映像文件,然后再用刻录软件做一个系统盘。
在介绍该命令之前,我先介绍普及一些知识,这也是我在百度上查找到的一些资料。我想对一些像我这样的初级人员了解这些知识还是有必要的。
ISO 9660文件系统是一个标准CD-ROM文件系统,几乎所有带有CD-ROM的计算机都可以从ISO 9660文件系统读取文件。此标准有不同的说明级别,一级,文件必须是8.3格式(文件名不得多于8个字符,后缀名不得多于3个字符),并且都得是大写字母。目录也不得多于8个字符。在二级和三级中,文件名可以达到32个字符.
Joliet,由于在ISO 9660中有一些限制,如字符设置限制,文件名长度限制和目录树深度限制。这些规定阻碍了用户复制数据到可被不同计算机平台读取的CD-ROM。因此,一些操作系统出售商已经以几种方式扩展ISO 9660。Joliet就是ISO 9660的一个扩展,由Microsoft提出和实现。它以ISO 9660(1988)标准为基础。它是光盘(CD)上目录文件系统(包括文件名)的规范。它允许长文件名的长度长达64个字符(包括空格),但是文件名加它的完全路径总字符数不能超过120。以及在文件名中统一编码字符的使用(有时是国际化的需要)。
El Torito可开机光盘规格,是ISO 9660光盘规格的扩充,由IBM的Stan Merkin及凤凰科技(Phoenix Technologies)的Curtis Stevens所主导设计,发表于1994年11月。此规格设计让电脑可从光盘开机。现今的电脑BIOS,会在开机时根据El Torito规格,查找光盘上的开机代码。若该光盘具有开机代码,则BIOS会指配一个磁盘驱动器代号给该光盘驱动器。磁盘驱动器代号通常为80(模拟硬盘)或是00(模拟软盘)等。借由模拟成硬盘或软盘,可让旧式的操作系统由光盘开机。新式的操作系统则不需做模拟,只要有如ISOLINUX之类的开机引导程序(boot loader),即可由光盘开机。
Rock Ridge,针对类UNIX系统的 ISO-9660文件系统 ,支持文件名字母大小写、符号字符以及长文件名。其具体信息可参考http://en.wikipedia.org/wiki/Rock_Ridge。
HFS,混合文件系统 (Hybrid File System),是苹果公司 (Apple)的MAC机所使用的光盘文件系统 ,不支持 DOS、Windows 9x/NT等其他操作系统 。或者分层文件系统(Hierarchical File System,HFS)是一种由苹果电脑开发,并使用在Mac OS上的文件系统。最初被设计用于软盘和硬盘,同时也可以在在只读媒体如CD-ROM上见到。
mkisofs——创建一个混合的ISO 9660/JOLIET/HFS文件系统,该文件系统具备可选的Rock Ridge特性。
语法:
mkisofs [ options ] [ -o filename ] pathspec [ pathspec ... ]
mkisofs命令的选项太多了,下面只介绍linux下一些常用的选项,关于HFS的等选项可参考帮助文档。
选项:
- -a :可以把备份文件添加到映像文件中
- -abstract FILE :指定摘要文件名
- -biblio FILE :指定ISBN(International Standard Book Number)文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN.此参数会写入光盘的Primary Volume Descriptor的Biblio graphic File ID列
- -A application_id:指定光盘的应用程序ID(长度为128个字符).应用程序ID会写入光盘Primary Volume Descriptor 的Application ID列
- -allow-leading-dots or -ldots:允许ISO9660文件名称以.字符开头
- -allow-lowercase:允许小写字母出现在ISO9660文件名中
- -allow-multidot:允许多于一个.字符出现在文件名中,允许多扩展名(与iso9660格式标准相冲突)
- -cache-inodes:允许有多个硬链接的文件在光盘中只出现一次
- -no-cache-inodes:与上相反
- -b eltorito_boot_image:指定制作可开机光盘时所需的开机映像文件
- -eltorito-alt-boot:启动时指定启动参数
- -G generic_boot_image:制作通用可开机光盘时指定通用开机映像文件
- -hard-disk-boot :启动映像为硬盘映像
- -no-emul-boot:指定启动映像为非模拟映像
- -no-boot:标识启动映像不可启动
- -boot-load-seg segment_address:指定加载映像时设置堆栈段地址
- -boot-load-size:设置加载扇区数
- -boot-info-table:启动的图像中显示信息
- -C :将许多节区合成一个映像文件时,必须使用此参数。
- -c boot_catalog:制作可开机光盘时,mkisofs会将开机映像文件中的-eltorito-catalog全部内容作成一个文件,指定文件名即可,mkisofs会生成文件的全部内容
- -copyright FILE:指定版权信息的文件名
- -d:省略文件后的句号
- -D:ISO9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO9660兼容的格式,-D可以关闭此功能
- -f:若遇到符号链接,默认会将此符号链接放入到映像文件内。-f可以把符号指向的文件而不是符号放入映像文件内,而不保留符号关连
- -hide glob:指定的目录或文件在ISO9660或Rock Ridge Extensions的系统中隐藏
- -hide-list file:指定一些列目录或文件在ISO9660或Rock Ridge Extensions的系统中隐藏的文件名
- -hide-joliet glob:指定的目录或文件在Joliet格式系统中隐藏
- -hide-joliet-list file:指定一些列目录或文件在Joliet格式系统中隐藏的文件名
- -hide-joliet-trans-tbl : 在Joliet格式系统中隐藏TRANS.TBL文件
- -T or -translation-table :建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上
- -input-charset charset:指定文件名的输入字符集
- -output-charset charset:指定文件名的输出字符集
- -J:支持Joliet格式,使用Joliet格式的目录与文件名(可使用unicode储存中文档名)。要做Dos/windows下的光盘,用Joliet格式
- -joliet-long:支持长文件名(Joliet格式)
- -jcharset charset:设置字符集(Joliet格式)
- -l:可使用ISO9660 32个字符长度的文件名。不过刻录出来的光盘可能无法在MS-DOS下正常读取
- -L:允许文件名的第一个字符为句点(.),刻录出来的光盘可能无法在MS-DOS下读取
- -log-file log_file:在执行过程中若有错误信息,默认会显示在屏幕上。使用此参数可将错误信息存在指定的文件中
- -m glob:指定的目录或文件名将不会被放入到映像文件中
- -exclude-list file:指定一系列目录或文件名将不会被放入到映像文件中的文件名
- -M path or -M device or -dev device:与指定的映像文件合并.此参数必须与-C参数一起使用
- -nobak or -no-bak:不将备份文件添加到映像文件中
- -o filenames:指定生成映像文件的名称
- -pad:填充生成的映像文件,使其生成的大小为32K的倍数
- -no-pad:不用填充生成的映像文件,使其生成的大小为32K的倍数
- -publisher 光盘的发行人:记录光盘的发行人(长度为128个字符),此参数会写入到光盘的Primary Volume Descriptor的Publisher ID列
- -p 光盘的数据处理人:记录光盘的数据处理人(长度为128个字符) 此参数会写入到光盘的Primary Volume Descriptor的System ID列
- -print-size:显示预计的文件系统大小。也就是指定的目录与文件刻录在光盘上的大小 。使用此参数可避免建立出太大的映像文件,而超出光盘实际的容量
- -quiet:执行时不显示任何信息
- -R or -r:使用Rock Ridge Extensions格式, 并开放全部文件的读取权限;如果你的iso目录深度(层数)大于7,一定要启用它;要做Unix/linux下的数据盘或开机启动盘,必须使用Rock Ridge Extensions格式(mkisofs -r ),这种格式可以保存文件的相关权限
- -sysid ID:指定光盘的系统ID(长度为32位).系统ID会写入光盘Primary Volume Descriptor的System ID列
- -no-iso-tranlate:如果你的iso里有非iso9660法定的例如包含'~', '-' and '#'等符号的文件名,一定要启用它
- -V 卷标:记录光盘的卷标(长度为128位).此参数会写入光盘Primary Volume Descriptor的Volume ID列
- -volset ID:记录光盘的卷册集识别码(长度为128位).此参数会写入光盘Primary Volume Descriptor的Volume Set ID列
- -vodset-size 光盘张数:指定卷册集所包含的光盘张数(长度为4个位).此参数会写入光盘Primary Volume Descriptor的Volume Set Size列
- -volset-seqno 卷册序号:指定光盘片在卷册集中的序号
- -v :执行时显示详细信息
- -x path:指定的目录不会放入生成的映像文件中
下面举几个例子:
制作linux启动光盘:
制作一个通用的ISO镜像
mkisofs -a -l -J -L -r -o filename.iso dir
以上是我从网上搜索的一些资料,主要参考了http://www.linuxso.com/command/mkisofs.html并整理了一下,有些地方理解的不够准确,请大家多多指教。