无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品★IDC大全★服务器租赁、托管★优惠促销★
可防勒索的强大数据备份恢复软件卡瑞飞系统和装机二合一超级U盘广告联系 QQ:184822951 微信:wuyouceo
查看: 4685|回复: 45

[分享] 也来个 Grub2 u盘、iso 三启 制作脚本 Ver.2.4(小更新.不再需要bootice)

    [复制链接]
发表于 2018-1-23 13:11:05 | 显示全部楼层 |阅读模式
本帖最后由 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 也在。

sshot-9.png

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




与 0_make_03 文件夹并列放置的 grub2 文件夹内容

与 0_make_03 文件夹并列放置的 grub2 文件夹内容

sshot-2.png


sshot-1.png
sshot-4.png
sshot-5.png
sshot-6.png

评分

参与人数 7无忧币 +31 收起 理由
2010haiven86 + 5 很给力!
2012FuckTheCPC + 5 赞一个!
yichenye + 1
freesoft00 + 5
shan + 5 很给力!
海市蜃楼 + 5
有阴也有阳 + 5 赞一个!

查看全部评分

 楼主| 发表于 2018-1-24 15:04:45 | 显示全部楼层
本帖最后由 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 .命令 如上。

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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文件你是第一个!

点评

这回 真的 一键 完成了。  详情 回复 发表于 2018-1-28 22:01
u盘的,只是半自动。没考虑 ud 的问题。 本想用 wmic 获得 硬盘序列在 交互给用户 选择 磁盘 再用 grub-setup 把 g2ldr 写进去,但是 x64 位下好像总是出错。所以还是用 bootiec 吧。 不然就真的 一步到位了。  详情 回复 发表于 2018-1-23 13:42
回复 支持 反对

使用道具 举报

 楼主| 发表于 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  即可。

改进脚本。如下 01-make-disk.7z (1.17 KB, 下载次数: 47)
回复 支持 反对

使用道具 举报

发表于 2018-1-23 14:13:47 | 显示全部楼层
不错 技术贴
回复 支持 反对

使用道具 举报

发表于 2018-1-23 14:17:54 | 显示全部楼层
本帖最后由 phyuzhoukai 于 2018-1-23 14:25 编辑

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

点评

先用 grub-mkimage 做成 core.img 再用 copy /B 把 boot.img+core.img 两个 东西 合成 为 g2ldr 在用 grub-mkimage 生成 core.img 的时候 ,要考虑需要什么 mod 以及 core.img 的大小不能 太大。  详情 回复 发表于 2018-1-23 14:30
回复 支持 反对

使用道具 举报

 楼主| 发表于 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 的大小不能 太大。
回复 支持 反对

使用道具 举报

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

...

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

使用道具 举报

发表于 2018-1-23 17:14:45 | 显示全部楼层
谢谢分享!!
回复 支持 反对

使用道具 举报

发表于 2018-1-23 20:40:13 | 显示全部楼层
实在看不懂,有时间慢慢研究
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-1-16 09:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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