无忧启动论坛

标题: 也来个 Grub2 u盘、iso 三启 制作脚本 Ver.2.4(小更新.不再需要bootice) [打印本页]

作者: dos时代菜鸟    时间: 2018-1-23 13:11
标题: 也来个 Grub2 u盘、iso 三启 制作脚本 Ver.2.4(小更新.不再需要bootice)
本帖最后由 dos时代菜鸟 于 2018-1-28 22:00 编辑

总结前人经验,弄得,没啥技术含量,老鸟略过吧。
2018.01.28
更新 u盘安装,不再需要 bootice 用了个 vbs 调用 wmic 实现目标硬盘的 定位,再用 grub-bios-setup 直接写入硬盘主引导记录。
链接: https://pan.baidu.com/s/1pMaxrXD
密码: z59j

Grub2.02_for_windows 在这里 链接: https://pan.baidu.com/s/1nwtxY8h 密码: f7x2  

成品在这里 链接: https://pan.baidu.com/s/1kWoIvcj 密码: mats

所谓的 grub2三启 就是让一个存储介质 同时具备  bios 、x86_64-efi、 i386-efi(ia32) 三种模式下都能成功启动进入  grub2 。

首先要明白  u盘 启动 和 光盘启动 在这三种情况 下 的运行机制,然后就是 体力活儿了。

都要用到 grub-mkimage 生成 三个启动文件

bios 下的g2ldr,先生成 core.img , u盘下 用 boot.img+core.img 生成 g2ldr,iso 下用 cdboot.img+core.img 生成 g2ldr.bin
x86_64-efi 下 的 bootx64.efi
i386-efi 下的 bootia32.efi

u盘启动,要求u盘必须是 fat32 格式
u盘因为 要 把g2ldr 写入扇区,所以 g2ldr 大小只能是 小于 32k,
而对应的 bootx64.efi 和  bootia32.efi ,只要 放到 u 盘  \efi\boot\ 中 就可以了


对于 iso 版,值得注意的是 需要把 bootx64.efi 和 bootia32.efi  放入 一个 磁盘影像文件(efi.ima)中的 \efi\boot\ 里面,这个过程可以用 wimimage 完成。
再用 mkisofs 把 grldr.bin 和 efi.ima 做到 iso 中,就实现了iso 的 grub2三启。


两个脚本
make-disk 用于 生成 u盘三启 文件集合,全部复制到 u盘,并 用 bootice 将 引导扇区 文件 g2ldr.mbr 恢复到u盘 即可。
make-iso2 用于生成 一个可以 三启的iso .

成品中 grub2的 各种 mod 和 字体 语言文件等 设置放在 /boot/grub2/ 中 ,包括一个通用 通用型的 grub.cfg 也在。



要求使用的时候,把 grub2.02 文件 放入 grub2_for_windows 文件夹,与 0_make_03 并列放置。脚本需要调用 grub2 的 grub-mkimage 来编译生成必要的启动文件。
0_make_03 里面就是 脚本和涉及到的 工具软件 。






[attach]366493[/attach]

sshot-1.png (18.48 KB, 下载次数: 295)

sshot-1.png

sshot-4.png (35.27 KB, 下载次数: 286)

sshot-4.png

sshot-5.png (18.5 KB, 下载次数: 274)

sshot-5.png

sshot-6.png (11.07 KB, 下载次数: 277)

sshot-6.png

作者: dos时代菜鸟    时间: 2018-1-23 13:14
本帖最后由 dos时代菜鸟 于 2018-1-23 13:52 编辑

grub2 变大了,以前 bootx64.efi+bootia32.efi 合成的那个 efisys.bin (本质是一个 ima 磁盘影像文件),有可能放不下,所以我弄了个 4M 的 。用 wimimage 可以编辑。
iso 的生成 用的是   mkisofs

要修改 grub.cfg 的,源文件在 0_make_03\GrubTools\files_source\boot\grub2\grub.cfg 修改完,在生成iso ,就 集入iso 中了。



作者: 有阴也有阳    时间: 2018-1-23 13:34
本帖最后由 有阴也有阳 于 2018-1-23 13:36 编辑

象制作三启ISO文件一样一键生成三启U盘版的grub2文件你是第一个!
作者: dos时代菜鸟    时间: 2018-1-23 13:42
本帖最后由 dos时代菜鸟 于 2018-1-23 14:15 编辑
有阴也有阳 发表于 2018-1-23 13:34
象制作三启ISO文件一样一键生成三启U盘版的grub2文件你是第一个!

u盘的,只是半自动。没考虑 ud 的问题。
本想用  wmic 获得 硬盘序列在 交互给用户 选择 磁盘 再用 grub-setup 把 g2ldr 写进去,但是 x64 位下好像总是出错。所以还是用 bootiec 吧。
不然就真的 一步到位了。

刚发现 u 盘 版 ,boot_disk 中 没有 efi/boot 文件夹,导致脚本 不能生成 *.efi
如果不更新,就自己 在 建个文件夹  boot_disk\efi\boot  即可。

改进脚本。如下 01-make-disk.7z (1.17 KB, 下载次数: 67)
整包更新 已经 放1楼。


作者: bigexiu    时间: 2018-1-23 14:13
不错 技术贴
作者: phyuzhoukai    时间: 2018-1-23 14:17
本帖最后由 phyuzhoukai 于 2018-1-23 14:25 编辑

我在把g2ldr 写入扇区后,用QEMU模拟启动总是出错:incompatible license
这是咋回事啊0.0
------------------------------------------------------------------------------------------------
用了你的脚本以后终于能运行了!但是还是不太明白为啥我自己做的g2ldr不行...
有人遇到过这种问题吗?
作者: dos时代菜鸟    时间: 2018-1-23 14:30
phyuzhoukai 发表于 2018-1-23 14:17
我在把g2ldr 写入扇区后,用QEMU模拟启动总是出错:incompatible license
这是咋回事啊0.0
------------- ...

先用 grub-mkimage 做成 core.img
再用  copy /B 把  boot.img+core.img 两个 东西 合成 为  g2ldr

在用 grub-mkimage 生成 core.img 的时候 ,要考虑需要什么 mod 以及 core.img 的大小不能 太大。

作者: phyuzhoukai    时间: 2018-1-23 14:36
dos时代菜鸟 发表于 2018-1-23 14:30
先用 grub-mkimage 做成 core.img
再用  copy /B 把  boot.img+core.img 两个 东西 合成 为  g2ldr

...

嗯,对照着你的脚本修改了一下,终于可以了!谢谢!
作者: 2012gdszlwq    时间: 2018-1-23 17:14
谢谢分享!!
作者: 2010sya    时间: 2018-1-23 20:40
实在看不懂,有时间慢慢研究
作者: dos时代菜鸟    时间: 2018-1-23 23:38
刚刚 想把 pe install.wim 都放进 iso ,发现iso 不够大,UltraISO 好像 会改引导,导致 失去 三启 功能,
不知道 怎么办了。

作者: rengrancunzai    时间: 2018-1-24 08:34
回头试试,谢谢分享
作者: 我是来搞事的    时间: 2018-1-24 11:38
很厉害的啊
作者: oym2016    时间: 2018-1-24 13:51
本帖最后由 oym2016 于 2018-1-24 14:08 编辑

下载 grub2-三启Ver2.1 制作ISO  在Hyper-V中 BIOS 启动正常,UEFI 不能启动。efi.ima 中 字节为0 ,批处理没有生成 。(使用更新后的包)

捕获.PNG (16.47 KB, 下载次数: 239)

捕获.PNG

捕获1.PNG (26.47 KB, 下载次数: 227)

捕获1.PNG

作者: dos时代菜鸟    时间: 2018-1-24 15:04
本帖最后由 dos时代菜鸟 于 2018-1-24 15:07 编辑

  1. #用 mkisofs 制作一个 大 iso ,实现 bios 、 x86_64-efi 、i386-efi 三种情况下都能启动 。

  2. mkisofs -J -R -N -d -boot-info-table -l -relaxed-filenames -gbk4dos-filenames -gbk4win-filenames  -no-emul-boot -boot-load-size 4  -b g2ldr.bin  -eltorito-alt-boot -b efi.ima -no-emul-boot -eltorito-alt-boot -V win7_x64 -o win7_x64.iso   iso/
复制代码

在 ubuntu 下 用 mkisofs 终于做出 具有 三启功能 的 大 dvd .命令 如上。


作者: dos时代菜鸟    时间: 2018-1-24 15:05
oym2016 发表于 2018-1-24 13:51
下载 grub2-三启Ver2.1 制作ISO  在Hyper-V中 BIOS 启动正常,UEFI 不能启动。efi.ima 中 字节为0 ,批处理 ...

Grub2_for_windows 文件夹内容 看一下
作者: my9823    时间: 2018-1-24 20:21
xorbootuei版内置oscdimg,制作iso是可以指定bios启动文件和uefi启动镜像,简单到不能再简单了。
作者: dos时代菜鸟    时间: 2018-1-24 20:36
本帖最后由 dos时代菜鸟 于 2018-1-24 20:37 编辑
my9823 发表于 2018-1-24 20:21
xorbootuei版内置oscdimg,制作iso是可以指定bios启动文件和uefi启动镜像,简单到不能再简单了。


grub2 的 bios  和 uefi 启动文件 还是需要 grub2 的 grub-mkimage 定制的
涉及到 grub.cfg 和 一些 mod 的 ${prefix }位置
作者: my9823    时间: 2018-1-24 21:04
楼主误解我的意思,我的意思是oscdimg是微软,各大硬件屈服于它,用oscdimg应该比mikisofs兼容点吧,我是说用xorbootuefi版内置的oscdimg省的用命令行了,我等都是文盲,看到命令行就头疼!
还有生成的efi太大,导致efisys.bin体积大,我觉得应该efi仅内置必要模块比如iso中只集成光盘格式文件系统等必要模块,可以参考jebbs的批处理,吧大部分模块放到外置目录,只在efi中内置必要模块!
作者: dos时代菜鸟    时间: 2018-1-24 21:07
my9823 发表于 2018-1-24 21:04
楼主误解我的意思,我的意思是oscdimg是微软,各大硬件屈服于它,用oscdimg应该比mikisofs兼容点吧,我是说 ...

oscdimg n次失败,
efi 文件大点儿 ,u盘 上调用 bootmgfw.efi 会 更把握。
正在研究 grub2 在 iso 光盘上直接启动 bootmgfw.efi 。我 就没成功过。
作者: my9823    时间: 2018-1-24 21:21
光盘上的bootmgfw.efi 不用试了,很早就说了不能启动,只能用xorboot或者refind来启动!
作者: dos时代菜鸟    时间: 2018-1-24 21:26
本帖最后由 dos时代菜鸟 于 2018-1-24 21:50 编辑
my9823 发表于 2018-1-24 21:21
光盘上的bootmgfw.efi 不用试了,很早就说了不能启动,只能用xorboot或者refind来启动!


谢谢。

grub2 不能在光盘引导 bootmgfw.efi ,可是 为啥 u盘上是 没问题的呢?

我去研究研究



作者: newswan    时间: 2018-1-25 03:43
看看,谢谢
作者: dos时代菜鸟    时间: 2018-1-25 21:45
my9823 发表于 2018-1-24 20:21
xorbootuei版内置oscdimg,制作iso是可以指定bios启动文件和uefi启动镜像,简单到不能再简单了。


刚试了 xorboot 整合 3启 的功能,
oscdimg 集成 bios引导到光盘 的时候要求 bios引导文件必须是 具备扇区特性的,而 集成 用 cdboot.img+core.img 方式制作的 grub2 总是失败,集成 grub4dos 的 grldr 是可行的。

作者: devilma    时间: 2018-1-25 23:10
不错,谢谢楼主分享了。。。。
作者: dos时代菜鸟    时间: 2018-1-28 15:57
本帖最后由 dos时代菜鸟 于 2018-1-28 21:57 编辑

把 定制好 的core.ing 替换后,运行 setup1.cmd
然后选择要安装的 盘,就可以把 grub2-bios 的 core 安装到 主引导记录。

grub2-bios-setup.7z (292.28 KB, 下载次数: 40)
作者: dos时代菜鸟    时间: 2018-1-28 22:01
有阴也有阳 发表于 2018-1-23 13:34
象制作三启ISO文件一样一键生成三启U盘版的grub2文件你是第一个!

这回 真的 一键 完成了。
作者: 有阴也有阳    时间: 2018-1-29 12:15
dos时代菜鸟 发表于 2018-1-28 22:01
这回 真的 一键 完成了。

谢谢!下载收藏!
作者: newswan    时间: 2018-2-2 02:29
本帖最后由 newswan 于 2018-2-2 03:25 编辑

问下,还有没有其他获得磁盘参数的办法?
作者: hhh333    时间: 2018-2-2 10:27
关于EFI及grub2我在http://bbs.wuyou.net/forum.php?m ... d=403480&extra=中有试验。可以做些参考。
作者: dongwu    时间: 2018-2-2 10:50
谢谢分享
作者: ge    时间: 2018-2-2 12:14
用Grub2在BIOS和UEFI的命令是不通用的吧?
作者: 阿咏    时间: 2018-2-2 12:43
实在看不懂,有时间慢慢研究
作者: bbvvfg123456    时间: 2018-3-2 15:10
学习一下,谢谢分享!

看的有点茫然!
作者: gqdsc    时间: 2018-3-22 14:31
大于4G的系统镜像怎么弄?q请教
作者: cnzp    时间: 2018-8-29 11:19
为什么有的主板GRUB2 没办法引导,B75的主板设置成纯UEFI引导又可以出GRUB2菜单出来,H110的主板GRUB2菜单又出不来
作者: dos时代菜鸟    时间: 2018-8-29 18:56
cnzp 发表于 2018-8-29 11:19
为什么有的主板GRUB2 没办法引导,B75的主板设置成纯UEFI引导又可以出GRUB2菜单出来,H110的主板GRUB2菜单 ...


个主板 设计的时候 对 uefi  的理解 有偏差,有的有加入了自己的 想法,有的 阉割了 部分 标准。
作者: tops    时间: 2018-9-1 15:49
谢谢分享!
作者: 2010haiven86    时间: 2018-9-18 07:20
楼主做的非常好用,这样订制真是太简单了,只需把GRUB2包裹与0_make_03并排放同一磁盘或目录下就可。
而且代码写的非常整齐易懂,大赞一个。
变量那我稍作了更改:
::%cd%\grub2-for-windows ,这一反斜杠\是多余的,但也可正确执行。%cd%代表当前路径
set grub2p=%cd%grub2-for-windows

有时间参照楼主的批处理,做一个linux版的bash,linux源生,命令会更简洁。
作者: devilma    时间: 2018-9-23 16:51
学习一下!谢谢!
作者: shan    时间: 2018-12-2 10:36
本帖最后由 shan 于 2018-12-2 13:42 编辑

老大,俺只会在winodws环境下。想在你这个基础上更新加入各种IMG,PE,.该放入哪个文件夹下呢,然后生成iso镜像?
另,老大有自己使用的grub2工具箱,可否分享个大模板呢?
作者: dos时代菜鸟    时间: 2018-12-3 20:31
shan 发表于 2018-12-2 10:36
老大,俺只会在winodws环境下。想在你这个基础上更新加入各种IMG,PE,.该放入哪个文件夹下呢,然后生成iso ...

随便放,关键是你的 grub2 的 cfg 配置文件中如何配置的。
作者: shan    时间: 2018-12-3 21:25
试过了,运行批处理产生的iso还是10多mb.所以才问这么浅显的问题。
作者: dos时代菜鸟    时间: 2018-12-6 09:46
shan 发表于 2018-12-3 21:25
试过了,运行批处理产生的iso还是10多mb.所以才问这么浅显的问题。

把要 添加的文件 放到  .....\0_make_0\grubtools\files_source 里面。
作者: shan    时间: 2018-12-6 10:10
dos时代菜鸟 发表于 2018-12-6 09:46
把要 添加的文件 放到  .....\0_make_0\grubtools\files_source 里面。


老大,刚试过,只是把\\files_source文件夹下所有文件复制到ISO文件夹里面而已,没有生成GRUB2.ISO
作者: ben2291074    时间: 2018-12-28 10:55
还在学习中。。。很多都不懂呢。。。。
作者: 20170101    时间: 2019-3-2 01:14
谢谢……
作者: mygamexxx    时间: 2021-5-3 09:40
本帖最后由 mygamexxx 于 2021-5-3 12:02 编辑

请教:如果将grub2目录不放在boot下,直接放在根目录,要怎么办?要加载背景图用什么命令?将所有语言文件复制后,zh_CN/grub.mo要改为zh_CN.mo吗?第一次使用GRUB2,比较晕,修改后不出菜单了!
算了,还是老老实实看资料吧!

作者: 熄灭的烟    时间: 2021-5-3 21:22
你那个00-Set.bat批处理文件运行后一闪而过,啥文件都没生成呢。
作者: 熄灭的烟    时间: 2021-5-3 21:49
dos时代菜鸟 发表于 2018-1-23 13:14
grub2 变大了,以前 bootx64.efi+bootia32.efi 合成的那个 efisys.bin (本质是一个 ima 磁盘影像文件),有 ...

你的所有文件我都下载下来了,没有找到efisys.bin这个文件
作者: dos时代菜鸟    时间: 2021-5-3 22:02
熄灭的烟 发表于 2021-5-3 21:22
你那个00-Set.bat批处理文件运行后一闪而过,啥文件都没生成呢。

本来他就不生成啥文件,那是个设置 内存变量的脚本
作者: dos时代菜鸟    时间: 2021-5-3 22:03
熄灭的烟 发表于 2021-5-3 21:49
你的所有文件我都下载下来了,没有找到efisys.bin这个文件

这是个 自动生成 启动文件的脚本,你需要的文件 脚本会自行根据 grub2.02 的文件生成。
作者: dos时代菜鸟    时间: 2021-5-3 22:04
mygamexxx 发表于 2021-5-3 09:40
请教:如果将grub2目录不放在boot下,直接放在根目录,要怎么办?要加载背景图用什么命令?将所有语言文件 ...

你需要修改 脚本内容 和 cfg 配置文件。
作者: 熄灭的烟    时间: 2021-5-3 22:05
dos时代菜鸟 发表于 2021-5-3 22:03
这是个 自动生成 启动文件的脚本,你需要的文件 脚本会自行根据 grub2.02 的文件生成。

还有g2ldr.mbr这个文件在哪啊,我找遍了目录都没找到这个文件。
作者: dos时代菜鸟    时间: 2021-5-3 22:06
小白们,如果还没仔细看 一楼 说明和 图片 ,就先不要 盲目 下载运行了。
作者: dos时代菜鸟    时间: 2021-5-3 22:07
本帖最后由 dos时代菜鸟 于 2021-5-3 22:08 编辑
熄灭的烟 发表于 2021-5-3 22:05
还有g2ldr.mbr这个文件在哪啊,我找遍了目录都没找到这个文件。

不需要 这个文件
脚本直接通过  grub2 自带程序 完成 引导代码的写入


作者: 熄灭的烟    时间: 2021-5-3 22:07
dos时代菜鸟 发表于 2021-5-3 22:06
小白们,如果还没仔细看 一楼 说明和 图片 ,就先不要 盲目 下载运行了。

大佬,你能告诉我这个g2ldr.mbr文件在哪里吗?
作者: 熄灭的烟    时间: 2021-5-3 22:08
dos时代菜鸟 发表于 2021-5-3 22:07
不需要 这个文件

无语,这个不需要的文件你写在批处理里面,害我研究了半天。
作者: dos时代菜鸟    时间: 2021-5-3 22:10
本帖最后由 dos时代菜鸟 于 2021-5-3 22:13 编辑
熄灭的烟 发表于 2021-5-3 22:08
无语,这个不需要的文件你写在批处理里面,害我研究了半天。

这个文件是 自动生成的吧,或者是以前需要,后来改进了安装方式就不需要的吧。时间太久远了,记不清了。
作者: mygamexxx    时间: 2021-5-3 22:43
dos时代菜鸟 发表于 2021-5-3 22:04
你需要修改 脚本内容 和 cfg 配置文件。

谢谢,已经弄明白了。谢谢您的工具!
作者: dos时代菜鸟    时间: 2021-5-3 23:20
在 00-set.cmd 最后 加一句

reg add "HKEY_CURRENT_USER\Software\WinImage" /v "DispSplashBegin" /t reg_sz /d "False" /f

脚本调用 winimage 时就不用 点 确定按钮了。

作者: 779062985    时间: 2021-5-13 22:17
学习一下
作者: snaca    时间: 2021-5-31 14:53
新手学习,感谢分享。
作者: shan    时间: 2023-8-28 09:06
重新琢磨一下U盘启动架构,来学习




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