本帖最后由 dnomd343 于 2021-1-17 23:25 编辑
本文已更新至个人博客,阅读体验较佳:https://blog.dnomd343.top/oscdimg-usage/
前言与引用说明
这个教程主要讲述Oscdimg的使用方法,同时介绍ISO文件系统的种类和区别,以及如何制作EFI+Legacy双启动ISO映像。文章内容略长且有点晦涩,希望各位可以静下心读一读。当然,里面涉及的参数偏多,实际使用中可能不会全部用到,但对开发一些ISO小工具还是很有帮助的。 ---By Dnomd343 (2020.03.31)
本文借鉴了部分维基百科对ISO文件系统的介绍
ISO映像:https://en.wikipedia.org/wiki/ISO_image
ISO 9660:https://en.wikipedia.org/wiki/ISO_9660
Joliet:https://en.wikipedia.org/wiki/Joliet_(file_system)
UDF:https://en.wikipedia.org/wiki/Universal_Disk_Format
El Torito:https://en.wikipedia.org/wiki/El_Torito_(CD-ROM_standard)
介绍ISO文件的中文资料很乱,各种博客和百科的内容参差不齐且有部分出错,鉴于维基百科的严谨性,以上链接内容均为英文版维基百科内容。不过由于一些客观原因,维基百科在国内无法正常访问,所以已将上述链接网页存为PDF文件,在附件中可供下载。
Oscdimg的参数源于微软的开发者文档和一部分自述文件的补充
中文版:https://docs.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/oscdimg-command-line-options
英文版:https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/oscdimg-command-line-options
微软官网的中文版开发者手册是机器翻译的,经常前言不搭后语,本篇中已重新翻译并校对。
Oscdimg软件提取自Windows ADK (10.1.18362.1),包含64位和32位两个版本(附件中)
ADK安装包下载:https://docs.microsoft.com/zh-cn/windows-hardware/get-started/adk-install
ISO的文件系统
ISO映像是一种光盘的存档文件,数据由一张光盘的每个扇区组成,通常采用后缀名.iso。它未经过压缩,只是逐个复制一张光盘上的数据扇区,然后存储在一个二进制文件中,其数据结构与光盘创建时使用的文件系统相同,其大小以2,048字节为基础单位。但它会忽略控制头和错误纠正数据,因此略小于光盘介质的原始映像。 ISO映像可以包含CD-ROM介质的ISO 9660文件系统或DVD和蓝光光盘使用的UDF(ISO/IEC 13346)文件系统(UDF文件系统的ISO有时候会使用后缀名.udf),即常见的ISO映像有三种文件系统:ISO 9660、Joliet和UDF。
1. ISO 9660 ISO 9660是目前使用最广泛和兼容性最好的光盘文件系统,常被一些硬件和软件供应商称为CDFS(光盘文件系统)。它是国际标准化组织为光盘介质发布的文件系统,在设计上是一种只读的文件系统,所有数据都必须一次性写入到介质中,一旦写入,就没有任何更改存储内容的准备。ISO 9660未使用前32,768个字节(共16个扇区,每个扇区2048字节),这部分区域可用于其他用途。标准规定其文件系统中目录深度不得超过8,并且任何文件的路径长度不得超过255。它分有多个级别,其中Level1与DOS兼容,文件名不得多于8个字符,后缀名不得多于3个字符,目录也不得多于8个字符,而且所有字符只能是26个大写英文字母、10个阿拉伯数字及下划线;而Level2和3中文件名可以达到32个字符。 2. Joliet Joliet是由微软公司提出和实现的光盘文件系统,也是ISO 9660的一种扩展,其主要目的是放宽完全符合ISO 9660要求的文件名限制,它允许文件名最大长度为64个Unicode字符。Windows95以后的Windows操作系统都支持该格式,大部分Linux发行版也可以支持,但是不被MAC支持。 3. UDF UDF(UniversalDisk Format)是由光学存储技术协会开发并维护的光盘文件系统,它实行了ISO/IEC 13346标准,旨在取代ISO 9660,从而支持只读和可写媒体。目前最新版为2.60版本,其中DVD采用了1.02版本作为其标准格式。UDF格式与传统光盘的不同点在于用户可以移除,复制或删除文件,功能上与其他通用文件系统类似。
OSCDIMG工具的详细参数 Oscdimg是微软ADK里的一个命令行工具,可用于创建自定义的ISO映像文件,它支持ISO 9660、Joliet和UDF文件系统。 基本命令行表述为:Oscdimg [ <options> ] <sourceLocation> <targetFile> <sourceLocation> | 指定要创建到的ISO映像文件夹位置。 | <targetFile> | 指定生成的ISO映像文件名称。 |
1.文件系统选项 Oscdimg工具支持三种文件系统格式:ISO 9660、Joliet和UDF。其中ISO 9660选项不能与Joliet或UDF选项组合,Joliet选项不能与ISO 9660选项组合,UDF选项也不能与ISO 9660选项组合。 ① ISO 9660选项 ISO 9660文件系统中,文件名称的长度不能超过30个字符。 注:-d与-nt不能一起使用 - -d 允许小写文件名称,不会强制小写文件的名称为大写。
- -n 允许文件名称长度超过DOS 8.3文件名称。
- -nt 允许与Windows NT 3.51兼容的长文件名。
(DOS8.3即文件名不超过8个字符,扩展名不超过3个字符)
② Joliet选项 Joliet文件系统允许较长的文件名称和Unicode字符,其文件夹深度可以大于8。 注:-j2选项不能与任何UDF选项一起使用。 - -j1 对Joliet Unicode文件名进行编码,在 ISO 9660 命名空间中生成兼容DOS 8.3的文件名,这些文件名可以被 Joliet 系统或传统的ISO 9660系统读取,但是Oscdimg可能会更改ISO 9660名称空间中的一些文件名以符合DOS 8.3的命名限制。Joliet文件系统将具有最多64个字符的Unicode文件名。
- -j2 在无标准ISO 9660名称的情况下对Joliet Unicode文件名进行编码,用于生成只有Joliet文件系统的映像。无法读取 Joliet 的系统只会看到默认的文本文件,提醒用户此映像仅在支持Joliet的计算机上可用。
- -js 覆盖用于-j2选项的默认文本文件。
③ UDF选项
- -u1 生成包含UDF和ISO 9660文件系统的映像,其中ISO 9660文件系统将使用兼容DOS 8.3的文件名写入,UDF文件系统将使用Unicode文件名写入。
- -u2 生成仅包含UDF文件系统的映像。无法读取UDF的系统只会看到默认的文本文件,提醒用户此映像仅在支持UDF的计算机上可用。
- -ur 覆盖用于-u2选项的默认文本文件。
例如:-urC:\Readme.txt -udfver102 指定UDF文件系统版本1.02(支持:Windows 98及更高版本) -udfver150 指定UDF文件系统版本1.50(支持:Windows 2000及更高版本) -udfver200 指定UDF文件系统版本2.00(支持:Windows XP及更高版本) -ue 创建内嵌文件(只能与-u2选项一起使用) -uf 内嵌UDF文件标识符条目(只能与-u2选项一起使用) -us 在可用时创建稀疏文件,更有效地利用磁盘空间(只能与-u2选项一起使用) -yl 使用长分配描述符而非短分配描述符。
2.启动选项 用于创建可启动的ISO映像。 注:单启动项目和多启动项目不能组合在同一命令中。
用于生成单启动的项目的启动选项: - -b<bootSectorFile> 指定El Torito引导扇区文件的位置(不要使用空格)
例如:UEFI : -bC:\winpe_x86\Efisys.bin BIOS : -bC:\winpe_x86\Etfsboot.com - -e 在El Torito编录中禁用软盘模拟。
- -p 指定要用于El Torito编录中平台ID的值。
默认ID为0xEF表示UEFI系统,0x00代表BIOS系统。
用于生成多重引导条目的启动选项: 注:-bootdata选项后必须有引导条目数,每个引导条目都必须通过#来分隔,启动选项之间通过逗号分隔,且每个启动选项都必须指定平台ID的值。 - -bootdata:<num>#defaultbootentry#bootentry2#bootentryN 指定多重引导条目数(不要使用空格)
b<bootSectorFile> 指定El Torito引导扇区文件的位置(不要使用空格) 例如:UEFI : bEfisys.bin BIOS : bEtfsboot.com e 在El Torito编录中禁用软盘模拟。 p 指定要用于El Torito编录中平台ID的值。 默认ID为0xEF表示UEFI系统,0x00代表BIOS系统。 t 指定El Torito负载段。若未指定则默认为0x7C0。
例如:-bootdata:2#p0,bC:\etfsboot.com#pEF,e,bC:\Efisys.bin
这将创建多引导映像,它具有启动etfsboot.com引导代码的x86引导扇区,并且在EFI引导时启动Efisys.bin。
3.优化选项
通过检查编码相同的文件来优化存储。 - -o 通过使用MD5哈希算法来比较每个文件。
- -oc 通过使用二进制来比较每个文件(速度比-o慢)
- -oi 比较文件时,忽略菱形压缩时间戳。
- -os 在创建映像时显示重复的文件。
- -ois 比较文件时,忽略菱形压缩时间戳,且在创建映像时显示重复的文件。
4.顺序选项此选项允许在磁盘上指定文件顺序。 注:-yo选项优先于-y5选项。 - -y5 此选项将首先以逆序在i386目录中写入所有文件。
- -yo<bootOrder.txt> 指定一个包含将放到映像中的文件布局的文本文件(不要使用空格)
例如:-yoC:\temp\bootOrder.txt 注:对于大小超过4.5GB的映像,必须确保启动文件位于映像的开始处。 <bootOrder.txt>的规则: ① 顺序文件应为ANSI格式。 ② 顺序文件应以一个新行结束。 ③ 顺序文件应每行包含一个文件。 ④ 应相对于映像的根目录来指定每个文件。 ⑤ 应以长文件名来指定每个文件。不允许使用短名称。 ⑥ 每个文件路径长度不能超过MAX_PATH,包括卷名称。 ⑦ 并非所有文件都必须列出,没有列出的文件都按所需的顺序排序。
5.DVD视频和音频选项 注:不能与ISO 9660、Joliet或UDF选项组合。 - -uv 在DVD视频/音频磁盘创建过程中指定UDF视频区兼容性,即UDF 1.02和ISO 9660都将写入磁盘,而且VIDEO_TS、AUDIO_TS和JACKET_P目录中的所有文件将首先写入,优先于用于此映像的所有其他排序规则。
(不能与-u1、-u2、-ur、-ue、-uf、-us或-yl选项组合使用) - -ut 在DVD视频/音频磁盘创建过程中截断映像的ISO 9660部分。使用此选项时,从ISO 9660文件系统仅能看到VIDEO_TS、AUDIO_TS和JACKET_P目录。
(不能与-u1、-u2、-ur、-ue、-uf、-us或-yl选项组合使用)
6.消息传送选项
消息传送选项自定义文件和目录信息的显示方式。 - -a 显示文件和目录的分配摘要。
- -os 在创建映像时显示重复的文件。
- -yd 不对具有相同初始64K字节的不同文件发出警告消息。
- -w1 报告所有不符合ISO或不符合Joliet的文件名或深度。
- -w2 报告所有不符合DOS 8.3的文件名。
- -w3 报告所有长度为零的文件。
- -w4 报告所有不符合DOS 8.3的文件名。
7.常规映像创建选项
这些是创建ISO映像的常规选项,可以与单启动或多启动项目选项同时使用。 注:-m与-maxsize选项不能一起使用。 - -c 使用ANSI文件名而不是OEM文件名。
- -g 对所有文件使用通用协调时间 (UCT) 而不是当地时间。
- -h 包含映像源路径下的所有隐藏文件和目录。
- -k 即使一些源文件无法打开也仍然创建映像。
- -x 计算并编码映像中的AutoCRC值。
- -l<volumeLabel> 指定卷标,不超过32个字符(不要使用空格)
例如:-lMyVolume -m 忽略映像的最大大小限制。 -maxsize:<limit> 覆盖映像的默认最大大小。默认大小为74分钟的CD,若使用UDF则没有最大大小(不要使用空格,limit 值以MB为单位) 例如:-maxsize:<4096> 限制映像为 4096 MB。 -q 仅扫描源文件,不会创建映像。 -r 将符号链接解析到其目标位置。 -t<mm/dd/yyyy,hh:mm:ss> 指定映像上所有文件和目录的时间戳(不要使用空格) 例如:-t12/31/2000,15:01:00 -y6 指定目录记录必须在扇区末尾完全对齐。 -yw 打开源文件且可以写共享。
8.示例① 创建基于UEFI的ISO映像文件。 Oscdimg -bC:\winpe\Efisys.bin -pEF -u1 -udfver102 C:\winpe\media C:\winpe\winpe.iso 其中C:\winpe\media是源目录,C:\winpe\winpe.iso是生成的ISO文件路径。
② 创建基于UEFI或基于BIOS的多引导ISO映像文件。 Oscdimg -bootdata:2#p0,e,bEtfsboot.com#pEF,e,bEfisys.bin -u1 -udfver102 C:\winpe\media C:\winpe\winpe.iso 其中etfsboot.com为BIOS(Legacy)模式下的启动文件,Efisys.bin为UEFI模式下的启动文件。
③ 创建指定文件顺序的ISO映像文件。 Oscdimg -m -n -yoC:\temp\bootOrder.txt -bC:\winpe\Efisys.bin C:\winpe\winpe.iso 其中bootOrder.txt包含创建ISO映像的文件列表。
如果不能下载论坛附件,可以从云盘链接下载:https://share.weiyun.com/5IpjL70
由于论坛不能上传1MB以上的文件,Oscdimg.zip拆成了三个zip分卷;论坛对文件后缀名也有限制,请先将Oscdimg.z01.zip、Oscdimg.z02.zip的zip后缀名去除,然后再正常解压。
维基百科资料.zip
(685.38 KB, 下载次数: 115)
Oscdimg.zip
(437.48 KB, 下载次数: 160)
Oscdimg.z01.zip
(1 MB, 下载次数: 161)
Oscdimg.z02.zip
(1 MB, 下载次数: 287)
|