无忧启动论坛

标题: UEFI/BIOS双启ISO制作脚本(mkisofs) [打印本页]

作者: hilsonma    时间: 2020-4-1 11:49
标题: UEFI/BIOS双启ISO制作脚本(mkisofs)
本帖最后由 hilsonma 于 2021-4-20 01:50 编辑
  1. @echo off
  2. set bios=-no-emul-boot -boot-load-size 4 -b grldr
  3. set uefi=-eltorito-alt-boot -no-emul-boot -eltorito-platform efi -b efi.img
  4. set iso=-o z.iso
  5. set dir=%1
  6. if %1a==a set dir=iso1
  7. set iso9660x=-U -max-iso9660-filenames -D
  8. set RR=-R
  9. set joliet=-J -joliet-long -hide-joliet boot.catalog
  10. pushd %~dp0
  11. bin\mkisofs %iso9660x% %RR% %joliet% %bios% %uefi% %iso% %dir%
复制代码


支持拖放,将要打包成iso的内容放到独立的文件夹,将文件夹拖放到脚本上,即会将文件夹打包成iso
没有拖放就默认将iso1文件夹打包成iso,iso1是pe打包模板,将wim镜像改名boot.wim替换到iso1\boot运行脚本即可打包
默认打包生成的文件名为z.iso

要打包的文件夹里必须有grldr和efi.img这两个启动文件

grldr的内置菜单可以使用bootice修改,可以链接其他引导。
不建议跳过grldr直接使用其他引导,因为mkisofs+grldr的兼容性更好,成功率更高。

efi.img的内容可以使用WinImage修改,将其他efi文件改名为bootx64.efi来替换,也可添加32位引导文件bootia32.efi,efi.img的内容越简单越好。

mkisofs.7z (2.54 MB, 下载次数: 1498)

WinImage_Portable.7z (1.69 MB, 下载次数: 1091)
作者: 2010sya    时间: 2020-4-1 11:56
支持
作者: dony2006    时间: 2020-4-1 13:01
行動表達~ ~ 感谢分享!
╰○︿′
* ︿)
  〈
~~~~~









作者: kuer    时间: 2020-4-1 14:25
感谢分享!!
作者: myminr    时间: 2020-4-1 16:27
很专业!!!
作者: 小虎牙    时间: 2020-4-1 18:06
好东西 顶起来
作者: Liberation    时间: 2020-4-1 18:59
感谢分享
作者: tyhsg    时间: 2020-4-1 22:19
感谢分享
作者: kuer    时间: 2020-4-2 01:06
非常好用~!!
作者: langyun    时间: 2020-4-2 08:44
专业帮顶

^_^
作者: 879792799    时间: 2020-4-2 19:39
支持大大
作者: 879792799    时间: 2020-4-2 19:39
支持大大
作者: shan    时间: 2020-4-2 20:08
老大给力,收藏备用。
作者: liuyindou    时间: 2020-4-2 20:39
谢谢分享。
作者: singel    时间: 2020-4-5 00:14
感谢分享!
作者: longpanda    时间: 2020-4-6 20:40
给楼主反馈一个问题哈
这个 mkisofs的版本做出来的 ISO在UEFI下虽然能启动,但是并不是100%符合可启动ISO文件的规范(即 ELTORITO规范)。
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=419840&pid=4027576&fromuid=572792

主要是-b efi.img 这个参数,应该用 -e efi.img这个参数,但是这个版本的mkisofs不支持这个参数, 在Linux上是支持-e这个参数的。
我也在找,看看有没有新版本的Windows下的mkisofs.exe可用。




作者: xbwin96e    时间: 2020-4-6 20:44
试试
作者: 窄口牛    时间: 2020-4-6 23:56
用oscdimg。
作者: hilsonma    时间: 2020-4-7 00:00
本帖最后由 hilsonma 于 2020-4-10 00:05 编辑
longpanda 发表于 2020-4-6 20:40
给楼主反馈一个问题哈。
这个 mkisofs的版本做出来的 ISO在UEFI下虽然能启动,但是并不是100%符 ...

已更新1楼脚本代码,但附件一直不能更新,不知论坛什么问题,明天再试。(附件已更新)

你可以按照1楼的代码修改之前的版本,就是添加了一个参数 -eltorito-platform efi
请添加此参数后再试生成的iso是否符合规范。

我不懂使用你的查看方式,试过 010-editor 也看不到你说的信息。
作者: hilsonma    时间: 2020-4-7 00:05
窄口牛 发表于 2020-4-6 23:56
用oscdimg。

我之前也是使用oscdimg,但后来发现bios启动,mkisofs+grldr比oscdimg更容易成功,而且mkisofs打包比oscdimg快得多。
作者: kuer    时间: 2020-4-7 02:26
hilsonma 发表于 2020-4-7 00:00
已更新1楼脚本代码,但附件一直不能更新,不知论坛什么问题,明天再试。

你可以按照1楼的代码修改之前 ...

大佬厉害!我用你更新的代码  问题完美解决!期待你更多更好的作品!你这个脚本打包出来的ISO 体积很小!非常好!!!!!
http://bbs.wuyou.net/forum.php?m ... &fromuid=572792
作者: 窄口牛    时间: 2020-4-7 07:09
还有这区别啊,受教。
作者: longpanda    时间: 2020-4-7 09:41
本帖最后由 longpanda 于 2020-4-7 09:52 编辑
hilsonma 发表于 2020-4-7 00:00
已更新1楼脚本代码,但附件一直不能更新,不知论坛什么问题,明天再试。

你可以按照1楼的代码修改之前 ...

修改过之后就OK了。多谢楼主! 那个查看的方式是我自己写的小程序解析的。
可以用010Editor, 直接Ctrl+F 搜索,选择 Hex Bytes类型, 搜索   91EF010000000000  这个二进制串, 能搜到的(唯一一处)就是符合的。



作者: Anson4    时间: 2020-4-7 10:23
hilsonma 发表于 2020-4-7 00:05
我之前也是使用oscdimg,但后来发现bios启动,mkisofs+grldr比oscdimg更容易成功,而且mkisofs打包比oscd ...

貌似 oscdimg+bootmgr 的启动成功率也是蛮高的
作者: hilsonma    时间: 2020-4-7 13:24
longpanda 发表于 2020-4-7 09:41
修改过之后就OK了。多谢楼主! 那个查看的方式是我自己写的小程序解析的。
可以用010Editor, 直接Ctrl+F ...

谢谢。
找到了。010editor 和 winhex 都找得到,查找十六进制数值 91EF010000000000
不同的iso偏移地址可能会不一样
作者: 2013mqqdg    时间: 2020-4-7 13:55
牛啊
作者: hhh333    时间: 2020-4-8 09:23
这个用UI编辑后EFI会失效,而oscdimf不会。大致是这个只是放efi.img的指针,而另一个是直接把efi.img放启动区的(我是这么理解的)。

作者: 窄口牛    时间: 2020-4-8 09:53
我还是觉得oscdimg的好
主要这个参数太复杂
oscdimg打包g4d你要用那个引导的bin打包。给你个单文件的mkiosfs

mkisofs.rar (118.21 KB, 下载次数: 160)
作者: hilsonma    时间: 2020-4-8 12:01
窄口牛 发表于 2020-4-8 09:53
我还是觉得oscdimg的好
主要这个参数太复杂
oscdimg打包g4d你要用那个引导的bin打包。给你个单文件的mkio ...

谢谢。
作者: hjj888    时间: 2020-4-11 18:11
支持!下载试试一下
作者: wlh1117    时间: 2020-5-6 22:38
这个不错,试试
作者: ai20110304    时间: 2020-5-7 07:17
好  顶呱呱
作者: 9001    时间: 2020-5-8 00:11
由grldr转bootmgr感觉有点多余,能否提取bios下引导bootmgr的引导代码出来替换grldr,这样做应该不难吧
作者: 9001    时间: 2020-5-8 00:18
Anson4 发表于 2020-4-7 10:23
貌似 oscdimg+bootmgr 的启动成功率也是蛮高的

鱼大把包包贴上来呗
作者: Anson4    时间: 2020-5-8 12:31
9001 发表于 2020-5-8 00:18
鱼大把包包贴上来呗

oscdimg及其使用方法,坛子里有好多啊。
作者: smmxlsq    时间: 2020-5-26 10:34
感谢分享
作者: acerken    时间: 2020-6-20 22:10
支持大神
作者: 双响炮    时间: 2020-8-13 16:54
二次收藏了
作者: wu-sc    时间: 2020-8-16 16:13
很实用,修改好的pe可以自己打包了。谢谢分享。
作者: macowen    时间: 2020-8-20 11:57
下载实用中  谢谢楼主!!
作者: tuxicool    时间: 2020-9-21 16:08
感谢分享!!1
作者: vuthang12345    时间: 2020-12-1 14:46
Can you change the path?

@echo off
set bios=-no-emul-boot -boot-load-size 4 -b grldr
set uefi=-eltorito-alt-boot -no-emul-boot -eltorito-platform efi \Nasi\efi.img
set iso=-o z.iso
set dir=%1
if %1a==a set dir=iso1
set iso9660x=-U -max-iso9660-filenames -D
set RR=-R
set joliet=-J -joliet-long -hide-joliet boot.catalog
pushd %~dp0
bin\mkisofs %iso9660x% %RR% %joliet% %bios% %uefi% %iso% %dir%
作者: AKDLJAFHIO    时间: 2020-12-1 14:51

作者: hilsonma    时间: 2020-12-1 16:47
vuthang12345 发表于 2020-12-1 14:46
Can you change the path?

@echo off

When you build an iso from a directory with mkisofs, the boot file(s) should be in the root of that directory.
Or you should get an error: file could not be found in the target tree.
So, let it be -b grldr and -b efi.img,do not make changes.
作者: likehell    时间: 2020-12-30 15:27
本帖最后由 likehell 于 2020-12-30 15:35 编辑

关于可以启动的iso文件的引导信息,除了使用ultraiso,是否还有其他方法获取?提取的iso引导文件是*.bif文件。和您帖子中的介绍的引导文件能够互换使用么?使用ultraiso打开iso文件如下:

这个是iso根目录。


这个是BOOT文件夹的内容。

作者: hilsonma    时间: 2020-12-30 15:41
本帖最后由 hilsonma 于 2020-12-30 15:57 编辑
likehell 发表于 2020-12-30 15:27
关于可以启动的iso文件的引导信息,除了使用ultraiso,是否还有其他方法获取?提取的iso引导文件是*.bif文 ...

你把win7pe.wim提取出来,改名为boot.wim,替换到我的打包模板中,运行一次打包脚本,就可以生成z.iso
你可以将生成的z.iso改名成新的 win7pe.iso

注:1楼的附件mkisofs.7z是iso打包脚本带模板,里面的iso1文件夹就是打包模板,已经包含引导信息,只要将wim文件改名为boot.wim替换到 iso1/boot/ 里后,执行一次mkiso.cmd就会生成z.iso

你这个win7pe.iso是不支持uefi启动的,如果要支持uefi启动,就要将win7pe.wim解包到一个文件夹,添加uefi支持,再重新打包成新的win7pe.wim
如果需要iso,就将新的win7pe.wim改名为boot.wim替换到iso打包模板中,重新生成新的 win7pe.iso
这样,新的win7pe.wim 和 win7pe.iso 就支持bios/uefi 双启了。

其实我一般是使用wim文件的,很少使用iso文件。
你既然对iso文件有兴趣,就用以上方法尝试亲自制作一个iso文件,制作成功后,如果有兴趣,可以尝试直接使用wim文件。
作者: likehell    时间: 2020-12-31 10:52
本帖最后由 likehell 于 2020-12-31 11:09 编辑
hilsonma 发表于 2020-12-30 15:41
你把win7pe.wim提取出来,改名为boot.wim,替换到我的打包模板中,运行一次打包脚本,就可以生成z.iso
...

好的。,一下解决了很多的问题。直接使用wim? 是指做成u盘挂载么?

作者: hilsonma    时间: 2020-12-31 11:33
本帖最后由 hilsonma 于 2020-12-31 12:00 编辑
likehell 发表于 2020-12-31 10:52
好的。,一下解决了很多的问题。直接使用wim? 是指做成u盘挂载么?

你要pe是做什么用的呢?应该是做维护用的吧。
维护电脑一般要准备一个启动U盘,以备电脑硬盘无法启动时使用。
我就把这个pe的wim文件放到U盘上,做成启动U盘,使用U盘开机就进入这个pe系统。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=419354

电脑可以开机进入操作系统的话,我就会放这个pe的wim文件到硬盘上,并修改启动菜单,设定默认开机进常规系统,按键选择菜单项进入这个pe
这样,经过自己维护的电脑,只要硬盘不坏,进不了常规系统也能进pe进行维护,不需要使用启动u盘。
启动U盘是备用的,遇到无法进系统(常规系统和pe系统)的电脑要进行维护时使用。

我就是这样直接使用wim,不用打包成iso.

按我的理解,iso文件原先是用来刻录到光盘上的。后来也用来量产启动U盘。再后来就有一些启动U盘制作工具也使用iso文件来制作启动U盘。这些都是要将U盘初始化的,会丢失U盘数据。

我现在制作启动U盘是无损制作的,只是添加引导代码,让U盘能启动,能引导wim文件就行了。
作者: wilot    时间: 2021-1-1 12:42
谢谢您
作者: djkzj    时间: 2021-1-9 10:30
学习了。
作者: zhangwm1    时间: 2021-3-1 09:57
很给力!
作者: hilsonma    时间: 2021-3-2 15:06
本帖最后由 hilsonma 于 2021-3-2 15:08 编辑
9001 发表于 2020-5-8 00:11
由grldr转bootmgr感觉有点多余,能否提取bios下引导bootmgr的引导代码出来替换grldr,这样做应该不难吧

你可以尝试将 set bios=-no-emul-boot -boot-load-size 4 -b grldr 改成
set bios=-no-emul-boot -b bootmgr_cd.bin
并将 bootmgr_cd.bin 放到模板文件夹中 (将grldr删去,改用bootmgr_cd.bin)

不过我没有试过,不知能不能成功,而且由于bootmgr的光盘引导程序(bootmgr_cd.bin)是4K,不知能不能使用 -boot-load-size 4 参数,不使用此参数的话可能会有一些老电脑无法启动此光盘镜像。

如果喜欢直接使用bootmgr,建议使用另一个iso制作工具oscdimg.
作者: xuming98    时间: 2021-3-10 18:45
请教大师,有些ISO支持双启,但用siso模块启动卡1,命令如下

command siso ISO="/BOOT/10PE.ISO  "    FDA="F6IMG /SRS"     SWAP=Y  e820=3  boot=cd
路径没有错误,有的iso能启动,有的卡1

难道ISO不够标准?
作者: hilsonma    时间: 2021-3-11 01:42
xuming98 发表于 2021-3-10 18:45
请教大师,有些ISO支持双启,但用siso模块启动卡1,命令如下

command siso ISO="/BOOT/10PE.ISO  "    F ...

这个问题我也不清楚。我对iso也不是很了解,我一般是直接使用wim文件的。

如果怀疑iso不够标准,可以尝试用本贴的方法重新制作一次。

或者你尝试改变一下siso的命令参数,看是不是参数的原因。
作者: 2012wjia    时间: 2021-3-26 04:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: kuer    时间: 2021-4-18 07:42
从去年到现在一直用你这个脚本打包iso,体积小,启动顺利,很不错!但昨天用19043.21354镜像制作PE,打包wim文件为iso,启动的时候提示无法验证winload.exe的数字签名!反复重启!无法正常启动!(我用别人的21345PE用这个脚本打包也是一样的问题)换了另外一个脚本打包,能正常启动!望大佬能修改一下!

01.jpg (147.6 KB, 下载次数: 203)

01.jpg

作者: kuer    时间: 2021-4-18 07:43
从去年到现在一直用你这个脚本打包iso,体积小,启动顺利,很不错!但昨天用19043.21354镜像制作PE,打包wim文件为iso,启动的时候提示无法验证winload.exe的数字签名!反复重启!无法正常启动!(我用别人的21345PE用这个脚本打包也是一样的问题)换了另外一个脚本打包,能正常启动!望大佬能修改一下!

01.jpg (147.6 KB, 下载次数: 191)

01.jpg

作者: hilsonma    时间: 2021-4-18 10:59
kuer 发表于 2021-4-18 07:42
从去年到现在一直用你这个脚本打包iso,体积小,启动顺利,很不错!但昨天用19043.21354镜像制作PE,打包wi ...

你可以尝试将新的bootmgr替换到模板中,然后再打包,看看是否能正常启动。
或者将你的pe发一个文叔叔链接给我试试。
作者: kuer    时间: 2021-4-18 20:05
hilsonma 发表于 2021-4-18 10:59
你可以尝试将新的bootmgr替换到模板中,然后再打包,看看是否能正常启动。
或者将你的pe发一个文叔叔链 ...

替换新的bootmgr  问题解决了!谢谢!
作者: 2013mqqdg    时间: 2021-4-19 01:39
专业,感谢分享,
作者: ananpr2000    时间: 2021-4-19 08:44
谢谢分享
作者: icevan    时间: 2021-4-23 00:17
谢谢分享脚本。我发现了一个不太完美的小问题。-hide-joliet boot.catalog -hide-joliet efi.img可惜生成的文件里这两个文件都在。我用的WIN10系统。
作者: 蓝星明月    时间: 2021-5-19 23:10
谢谢分享!!!
作者: chinland    时间: 2021-5-21 09:16
最近在学习自己写代码制作一个可以刻录双启动的软件,楼主这资料很好啊。
作者: f2021z    时间: 2021-6-25 14:29
感谢分享!!
作者: 2011wolfsina    时间: 2021-6-27 09:27
制作成功,但是efi里面bootx64.efi大于2.8M如何处理?有没有efi启动直接指向ISO内部/efi/boot/bootx64.efi(修改过)的方法?
作者: hilsonma    时间: 2021-6-28 11:32
2011wolfsina 发表于 2021-6-27 09:27
制作成功,但是efi里面bootx64.efi大于2.8M如何处理?有没有efi启动直接指向ISO内部/efi/boot/bootx64.efi ...

据我所知是没有直接指向iso内部的bootx64.efi,都是引导镜像内的bootx64.efi
如果bootx64.efi大于2.88M可以使用winimage制作非标镜像,不限大小。但还是建议尽量使用小些的,担心启动兼容问题,虽然我也没有测试过。我只试过大于2.88M的非标镜像,在我的电脑可以启动。
作者: AndyChen    时间: 2021-7-29 17:30
本帖最后由 AndyChen 于 2021-7-29 17:34 编辑

复制boot.wim到指定文件夹,执行脚本,运行启动出错,如图。

微信图片_20210729173009.png (979.84 KB, 下载次数: 200)

微信图片_20210729173009.png

作者: hilsonma    时间: 2021-7-29 21:50
AndyChen 发表于 2021-7-29 17:30
复制boot.wim到指定文件夹,执行脚本,运行启动出错,如图。

1.检查这个boot.wim本身的文件结构,里面是否有 \Windows\System32\boot\winload.efi
如果没有的话需要添加这个文件才能支持UEFI启动

2.如果有这个文件的话检查一下这个boot.wim是不是比较新版的,如果是比较新的pe,可能我的制作模板里的bootmgfw.efi 版本太旧不匹配,请用新版的bootmgfw.efi替换。
作者: rahai    时间: 2022-1-4 02:13
感谢分享!!
作者: zhaoqiuchan    时间: 2022-2-16 10:28
感谢分享!!
作者: 创新科技2015    时间: 2022-3-20 01:26
        很给力!
作者: 2010wadee    时间: 2022-3-28 12:55
有PE是iso的,刚好需要~谢谢分享
作者: mssr522    时间: 2022-4-1 18:19
这个不错哦
作者: 21878526    时间: 2022-4-14 21:12
支持一下,、、、
作者: wuming520    时间: 2022-4-24 17:24
技术贴支持学习一下
作者: 春梦无痕    时间: 2022-12-9 21:03
求教个问题,怎么去掉那个加载的进度条
作者: fujing52    时间: 2022-12-11 16:26
不错的文章,学习了
作者: hilsonma    时间: 2022-12-11 21:07
春梦无痕 发表于 2022-12-9 21:03
求教个问题,怎么去掉那个加载的进度条

加载的进度条是winpe本身的,也就是bootmgfw.efi/bootmgr的,我也不懂怎么去掉。
作者: amsdre    时间: 2022-12-18 16:19
感谢分享
作者: 求道者    时间: 2023-1-28 23:52
本帖最后由 求道者 于 2023-1-29 01:34 编辑

把所有的东西都塞到FAT32分区,然后让光盘引导程序去FAT32找G4D,不知道行不行。
很烦,苹果UEFI只加载LUN0。
量产CD反而增加了不兼容。


作者: 苍龙天涯    时间: 2023-1-29 13:17
ok
作者: iaanqrm    时间: 2023-1-29 13:19

作者: hawks    时间: 2023-3-21 22:10
好东西 顶起来
作者: same2223    时间: 2023-4-24 21:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 丶丶黑白格子    时间: 2023-4-24 23:33

感谢分享!
作者: hanchi123    时间: 2023-4-26 09:10
感谢分享
作者: seeimpact153    时间: 2023-4-28 01:12
谢谢分享
作者: rongtj    时间: 2023-4-28 11:00
支持

作者: 新手菜鸟    时间: 2023-4-28 13:18
感谢分享
作者: yyz2191958    时间: 2023-4-28 15:39
支持支持
作者: 新建    时间: 2023-5-15 06:29
感谢楼主的分享
作者: 119799262    时间: 2023-8-7 21:35
超级想下载啊 网上各种搜索都找不到结果
作者: 119799262    时间: 2023-8-7 21:35
一定要下载一下   无忧币不够用啊
作者: 2010yuhongxi    时间: 2023-9-4 16:21
谢谢分享
作者: feirenraoyuan    时间: 2024-1-20 21:50
下载试试
作者: wushuangniao1    时间: 2024-4-14 00:00
KANKANKANKAN
作者: liuzhaoyzz    时间: 2024-4-23 17:51
请问下-b efi.img,这个参数,必须接img镜像吗?怎么我试了-b "iso1\EFI\boot\bootx64.efi"不行啊?

作者: hilsonma    时间: 2024-4-24 02:50
本帖最后由 hilsonma 于 2024-4-24 03:00 编辑
liuzhaoyzz 发表于 2024-4-23 17:51
请问下-b efi.img,这个参数,必须接img镜像吗?怎么我试了-b "iso1\EFI\boot\bootx64.efi"不行啊?

是的。-b efi.img 后面的efi.img 不能换成其他格式的文件,必须是img镜像(或ima镜像),这个镜像里放置用于uefi启动的efi文件。

iso内作uefi引导的efi文件也必须放在这个镜像里,而不是直接放在iso里。

使用oscdimg制作的iso里,efisys.bin其实就是这样的镜像文件,只不过文件名不同而已,打开里面内容是一样的,同样是 \efi\boot\bootx64.efi
当然,oscdimg制作的iso里,bootx64.efi一般是ms的bootmgfw.efi
而使用mkisofs制作的iso里,bootx64.efi不一定是bootmgfw.efi 。

作者: liuzhaoyzz    时间: 2024-4-24 17:33
本帖最后由 liuzhaoyzz 于 2024-4-24 18:01 编辑
hilsonma 发表于 2024-4-24 02:50
是的。-b efi.img 后面的efi.img 不能换成其他格式的文件,必须是img镜像(或ima镜像),这个镜像里放置用 ...

感谢回复,明白了。

有个问题啊,efi.img里面已经有了EFI\boot\bootx64.efi,那打包的时候,iso1\EFI\boot\bootx64.efi还要再放一个是吗?我试了,不放一个好像无法启动?

oscdimg制作的iso里,efisys.bin其实就是这样的镜像文件,好像有这个文件,EFI\boot\bootx64.efi都可以不用?好奇怪。UEFI默认引导文件不是EFI\boot\bootx64.efi的吗,放在efisys.bin这个镜像包里面,也可以UEFI启动吗?不明白。








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