如何从Linux创建CD ISO镜像

时间:2020-03-05 15:27:13  来源:igfitidea点击:

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