无忧启动论坛

标题: OSCDIMG制作ISO的详细参数与教程 [打印本页]

作者: dnomd343    时间: 2020-3-31 15:37
标题: OSCDIMG制作ISO的详细参数与教程
本帖最后由 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)
UDFhttps://en.wikipedia.org/wiki/Universal_Disk_Format
El Toritohttps://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不能一起使用
(DOS8.3即文件名不超过8个字符,扩展名不超过3个字符)

②   Joliet选项
Joliet文件系统允许较长的文件名称和Unicode字符,其文件夹深度可以大于8。
    注:-j2选项不能与任何UDF选项一起使用。
③   UDF选项
2.启动选项
用于创建可启动的ISO映像。
    注:单启动项目和多启动项目不能组合在同一命令中。

用于生成单启动的项目的启动选项:
      例如:UEFI : -bC:\winpe_x86\Efisys.bin
                BIOS : -bC:\winpe_x86\Etfsboot.com
      默认ID为0xEF表示UEFI系统,0x00代表BIOS系统。

用于生成多重引导条目的启动选项:
    注:-bootdata选项后必须有引导条目数,每个引导条目都必须通过#来分隔,启动选项之间通过逗号分隔,且每个启动选项都必须指定平台ID的值。
例如:-bootdata:2#p0,bC:\etfsboot.com#pEF,e,bC:\Efisys.bin
这将创建多引导映像,它具有启动etfsboot.com引导代码的x86引导扇区,并且在EFI引导时启动Efisys.bin。

3.优化选项
通过检查编码相同的文件来优化存储。

4.顺序选项
此选项允许在磁盘上指定文件顺序。
    注:-yo选项优先于-y5选项。
       例如:-yoC:\temp\bootOrder.txt
    注:对于大小超过4.5GB的映像,必须确保启动文件位于映像的开始处。
  <bootOrder.txt>的规则:
    ①  顺序文件应为ANSI格式。
    ②  顺序文件应以一个新行结束。
    ③  顺序文件应每行包含一个文件。
    ④  应相对于映像的根目录来指定每个文件。
    ⑤  应以长文件名来指定每个文件。不允许使用短名称。
    ⑥  每个文件路径长度不能超过MAX_PATH,包括卷名称。
    ⑦  并非所有文件都必须列出,没有列出的文件都按所需的顺序排序。

5.DVD视频和音频选项
    注:不能与ISO 9660、Joliet或UDF选项组合。

6.消息传送选项
消息传送选项自定义文件和目录信息的显示方式。

7.
常规映像创建选项
这些是创建ISO映像的常规选项,可以与单启动或多启动项目选项同时使用。
    注:-m-maxsize选项不能一起使用。
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)







作者: 新空气    时间: 2020-3-31 16:50
学习学习
作者: Liberation    时间: 2020-3-31 16:54
学习一下
作者: EmEditor9    时间: 2020-3-31 17:12
很详细的教程,谢谢分享
作者: ehaohu    时间: 2020-3-31 17:18

谢谢分享!
作者: liwei_show    时间: 2020-3-31 18:36
这是干嘛的?
作者: my9823    时间: 2020-3-31 18:49
xorbootuefi版内置了这个东西吧!
作者: pcfan120    时间: 2020-4-9 10:23
专业,给力。。谢谢分享
作者: hjm6624669    时间: 2020-4-9 11:07
详细教程,谢谢分享
作者: qitiandashe1020    时间: 2020-4-9 14:49
好帖,顶起大家看看
作者: 9001    时间: 2020-5-8 18:10
多谢!找到很详细的说明
作者: wwj402    时间: 2020-5-10 09:57
发个辅助的玩具。

oscdimgGUI.zip

970.07 KB, 下载次数: 45, 下载积分: 无忧币 -2


作者: 9001    时间: 2020-5-10 12:37
wwj402 发表于 2020-5-10 09:57
发个辅助的玩具。

GUI做得很好,就是运行不了。设置都完成了,运行没反应。
提个小建议,点击选择时最好首先弹出当前目录,要不还得多点击几下选择文件。
作者: wwj402    时间: 2020-5-13 17:54
终结!
增加了配置文件,可以命令行参数运行(参数为配置文件名)。
没怎么测试,命令行可以手动改,然后运行。如果逻辑有问题,就手动吧。

oscdimgGUI.zip

987.82 KB, 下载次数: 68, 下载积分: 无忧币 -2


作者: rahai    时间: 2020-8-8 00:51
非常感谢,学习了
作者: gggzly    时间: 2020-10-12 11:05
谢谢
作者: linux爱好者    时间: 2020-10-13 00:51
谢谢大神的分享
作者: wuming520    时间: 2023-9-23 23:36
楼主哪里的问题ERROR: Could not open boot sector file "d:\mkos\os\efi\microsoft\boot\microsoft\boot\efisys.bin" Error 3: The system cannot find the path specified.报错oscdimg -L Win7 -m -u2 -bootdata:2#p0,e,bd:\mkos\os\boot\etfsboot.com#pEF,e,bd:\mkos\os\efi\microsoft\boot\microsoft\boot\efisys.bin d:\mkos\os d:\mkos\Windows7.ISO
作者: 水吾境界    时间: 2024-3-10 00:36
好详细的教程。
作者: hehuiying    时间: 2024-4-2 09:45
谢谢分享
作者: 无犹启动    时间: 2024-5-9 11:45
谢谢分享




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3