无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 8238|回复: 20
打印 上一主题 下一主题

[教程] OSCDIMG制作ISO的详细参数与教程

    [复制链接]
跳转到指定楼层
1#
发表于 2020-3-31 15:37:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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不能一起使用
  • -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选项的默认文本文件。
    例如:-jsC:\readme.txt

③   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.02ISO 9660都将写入磁盘,而且VIDEO_TSAUDIO_TSJACKET_P目录中的所有文件将首先写入,优先于用于此映像的所有其他排序规则。
    (不能与-u1-u2-ur-ue-uf-us-yl选项组合使用)
  • -ut  DVD视频/音频磁盘创建过程中截断映像的ISO 9660部分。使用此选项时,从ISO 9660文件系统仅能看到VIDEO_TSAUDIO_TSJACKET_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, 下载次数: 103)
Oscdimg.zip (437.48 KB, 下载次数: 147)
Oscdimg.z01.zip (1 MB, 下载次数: 148)
Oscdimg.z02.zip (1 MB, 下载次数: 273)






点评

-udfver150 更好!  发表于 2020-3-31 16:59

评分

参与人数 5无忧币 +25 收起 理由
9001 + 5 day day up!
wwj402 + 5 很给力!
2011pglam68 + 5 很给力!
paulan + 5 很给力!
新空气 + 5 赞一个!

查看全部评分

2#
发表于 2020-3-31 16:50:20 | 只看该作者
学习学习
回复

使用道具 举报

3#
发表于 2020-3-31 16:54:28 | 只看该作者
学习一下
回复

使用道具 举报

4#
发表于 2020-3-31 17:12:49 | 只看该作者
很详细的教程,谢谢分享
回复

使用道具 举报

5#
发表于 2020-3-31 17:18:00 | 只看该作者

谢谢分享!
回复

使用道具 举报

6#
发表于 2020-3-31 18:36:26 | 只看该作者
这是干嘛的?
回复

使用道具 举报

7#
发表于 2020-3-31 18:49:06 来自手机 | 只看该作者
xorbootuefi版内置了这个东西吧!
回复

使用道具 举报

8#
发表于 2020-4-9 10:23:00 | 只看该作者
专业,给力。。谢谢分享
回复

使用道具 举报

9#
发表于 2020-4-9 11:07:35 | 只看该作者
详细教程,谢谢分享
回复

使用道具 举报

10#
发表于 2020-4-9 14:49:13 | 只看该作者
好帖,顶起大家看看
回复

使用道具 举报

11#
发表于 2020-5-8 18:10:01 | 只看该作者
多谢!找到很详细的说明
回复

使用道具 举报

12#
发表于 2020-5-10 09:57:26 | 只看该作者
发个辅助的玩具。

oscdimgGUI.zip

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

点评

GUI做得很好,就是运行不了。设置都完成了,运行没反应。 提个小建议,点击选择时最好首先弹出当前目录,要不还得多点击几下选择文件。  详情 回复 发表于 2020-5-10 12:37
回复

使用道具 举报

13#
发表于 2020-5-10 12:37:21 | 只看该作者
wwj402 发表于 2020-5-10 09:57
发个辅助的玩具。

GUI做得很好,就是运行不了。设置都完成了,运行没反应。
提个小建议,点击选择时最好首先弹出当前目录,要不还得多点击几下选择文件。
回复

使用道具 举报

14#
发表于 2020-5-13 17:54:08 | 只看该作者
终结!
增加了配置文件,可以命令行参数运行(参数为配置文件名)。
没怎么测试,命令行可以手动改,然后运行。如果逻辑有问题,就手动吧。

oscdimgGUI.zip

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

回复

使用道具 举报

15#
发表于 2020-8-8 00:51:48 | 只看该作者
非常感谢,学习了
回复

使用道具 举报

16#
发表于 2020-10-12 11:05:13 | 只看该作者
谢谢
回复

使用道具 举报

17#
发表于 2020-10-13 00:51:43 | 只看该作者
谢谢大神的分享
回复

使用道具 举报

18#
发表于 2023-9-23 23:36:16 | 只看该作者
楼主哪里的问题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
回复

使用道具 举报

19#
发表于 2024-3-10 00:36:35 | 只看该作者
好详细的教程。
回复

使用道具 举报

20#
发表于 2024-4-2 09:45:46 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-29 18:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表