如何从Linux创建CD ISO镜像
Linux中的MKISOFS命令用于在CD-ROM设备上创建用于写入的文件系统。
CDRecord实用程序实际将刻录磁盘。
mkisofs命令准备要在媒体上刻录的文件。
MKISOFS创建ISO文件,它是光盘的图像文件(存档)。
本教程在Linux中解释了Mkisofs工具以创建ISO镜像。
使用mkisofs.
根据Mkisofs命令的手册页
“该mkisofs的命令创建一个混合ISO9660/ JOLIET/ HFS文件系统具有可选的Rock Ridge属性”。
“mkisofs的需要给定的目录树的快照,并产生二进制图像时写入到一个块装置,其将对应于一个或ISO9660文件系统HFS”。
ISO9660文件系统有一些限制
文件名必须为8.3格式,例如:文件名可以使用大写字母,数字和下划线的3个字符扩展名的最多8个字符。
最大目录深度为8.
文件名不能具有任何空格。
在文件名中允许最大一个点。
目录不包含任何圆点。
创建ISO9660文件时,文件名将被映射如下
文件名被截断为8个字符。
除最后一个之外的文件名中的所有点都被翻译为下划线。
将文件名已添加到文件名为; n。
例如,'initrd-laull.img'将被映射到'initrd_l.img'。
在RRIP(摇滚垄断交换协议)中扩展允许
更长的文件名(高达255个字节)和允许字符的限制较少(对小写等支持)UNIX样式文件模式,用户ID和组ID和文件时间戳支持符号链接和设备文件更深入的目录层次结构(超过8个级别)高效存储稀疏文件
(来自维基百科)
默认情况下,MKISOFS命令将输出转储在stdout上。
输出文件名可以用-o开关给出。
使用mkisofs的一个简单示例:
$mkisofs -o bootiso.iso /boot INFO: UTF-8 character encoding detected by locale settings. Assuming UTF-8 encoded filenames on source filesystem, use -input-charset to override. mkisofs: Symlink /boot/grub/menu.lst ignored - continuing. Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 4096 Path table size(bytes): 38 Max brk space used 19000 5078 extents written (9 MB)
如何列出ISO文件的内容
可以使用"isoInfo"(使用"P7Zip"提取)列出ISO文件的内容。
以下命令将列出ISO文件的内容。
$isoinfo -l -i bootiso.iso
以下命令将文件从"bootiso.iso"文件中提取到"提取_folder"。
z x -o extracted_folder bootiso.iso
在目录上挂载ISO文件
让ISO文件登录到目录。
运行以下命令:
$mount -o loop bootiso.iso looped
/boot目录的原始内容是:
$ls /boot/ config-2.6.18-238.el5 grub initrd-2.6.18-238.el5.img initrd-latest.img lost+found symvers-2.6.18-238.el5.gz System.map-2.6.18-238.el5 vmlinuz-2.6.18-238.el5
文件名映射如下:
$ls looped/ config_2.el5 grub initrd_2.img initrd_l.img lost_fou symvers_.gz system_m.el5 vmlinuz_.el5 _vmlinuz.hma
在显示这些内容的同时,大写文件名映射到小写。
"-R""选项告诉MKISOFS使用Rock Ridge协议。
mkisofs的其他有用选项是:
-L - allow dot files (hidden) -l - allow full 31 character filenames. -allow-lowercase - allows lower case characters to appear in iso9660 filenames. -allow-multidot - allows more than one dot to appear in filenames. -input-charset - specify a character set.
现在,使用这些选项:
$mkisofs -l -L -input-charset default -allow-lowercase -allow-multidot -o bootiso.iso /boot mkisofs: The option '-L' is reserved by POSIX.1-2001. mkisofs: The option '-L' means 'follow all symbolic links'. mkisofs: Mkisofs-2.02 will introduce POSIX semantics for '-L'. mkisofs: Use -allow-leading-dots in future to get old mkisofs behavior. Warning: creating filesystem that does not conform to ISO-9660. mkisofs: Symlink /boot/grub/menu.lst ignored - continuing. Total translation table size: 0 Total rockridge attributes bytes: 0 Total directory bytes: 4096 Path table size(bytes): 40 Max brk space used 0 5078 extents written (9 MB)
$mount -o loop bootiso.iso looped/
$ls -a looped/ . .. config_2.6.18_238.el5 grub initrd_2.6.18_238.el5.img initrd_latest.img lost_found symvers_2.6.18_238.el5.gz system.map_2.6.18_238.el5 vmlinuz_2.6.18_238.el5 .vmlinuz_2.6.18_238.el5.hmac