dos时代菜鸟 发表于 2018-1-23 13:11:05

也来个 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 里面就是 脚本和涉及到的 工具软件 。







dos时代菜鸟 发表于 2018-1-24 15:04:45

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


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

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-23 13:14:35

本帖最后由 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:03

本帖最后由 有阴也有阳 于 2018-1-23 13:36 编辑

象制作三启ISO文件一样一键生成三启U盘版的grub2文件你是第一个!

dos时代菜鸟 发表于 2018-1-23 13:42:08

本帖最后由 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即可。

改进脚本。如下
整包更新 已经 放1楼。

bigexiu 发表于 2018-1-23 14:13:47

不错 技术贴

phyuzhoukai 发表于 2018-1-23 14:17:54

本帖最后由 phyuzhoukai 于 2018-1-23 14:25 编辑

我在把g2ldr 写入扇区后,用QEMU模拟启动总是出错:incompatible license
这是咋回事啊0.0
------------------------------------------------------------------------------------------------
用了你的脚本以后终于能运行了!但是还是不太明白为啥我自己做的g2ldr不行...
有人遇到过这种问题吗?

dos时代菜鸟 发表于 2018-1-23 14:30:14

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:47

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

...

嗯,对照着你的脚本修改了一下,终于可以了!谢谢!

2012gdszlwq 发表于 2018-1-23 17:14:45

谢谢分享!!

2010sya 发表于 2018-1-23 20:40:13

实在看不懂,有时间慢慢研究:dizzy:

dos时代菜鸟 发表于 2018-1-23 23:38:16

刚刚 想把 pe install.wim 都放进 iso ,发现iso 不够大,UltraISO 好像 会改引导,导致 失去 三启 功能,
不知道 怎么办了。

rengrancunzai 发表于 2018-1-24 08:34:16

回头试试,谢谢分享

我是来搞事的 发表于 2018-1-24 11:38:36

很厉害的啊

oym2016 发表于 2018-1-24 13:51:23

本帖最后由 oym2016 于 2018-1-24 14:08 编辑

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

dos时代菜鸟 发表于 2018-1-24 15:05:04

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:53

xorbootuei版内置oscdimg,制作iso是可以指定bios启动文件和uefi启动镜像,简单到不能再简单了。

dos时代菜鸟 发表于 2018-1-24 20:36:14

本帖最后由 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:00

楼主误解我的意思,我的意思是oscdimg是微软,各大硬件屈服于它,用oscdimg应该比mikisofs兼容点吧,我是说用xorbootuefi版内置的oscdimg省的用命令行了,我等都是文盲,看到命令行就头疼!
还有生成的efi太大,导致efisys.bin体积大,我觉得应该efi仅内置必要模块比如iso中只集成光盘格式文件系统等必要模块,可以参考jebbs的批处理,吧大部分模块放到外置目录,只在efi中内置必要模块!

dos时代菜鸟 发表于 2018-1-24 21:07:15

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:38

光盘上的bootmgfw.efi 不用试了,很早就说了不能启动,只能用xorboot或者refind来启动!

dos时代菜鸟 发表于 2018-1-24 21:26:41

本帖最后由 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:13

看看,谢谢

dos时代菜鸟 发表于 2018-1-25 21:45:46

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:06

不错,谢谢楼主分享了。。。。

dos时代菜鸟 发表于 2018-1-28 15:57:21

本帖最后由 dos时代菜鸟 于 2018-1-28 21:57 编辑

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

dos时代菜鸟 发表于 2018-1-28 22:01:14

有阴也有阳 发表于 2018-1-23 13:34
象制作三启ISO文件一样一键生成三启U盘版的grub2文件你是第一个!

这回 真的 一键 完成了。

有阴也有阳 发表于 2018-1-29 12:15:35

dos时代菜鸟 发表于 2018-1-28 22:01
这回 真的 一键 完成了。

谢谢!下载收藏!

newswan 发表于 2018-2-2 02:29:28

本帖最后由 newswan 于 2018-2-2 03:25 编辑

问下,还有没有其他获得磁盘参数的办法?

hhh333 发表于 2018-2-2 10:27:54

关于EFI及grub2我在http://bbs.wuyou.net/forum.php?mod=viewthread&tid=403480&extra=中有试验。可以做些参考。
页: [1] 2 3
查看完整版本: 也来个 Grub2 u盘、iso 三启 制作脚本 Ver.2.4(小更新.不再需要bootice)