用mkisofs制作iso文件

引用地址:http://hi.baidu.com/bailang3106/blog/item/364aa700bee4d48fe950cdf0.html

 

 

mkisofs是Unix系统中常用来制作ISO映像档的工具,虽然mkisofs的manpage和cdrecord一样,但是常用的选项也只有那几个,现在示范几个mkisofs的语法:

mkisofs -o image_name.iso /home/willie
将/home/willie这个目录制作成image_name.iso映像档。

mkisofs -o ha.iso -r /
将/这个目录制作成ha.iso映像档,并指定为Rock Ridge格式。
使用Rock Ridge格式,可以保存档案相关的权限。

mkisofs -J -r /tmp | cdrecord speed=4 -v -data -
这个范例,除了加上-J选项使用Joliet格式外(可使用unicode储存中文档名),并直接丢给cdrecord作on the fly烧录,省了制作映像档的步骤。


mkisofs(make iso file system)

功能说明:建立ISO 9660映像文件。

   语  法:mkisofs [-adDfhJlLNrRTvz][-print-size][-quiet][-A <应用程序ID>][-abstract <摘要文件>][-b <开机映像文件>][-biblio ][-c <开机文件名称>][-C <盘区编号,磁区编号>][-copyright <版权信息文件>][-hide <目录或文件名>][-hide-joliet <文件或目录名>][-log-file <记录文件>][-m <目录或文件名>][-M <开机映像文件>][-o <映像文件>][-p <数据处理人>][-P <光盘发行人>][-sysid <系统ID >][-V <光盘ID >][-volset <卷册集ID>][-volset-size <光盘总数>][-volset-seqno <卷册序号>][-x <目录>][目录或文件]

  补充说明:mkisofs可将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。

  参  数:
-J   -----Joliet文件系统的光盘.文件名可以用64个汉字或者64个英文组成
-R --------制作linux/unix 的光盘格式.RockRidge 格式
-mac-name -制作Macintosh命令的光盘格式
-g --------制作苹果电脑格式( -apple 相同)
-joliet-long --支持 103个汉字或者103个英文字母的文件名.不限字节数.
-max-iso9660-filenames --ISO9660 格式支持 37个字节的文件名.18个汉字或者37个数字或者37个英文字母. (简写 -max)
-O -----------采用 MD5 空间优化
-x -----------在加入文件中排除的某个文件 (-m 和-exclude 同样作用)
-V "W98SEBOOT" ------设置光盘卷标 ( -volid 同样适用)
-o mycd.iso ---------设置输出文件名
-hide ----------------隐藏ISO9660 文件(在DOS下看不见)
-hkdden --------------设置文件隐藏属性(在DOS下要用 dir
/ah 来看)
-hide-joliet ---------隐藏joliet 文件
-A -------------设定应用程序版本号。和CDWIN刻录软件配合制作使支持中文名的参数(unix/liunx中不要加入此补丁参数也能支持中文)
-gbk4dos-filenames --DOS下支持中文 (简写 -gbk4d)
-gbk4win-filenames ---WIN下支持中文 (简写 -gbk4w)

iso9660文件名命名扩展参数补丁
-l ------允许 ISO9660 格式支持 31个字节的文(如果不加此参数那只支持 12 个字节的文件名。标准的DOS 8.3格式)
-d -----------------忽略文件名周期性,(dikemu 必须用)
-L -----------------允许 ISO9660 格式的文件名能够以'.' 开头名字
-N -----------------忽略文件名版本号 (diskemu 必须用)
-allow-lowercase -----允许有小写字母
-relaxed-filenames ---允许7 个bit的扩展名,除了小写母以外
-allow-multidot -----允许在一个文件名称中带有多个点 象"n..5"

-U ------------------加载以上七个参数合七为一
-D ------------------禁止向深层目录重向定位

启动选项
-hard-disk-boot myhard.img ----启动文件是个硬盘格式的映像文件
-b dos.img --------------------软盘格式启动映像
(-eltorito-boot 相同)
-B dos.img --------------------进入SUN工作站的启动映像
-no-emul-boot -----------------非模拟软盘格式启动(简写 -no-e)
-c -------------重命名boot.catalog文件。
加载dikemu 启动必用参数(应用实例)
-U -c cctrv -no-e -b loader.bin
加载启动参数 -no-e -b loader.bin
必须是这样。loader.bin 必须只能在光
盘根目录下.不能象是ultraiso 中自由定义启动文件目录
(并且ultraiso不能用来修改mkisofs制作的映像,一修改就会造成无法启动)

以下是违法的加入 -no-e -b d:/boot/loader.bin
(错误的加入引导文件)
-no-e -b boot/loader.bin (错误的加入引导文件)
-no-e -b d:/loader.bin (错误的加入引导文件)
加载启动文件loader.bin 只能是-no-e -b loader.bin
(无法更改其loader.bin文件路径)以下是合法的
-no-e -b loader.bin
-no-e -b loader.BIN
-no-e -b Loader.bin
-no-e -b LOADER.BIN
当然了,这时候你还会碰到说是无法找到loader.bin
这个启动文件啊。哈哈
就是还有一个问题就是大小写敏感问题,请往下看有相关大小写敏感问题。


高级应用列表参数
-graft-points -----可以连接列表形式参数的 ( 简写成-gr)
在整个以列表形式来表达中关键性参数.
-path-list list.txt -加入多个文件时候调用list.tx来分别创建加入
-hide-list hide.txt -调用写好的hide.txt中定义的来隐藏文件
-hide-joliet-list hidej.txt -调用hidej.txt中定义的来隐藏文件
-hidden-list hidden.txt -调用hidden.txt中定义的来隐藏文件
-exclude-list exclude.txt -调用exclude.txt来排除定义的文件

mkisofs 命令
example.bat
内容如下(使本光盘支持中文,加参数/R兼容unix/linux 格式)
mkisofs -o example.iso -V "新光盘好啊!" -U -D -R
-gbk4d -gbk4w -gr -path list.txt -hide-joliet-l
hidej.txt -exclude-l exclude.txt


关于列表文件定义
1.问题 加入不同目录中的文件
以 -path list.txt 为例 (-path-list 简写形式就是 -path)
要在光盘中加入 c 盘上的 BOOT.INI NTDETECT.COM NTLDR
三个文件,并且在
制作ISO光盘的时候把这三个文件放进一个名为 bootnt
的文件夹.还要加入
c:/windows/notepad.exe
这个文件放在光盘根目录。加C:/Program
Files/Internet Explorer 放在名为 IE 的文件夹内. 加入
c:/windows/regedit.exe 到 光盘的 创建一个名为
"注册表文件夹/windows注册表"中
解答:


以下是list.txt 的格式
bootnt/=c:/boot.ini
bootnt/=c:/ntdetect.com
bootnt/=c:/ntldr
c:/windows/notepad.exe
ie/=C:/Program Files/Internet Explorer
注册表文件夹/windows注册表/=c:/windows/regedit.exe

2.问题:
加入这个文件夹中应该加入的文件,排除不要加入的文件
以 -exclude-l hidej.txt 为例 (-exclude-list
简写形式就是
-exclude-l)
要想在上面加入的 C:/Program Files/Internet Explorer
中排除MUI这个子
文件夹和 C:/Program Files/Internet Explorer 中
HMMAPI.DLL这个文件。
因为制作这个光盘。我并不需要这二个文件。所以要排除他们


以下是exclude.txt 的格式
C:/Program Files/Internet Explorer/MUI
C:/Program Files/Internet Explorer/HMMAPI.DLL

3.问题 隐藏文件
以 -hide-joliet-l hidej.txt 为例 (-hide-joliet-list
简写形式就是-hide-joliet-l)
要想在windows系统下 光盘中隐藏 上面的C:/ProgramFiles/Internet Explorer文件夹中的子文件 Connection Wizard 和
IEXPLORE.EXE 文件 和c:/BOOT.INI 文件
解答:

以下是hidej.txt 的格式
C:/Program Files/Internet Explorer/Connection Wizard
C:/Program Files/Internet Explorer/IEXPLORE.EXE
c:/boot.ini

隐藏文件的列表文件格式 -hide-joliet-l 和 -hide-l 以及
-hidden-l 格
式基本上是相同的。

要着重说明的一点就是
对于隐藏文件或者隐藏文件夹,mkisofs并不支持中文
文件名或者目录 就是并不能隐藏带有中文命名的文件
,也不支持列表功能加
入文件时候自动创建的文件夹的隐藏.但对自动创建的文件夹中的文件以及字
文件夹的隐藏功能还是可以用的。

大小写敏感问题;
mkisofs对于大小写是敏感的。如果不能掌握一定的技巧的话.就容易出错
对于新加入的 文件是对大小写不敏感的
对于list.txt 中 定义加入的文件是对大小写路径不敏感的.
c:/windows/notepad.exe 也可以写成
C:/Windows/NoTepad.exe 都能起到加
入 windows 目录中 notepad.exe 文件的作用
并且具有初始化路径名大小写的功能。加入的时候如果是NoTepad.exe
,那生
成的ISO文件也是 NoTepad.exe
在hidej.txt
中隐藏文件的时候要根据上面加入时候的定义的大小写方式路径
如果想要隐藏这个 C:/Windows/NoTepad.exe 这个文件
那必须引用上面加入
时候命名的路径名
hidej.txt 中内容
C:/Windows/NoTepad.exe
不能写成 c:/windows/notepad.exe 这样就 mkisofs
找不到这个文件。也就
无法隐藏这个 NoTepad.exe

比如张启动光盘 diskemu 形式的。启动文件全在 e:/bt/boot
文件夹内
命令如下:

隐藏 loader.bin 和 boot 文件夹 命令
mkisofs -o bt.iso -U -D -gbk4w -gbk4d -no-e -b
loader.bin -hide-joliet e:/Bt/boot -hide-joliet
loader.bin e:/Bt e:/bt/boot/loader.bin

没有隐藏loader.bin 和 boot 文件夹 命令
mkisofs -o bt.iso -U -D -gbk4w -gbk4d -no-e -b
loader.BIN -hide-joliet e:/Bt/boot -hide-joliet
loader.bin e:/bt e:/bt/boot/loader.BIN

哈哈。就是大小敏感所造成的,起主导作用的还是在定义加入文件时候所命名
的大小写的文件名。加入的时候是 e:/bt 而要隐藏
e:/Bt/boot 就应该写成
-hide-joliet e:/bt/boot 隐藏的时候主要根据e:/bt
所写的大小写。

对于exclude.txt
中所面临的大小写问题,也是和上面一样解决啦!:)

在列表形式表达路径的分隔符请用"/" 不要用"/"
他和DOS的分隔符是相反的.

上面的应用参数如下:
在mkisofs 根目录下建立.分别是 example.bat
list.txt exclude.txt hidej.txt 4个新文件

example.bat 内容如下 (使本光盘支持中文,兼容unix/linux
格式)
mkisofs -o example.iso -V "新光盘好啊!" -U -D -R -D
-gbk4d -gbk4w -gr -path list.txt -hide-joliet-l
hidej.txt -exclude-l exclude.txt

list.txt 内容如下
bootnt/=c:/boot.ini
bootnt/=c:/ntdetect.com
bootnt/=c:/ntldr
c:/windows/notepad.exe
ie/=C:/Program Files/Internet Explorer
注册表文件夹/windows注册表/=c:/windows/regedit.exe

exclude.txt 内容如下
C:/Program Files/Internet Explorer/MUI
C:/Program Files/Internet Explorer/HMMAPI.DLL

hidej.txt 内容如下
C:/Program Files/Internet Explorer/Connection Wizard
C:/Program Files/Internet Explorer/IEXPLORE.EXE
c:/boot.ini

大家可以自己动手试一下.可能出现的问题就是定义的文件名对大小写敏感的
问题!.


可忽略的参数
-v(-verbose) --------在命令执行时显示详细的信息
(可有可无)
-log-file log.txt
----在当前目录创建一个日志文件log.txt(可有可无)
-copyright "陈华版权"-设置文件版本信息 (可有可无)
-debug ---------------显示生成ISO进程( 可有可无)
-quiet ---------------生成映像时没有进度提示(可有可无)

你可能感兴趣的:(c,windows,image,dos,扩展,wizard)