无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5105|回复: 54
打印 上一主题 下一主题

定制安装 GRUB2FORWIN 到 硬盘/U盘 图形界面脚本V1.5

  [复制链接]
跳转到指定楼层
1#
发表于 2025-4-14 22:27:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dos时代菜鸟 于 2025-5-5 09:43 编辑

grub2_for_windows + 脚本:1.53
https://www.123912.com/s/vhguVv-Ja8x   验证码:1234

注意 开始安装前 把相关位置的文档换位置保存,或者整体文件夹更名,安装脚本会清除特定分区位置的内容。比如 uefi 方式下的 \efi\boot\ 中的一切。
因为 grub2 是区分大小写的。





这个脚本可以理解为 bios uefi.x64 uefi.ia32 三种方式启动的实现

本脚本由 pecmd 调用,支持向 mbr/gpt 以及包含 bios_boot分区的gpt 硬盘上安装 grub2


一、关于 使硬盘能够 在 bios 模式下启动的实现
1.需要有 fat/ntfs 类分区存放 各种mods ,脚本就是将 grub2-for-windows 中相关 mods 以及一个事先做好的 grub.cfg 放入这样的分区中 \boot\grub2\grub.cfg。脚本中可以手动调用系统 记事本 notepad.exe 修改这个 grub.cfg.  
2.mbr硬盘的,脚本会生成 启动扇区引导文件,并写入硬盘特定扇区,这个启动文件是用 grub2 特定程序 将特定 mod 整合而成,在脚本中可以定制这些 mod 组合。
3.GPT硬盘,需要硬盘有 bios_boot 分区,脚本会将 启动扇区引导文件 写入这个特定的分区。
4.硬盘启动后会自动调用 \boot\grub2\grub.cfg 菜单文件 以及 \boot\grub2\i386-pc\ 中的各种 mod
二、关于 使硬盘能够 在uefi 模式下启动的实现
1.需要有 fat/ntfs 类分区存放 各种mods ,脚本就是将 grub2-for-windows 中相关 mods 以及一个事先做好的 grub.cfg 放入这样的分区中 \efi\grub2\grub.cfg。脚本中可以手动调用系统 记事本 notepad.exe 修改这个 grub.cfg.
2.mbr/gpt硬盘的,需要硬盘有 ESP/FAT32 分区,脚本会根据定义的mod组合利用 grub2自带的特定程序生成 uefi 启动文件(bootx64.efi/bootia32.efi),并放入目标分区 \efi\boot\ 中。
3.硬盘启动后会自动调用 \efi\grub2\grub.cfg 菜单文件 以及 \efi\grub2\x86_64-efi\  和 \efit\grub2\i386-efi\ 中的各种 mod


升级改进日志:

2025.04.15
BIOS+mbr 分区选择时,根据所选分区类型 自动调整 MOD 组合,以适应 64扇区大小要求。
BIOS+GPT 分区选择时,GPT一定时存在 BIOS_BOOT分区的,否则不可选,此时 mod 组合固定,不受体积限制。
EFI+GPT 分区选择时,如果分区不是 FAT类,就提示错误并自动选为 “-”
原来 grub2 的菜单编码要 utf-8 且不能是 utf-8 BOM

2025.04.16
增加 grub4dos
增加 grub4uefi_x86&64
增加当选择硬盘是自动给无盘符分区分配盘符,脚本关闭时,自动将新加载的盘符卸掉。

2025.04.17 V 1.46
bios 启动模式,改用 search.fs_uuid 方式锁定安装分区,需要pecmd 在系统 temp 文件夹 以 uft8 nobom 方式生成临时随机名的 cfg 文件用以生成 bios_mbr 模式写入硬盘的启动文件。
修正一处错误,关于装载盘符后的赋值问题。 %empty_drv%:  ,差了个 :。

2025.04.18
增加安装前备份已有启动体系文件夹的选项,可以复制也可以更名。
2025.04.19
增加刷新按钮,应对脚本打开后 硬盘u盘增加的情况。

2025.04.24
调整了一下 uefi 的mods 组合,更通用一些,适用与 魔改版。

2025.04.28
修正 错误,备份方案选择上变量赋值问题。
增加扩展文件复制位置选项,扩展文件夹可以自行配置菜单。增加 files\files_source]grub2_ext 文件夹用于放置扩展文件



评分

参与人数 2无忧币 +10 收起 理由
smartcowboy + 5 很给力!
freesoft00 + 5

查看全部评分

2#
发表于 2025-4-15 00:20:05 | 只看该作者
感谢大佬分享,国产系统迁移位置太需要这个了!
回复

使用道具 举报

3#
发表于 2025-4-15 02:57:43 | 只看该作者
感谢分享!
回复

使用道具 举报

4#
发表于 2025-4-15 06:24:10 | 只看该作者
感谢分享
回复

使用道具 举报

5#
发表于 2025-4-15 07:11:00 | 只看该作者
感谢分享
回复

使用道具 举报

6#
发表于 2025-4-15 07:46:11 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 2025-4-15 07:54:34 | 只看该作者
本帖最后由 ztjun518 于 2025-4-15 08:16 编辑

太菜了,没看懂,那位大侠出个详细的步骤就好了

点评

你可以在 win下 搞个 虚拟硬盘,用这个脚本把 grub2 安装到虚拟硬盘上,在卸载虚拟硬盘,把虚拟硬盘挂到 虚拟机上启动试一下。 关键是这个脚本需要 grub2 for windows 做支撑。  详情 回复 发表于 2025-4-15 08:55
回复

使用道具 举报

8#
发表于 2025-4-15 08:16:04 | 只看该作者
谢谢
回复

使用道具 举报

9#
发表于 2025-4-15 08:22:35 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

10#
发表于 2025-4-15 08:33:49 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

11#
 楼主| 发表于 2025-4-15 08:53:23 | 只看该作者
更新了一下,
增加可以支持 自定义 mods 组合
增加支持向 有 bios_boot 分区的 gpt 结构硬盘上安装 bios_mbr模式的 grub2,以便使 gpt结构硬盘支持 bios 启动。
回复

使用道具 举报

12#
 楼主| 发表于 2025-4-15 08:55:34 | 只看该作者
ztjun518 发表于 2025-4-15 07:54
太菜了,没看懂,那位大侠出个详细的步骤就好了

你可以在 win下 搞个 虚拟硬盘,用这个脚本把 grub2 安装到虚拟硬盘上,在卸载虚拟硬盘,把虚拟硬盘挂到 虚拟机上启动试一下。
关键是这个脚本需要 grub2 for windows 做支撑。

点评

谢谢大侠耐心回复  详情 回复 发表于 2025-4-15 13:12
回复

使用道具 举报

13#
发表于 2025-4-15 09:02:32 | 只看该作者
围观一下
回复

使用道具 举报

14#
发表于 2025-4-15 09:23:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

15#
发表于 2025-4-15 09:24:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

16#
发表于 2025-4-15 09:28:00 | 只看该作者

谢谢分享   
回复

使用道具 举报

17#
 楼主| 发表于 2025-4-15 10:06:06 | 只看该作者
bilv 发表于 2025-4-15 09:24
cnblogs.com/fatt/p/7272997.html

一楼有教程了,一个图解决。
回复

使用道具 举报

18#
发表于 2025-4-15 10:58:52 | 只看该作者
感谢大佬
回复

使用道具 举报

19#
 楼主| 发表于 2025-4-15 12:12:11 | 只看该作者
GPT结构硬盘上的 用于在 BIOS环境下启动的那个名叫 bios_boot 的分区,其实是一个 raw 格式的分区,然后 ID = 21686148-6449-6E6F-744E-656564454649, 用 grub2 的特定程序 将 特定的 bios 启动代码写到这个分区,这个 GPT 结构的硬盘就可以支持在 bios 环境下启动到grub2 了。

点评

感觉可以借鉴ventoy的思路,gpt磁盘的保护mbr只用到了dpy那部分,前面的引导代码还是能在bios启动时运行的, entoy是使用了这部分,写入了boot.img,然后修改了指向下一扇区的位置为gpt分区表后面的扇区,前提是第一  详情 回复 发表于 2025-4-15 18:00
回复

使用道具 举报

20#
 楼主| 发表于 2025-4-15 12:53:12 | 只看该作者
GRUB2.12 的 字体文件貌似有点儿问题。体积也小了很多。
回复

使用道具 举报

21#
发表于 2025-4-15 13:12:37 | 只看该作者
dos时代菜鸟 发表于 2025-4-15 08:55
你可以在 win下 搞个 虚拟硬盘,用这个脚本把 grub2 安装到虚拟硬盘上,在卸载虚拟硬盘,把虚拟硬盘挂到  ...

谢谢大侠耐心回复
回复

使用道具 举报

22#
发表于 2025-4-15 13:38:00 | 只看该作者
感谢大佬分享!
回复

使用道具 举报

23#
 楼主| 发表于 2025-4-15 16:10:29 | 只看该作者
考虑到 BIOS+MBR 模式 ,启动文件会受 63 扇区 大小限制,还是需要 智能判断一下 mod 组合。
回复

使用道具 举报

24#
 楼主| 发表于 2025-4-15 17:43:05 | 只看该作者
1.3 应该没啥大问题了。
回复

使用道具 举报

25#
发表于 2025-4-15 18:00:15 来自手机 | 只看该作者
dos时代菜鸟 发表于 2025-4-15 12:12
GPT结构硬盘上的 用于在 BIOS环境下启动的那个名叫 bios_boot 的分区,其实是一个 raw 格式的分区,然后 ID ...

感觉可以借鉴ventoy的思路,gpt磁盘的保护mbr只用到了dpy那部分,前面的引导代码还是能在bios启动时运行的, entoy是使用了这部分,写入了boot.img,然后修改了指向下一扇区的位置为gpt分区表后面的扇区,前提是第一个分区前有1MB空闲空间

点评

刚测试了以下,其实就是 启动跳转之类的。 把 grub2 安装到 带有 bios-boot 分区的 gpt 一个盘上以后,即使把 bios-boot 分区删掉,只要不覆盖那个分区区域,一样可以进入 grub2.  详情 回复 发表于 2025-4-15 19:37
听起来宛如天书。貌似需要用到 特定的写扇区软件。 不过 我是用 grub2 自带的 程序安装,并不是用 copy /b 把两个文件联合后写入,如果第一分区前段有足够空间,应该可以的。 这里只是考虑到一种可能,还是尽量  详情 回复 发表于 2025-4-15 18:07
回复

使用道具 举报

26#
 楼主| 发表于 2025-4-15 18:07:44 | 只看该作者
本帖最后由 dos时代菜鸟 于 2025-4-15 18:30 编辑
my9823 发表于 2025-4-15 18:00
感觉可以借鉴ventoy的思路,gpt磁盘的保护mbr只用到了dpy那部分,前面的引导代码还是能在bios启动时运行 ...

听起来宛如天书。貌似需要用到 特定的写扇区软件。

bios+mbr 模式我是用 grub2 自带的 程序安装,并不是用 copy /b 把两个文件联合后写入,如果第一分区前段有足够空间,应该可以的。
这里只是考虑到一种可能,还是尽量避免。

bios+gpt 模式,只要硬盘有个  bios_boot 分区,有几M也就足够了,不用考虑 63 扇区限制。用 diskgen 等软件 给硬盘挤出这么点空间应该没啥问题。

回复

使用道具 举报

27#
 楼主| 发表于 2025-4-15 19:37:48 | 只看该作者
my9823 发表于 2025-4-15 18:00
感觉可以借鉴ventoy的思路,gpt磁盘的保护mbr只用到了dpy那部分,前面的引导代码还是能在bios启动时运行 ...

刚测试了以下,其实就是 启动跳转之类的。
把 grub2 安装到 带有 bios-boot 分区的 gpt 一个盘上以后,即使把 bios-boot 分区删掉,只要不覆盖那个分区区域,一样可以进入 grub2.
回复

使用道具 举报

28#
发表于 2025-4-15 21:07:39 | 只看该作者
越来越不好弄;

点评

何出此言?  详情 回复 发表于 2025-4-15 21:16
回复

使用道具 举报

29#
 楼主| 发表于 2025-4-15 21:16:50 | 只看该作者
本帖最后由 dos时代菜鸟 于 2025-4-15 21:20 编辑

何出此言?

grub2 的定制安装 本来就是这样复杂,
关键信息节点多,需要命令行操作。用这个脚本,就是要化繁为简,而又要保证必要可操作性。

回复

使用道具 举报

30#
发表于 2025-4-16 11:56:21 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-6-11 06:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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