无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 59557|回复: 202

[分享] 将grub2启动模板封装成efi单文件

  [复制链接]
发表于 2020-1-18 17:17:05 | 显示全部楼层 |阅读模式
本帖最后由 hilsonma 于 2020-3-9 12:10 编辑

20200308更新:感谢 nivigo 的分享,让我实现了在Windows下的封装,不需要linux环境封装,参见 windows下的封装

详细讲解请参看以下20200308更新前的内容:

附件是一个封装模板,里面是一个linux脚本build.sh 和一个文件夹build
build文件夹里有2个文件和一个文件夹
这两个文件一个是启动模板使用到的模块清单mod.txt ,一个是预配置文件pre.cfg
文件夹boot下有子文件夹grub,grub文件夹内是我的启动模板的整套文件

efi单文件封装模板.7z (568.45 KB, 下载次数: 1210)

点评

大大是高手666666  发表于 2020-3-31 07:12

评分

参与人数 6无忧币 +26 收起 理由
wuxin9712 + 5
szmsys + 5 赞一个!
某些人 + 5 赞一个!
minmax + 1 很给力!
yaojy + 5 很给力!
879792799 + 5 很给力!

查看全部评分

发表于 2020-1-18 17:33:24 | 显示全部楼层
win10可以用wsl

点评

感谢指点。之前不知道,也没有听说过。刚才一搜wsl,看得到相关内容,稍后再学习,  详情 回复 发表于 2020-1-18 18:02
回复

使用道具 举报

发表于 2020-1-18 17:57:00 | 显示全部楼层
感谢分享,楼主的帖子是学习的好帮手
回复

使用道具 举报

 楼主| 发表于 2020-1-18 18:02:36 | 显示全部楼层

感谢指点。之前不知道,也没有听说过。刚才一搜wsl,看得到相关内容,稍后再学习,
回复

使用道具 举报

发表于 2020-1-18 19:16:57 | 显示全部楼层
说一个问题:
深度截图_选择区域_20200118191421.png
用7z压缩文件,不会保存unix权限信息。
要用tar/cpio等格式压缩才可以。
tar -zcf xxx.tar.gz dir

点评

是不是要这样的  详情 回复 发表于 2020-1-18 20:02
我以前是用winrar的,近两三年才改用7z tar没有用过,几乎不用linux,近来才接触,真正应用linux还是从现在这个封装开始,因为你给我的方法就是cpio所以才必须用linux,前面你提到wsl 如果我觉得好用可能会采用,不  详情 回复 发表于 2020-1-18 19:51
回复

使用道具 举报

 楼主| 发表于 2020-1-18 19:51:50 | 显示全部楼层
wintoflash 发表于 2020-1-18 19:16
说一个问题:

用7z压缩文件,不会保存unix权限信息。

我以前是用winrar的,近两三年才改用7z
tar没有用过,几乎不用linux,近来才接触,真正应用linux还是从现在这个封装开始,因为你给我的方法就是cpio所以才必须用linux,前面你提到wsl 如果我觉得好用可能会采用,不知道wsl 是不是可以使用 tar

我现在还没有找到比较趁手的免安装的linux,porteus 勉强可以用用。

也许要考虑加个硬盘装linux了。

没有装虚拟机,回了这贴重启到porteus 看看能不能象你说的tar ...

点评

后来找到Windows下有同样的打包程序cpio.exe,可以不用linux环境打包,参见31楼。  发表于 2020-3-11 00:08
除了真要编译源码好像不太要用linux,grub2那个也都可以改成批处理的 wls就是在win上运行完整的linux,通过win命令行窗口直接交互,以前编译ipxe很荒便, porteus还是跑在虚拟机上比较方便吧,脱离win切换过去用会  详情 回复 发表于 2020-1-18 20:05
回复

使用道具 举报

 楼主| 发表于 2020-1-18 20:02:45 | 显示全部楼层
本帖最后由 hilsonma 于 2020-1-18 20:06 编辑
wintoflash 发表于 2020-1-18 19:16
说一个问题:

用7z压缩文件,不会保存unix权限信息。

是不是要这样的
单一efi文件封装模板.tar.gz (743.88 KB, 下载次数: 153)
回复

使用道具 举报

发表于 2020-1-18 20:05:25 | 显示全部楼层
hilsonma 发表于 2020-1-18 19:51
我以前是用winrar的,近两三年才改用7z
tar没有用过,几乎不用linux,近来才接触,真正应用linux还是从 ...

除了真要编译源码好像不太要用linux,grub2那个也都可以改成批处理的
wls就是在win上运行完整的linux,通过win命令行窗口直接交互,以前编译ipxe很荒便,
porteus还是跑在虚拟机上比较方便吧,脱离win切换过去用会有孤独感
而且虚拟机还能建立些快照

点评

感谢指点,看来还是要装虚拟机啊。我的硬盘都被西都冷占满了  详情 回复 发表于 2020-1-18 20:15
回复

使用道具 举报

 楼主| 发表于 2020-1-18 20:15:29 | 显示全部楼层
江南一根葱 发表于 2020-1-18 20:05
除了真要编译源码好像不太要用linux,grub2那个也都可以改成批处理的
wls就是在win上运行完整的linux, ...

感谢指点,看来还是要装虚拟机啊。我的硬盘都被西都冷占满了
回复

使用道具 举报

发表于 2020-1-19 06:09:19 | 显示全部楼层
这个方法很好
回复

使用道具 举报

发表于 2020-1-19 09:11:56 | 显示全部楼层
hilsonma兄,这个单一文件efi启动文件不错!我在定制时出现了一个问题,我把W大的 grub2-latest.tar.gz  tar开到linux环境后,用你的脚本运行了一下,发现 生成命令是 grub-mkimage.exe,这明显是Windows平台下的,翻了一下W大的Gibhub, 好像也没有linux 平台下的 grub2 (不要源码!),请问,W大的版本是兼容Win/Lin两个平台吗? 能否提供一个Linux下的grub2 ,要W大的最新版,支持map ,ntboot 的!

点评

你看错了。  详情 回复 发表于 2020-1-19 14:26
试了一下,grub-mkimage.exe 在Linux下确实不兼容!!  详情 回复 发表于 2020-1-19 09:30
回复

使用道具 举报

发表于 2020-1-19 09:30:35 | 显示全部楼层
jxdeng2017 发表于 2020-1-19 09:11
hilsonma兄,这个单一文件efi启动文件不错!我在定制时出现了一个问题,我把W大的 grub2-latest.tar.gz  ta ...

试了一下,grub-mkimage.exe 在Linux下确实不兼容!!

点评

我用没有问题呀。 用的就是wintoflash的grub2-latest.tar.gz ,win/lin通用的 [attachimg]409880[/attachimg]  详情 回复 发表于 2020-1-19 14:23
回复

使用道具 举报

发表于 2020-1-19 09:32:25 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2020-1-19 10:34:00 | 显示全部楼层
更方便了
回复

使用道具 举报

 楼主| 发表于 2020-1-19 14:23:58 | 显示全部楼层
本帖最后由 hilsonma 于 2020-1-19 14:52 编辑
jxdeng2017 发表于 2020-1-19 09:30
试了一下,grub-mkimage.exe 在Linux下确实不兼容!!

我用没有问题呀。
用的就是wintoflash的grub2-latest.tar.gz ,win/lin通用的

到这里下载试试。

build.jpg


回复

使用道具 举报

发表于 2020-1-19 14:26:48 | 显示全部楼层
jxdeng2017 发表于 2020-1-19 09:11
hilsonma兄,这个单一文件efi启动文件不错!我在定制时出现了一个问题,我把W大的 grub2-latest.tar.gz  ta ...
发现 生成命令是 grub-mkimage.exe



你看错了。

回复

使用道具 举报

发表于 2020-1-19 15:46:12 | 显示全部楼层

再运行

本帖最后由 jxdeng2017 于 2020-1-19 15:49 编辑

W大,hilsonma兄: 再次测试了一下,情况如下,用W大的最新的 grub2-latest.tar.gz ,放到Win 10 的WSL2 的ubuntu 环境,先用W大的build_grub.sh  测试一把,同样报没有 grub-mkimage 文件的错。我改了两处:1、cp grub-mkimage.exe grub-mkimage 生成一个grub-mkimage , 并加 x权限; 2、把build_grub.sh 里的
grub-mkimage -d x86_64-efi -p "/boot/grub" -o grubx64.efi -O x86_64-efi $modules 改了一下:
./grub-mkimage -d x86_64-efi -p "/boot/grub" -o grubx64.efi -O x86_64-efi $modules  再运行 build_grub.sh  可以了。请问两位老大,你们也是这种情况吗? 还是的linux 环境有点问题?请指点!

点评

你这是什么操作,莫名其妙。 在Linux下,你应该用系统提供的grub-mkimage。 grub-mkimage.exe当然是给windows用的。 Linux发行版一般都自带grub,你用它自带的就好了。 不自带,也可以直接从软件仓库安装。  详情 回复 发表于 2020-1-19 16:09
回复

使用道具 举报

发表于 2020-1-19 15:52:12 | 显示全部楼层
截图
grub2.jpg
winf.jpg
winf2.jpg

点评

你得先要有Grub2啊,有update_grub2.sh  详情 回复 发表于 2020-1-19 16:05
回复

使用道具 举报

发表于 2020-1-19 16:05:27 | 显示全部楼层

你得先要有Grub2啊,有update_grub2.sh
回复

使用道具 举报

发表于 2020-1-19 16:09:46 | 显示全部楼层
jxdeng2017 发表于 2020-1-19 15:46
W大,hilsonma兄: 再次测试了一下,情况如下,用W大的最新的 grub2-latest.tar.gz ,放到Win 10 的WSL2 的 ...

你这是什么操作,莫名其妙。
在Linux下,你应该用系统提供的grub-mkimage。
grub-mkimage.exe当然是给windows用的。
Linux发行版一般都自带grub,你用它自带的就好了。
不自带,也可以直接从软件仓库安装。


点评

知道了,应该补齐用update_grub2.sh 先下载grub2,因为太慢太慢,所以,我就用Windows 下的grub2-latest.tar.gz 包了。明白了!!谢谢,W大,hilsonma兄,葱大!!  详情 回复 发表于 2020-1-19 17:46
WSL内的ubuntu 肯定不带grub-mkimage !所以,来了一波骚操作!  详情 回复 发表于 2020-1-19 17:38
有没有可能是wsl的问题呢?他用的是wsl,会不会是不带grub-mkimage的 我用的是porteus,在不带-d参数的时候会有 usr/....没有x86_64-efi 这样的提示,加上-d 参数指向grub2定制包中的x86_64-efi就好了,没注意gru  详情 回复 发表于 2020-1-19 16:55
回复

使用道具 举报

 楼主| 发表于 2020-1-19 16:55:36 | 显示全部楼层
wintoflash 发表于 2020-1-19 16:09
你这是什么操作,莫名其妙。
在Linux下,你应该用系统提供的grub-mkimage。
grub-mkimage.exe当然是给w ...

有没有可能是wsl的问题呢?他用的是wsl,会不会是不带grub-mkimage的

我用的是porteus,在不带-d参数的时候会有 usr/....没有x86_64-efi 这样的提示,加上-d 参数指向grub2定制包中的x86_64-efi就好了,没注意grub-mkimage用的是不是定制包的,按你们这样一说,应该是porteus自带的grub-mkimage

点评

几乎所有的Linux发行版都带grub,不带的,也能通过官方仓库安装grub。 无论是何种情况,非开发者都应当使用系统自带的或者官方仓库的。  详情 回复 发表于 2020-1-19 17:12
回复

使用道具 举报

发表于 2020-1-19 17:12:19 | 显示全部楼层
hilsonma 发表于 2020-1-19 16:55
有没有可能是wsl的问题呢?他用的是wsl,会不会是不带grub-mkimage的

我用的是porteus,在不带-d参数 ...

几乎所有的Linux发行版都带grub,不带的,也能通过官方仓库安装grub。
无论是何种情况,非开发者都应当使用系统自带的或者官方仓库的。


回复

使用道具 举报

发表于 2020-1-19 17:23:54 | 显示全部楼层
wsl需要sudo apt-get install grub还是

grub-common忘了
回复

使用道具 举报

发表于 2020-1-19 17:38:52 | 显示全部楼层
wintoflash 发表于 2020-1-19 16:09
你这是什么操作,莫名其妙。
在Linux下,你应该用系统提供的grub-mkimage。
grub-mkimage.exe当然是给w ...

WSL内的ubuntu 肯定不带grub-mkimage !所以,来了一波骚操作!
回复

使用道具 举报

发表于 2020-1-19 17:46:24 | 显示全部楼层
本帖最后由 jxdeng2017 于 2020-1-19 17:51 编辑
wintoflash 发表于 2020-1-19 16:09
你这是什么操作,莫名其妙。
在Linux下,你应该用系统提供的grub-mkimage。
grub-mkimage.exe当然是给w ...

知道了,WSL 里的ubuntu 确实缺少grub,应该先安装 grub : sudo apt get grub ;再用update_grub2.sh 先下载grub2,因为太慢太慢,所以,我就用Windows 下的grub2-latest.tar.gz 包了。明白了!!谢谢,W大,hilsonma兄,葱大!!
回复

使用道具 举报

发表于 2020-1-19 18:47:21 | 显示全部楼层
玩wsl的导这个注册表,很方便
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\bash here]
"icon"="C:\\Users\\Administrator\\AppData\\Local\\lxss\\bash.ico"
@="在此打开WSL"

[HKEY_CLASSES_ROOT\Directory\Background\shell\bash here\command]
@="C:\\Windows\\System32\\bash.exe"

回复

使用道具 举报

发表于 2020-1-19 23:21:07 | 显示全部楼层
模板结构很好
回复

使用道具 举报

发表于 2020-1-20 11:40:35 | 显示全部楼层
重要提醒:在我测试H大,W大的GRUB定制程序时,由于使用了Win 10 1903里的 WSL2 ,在WSL2 的ubuntu 18.04 环境里,根本就没有grub环境,所以在运行脚本时误认为W大的grub2 定制包没有提供grub-mkimage命令,经大师们的指点,终于找到了处理办法, grub-mkimage命令包含在grub2-common包中,执行:
sudo apt-get update
sudo apt install grub-common
解决问题。

再执行H大,W大的GRUB定制程序,一马平川!!!
回复

使用道具 举报

发表于 2020-2-21 08:42:05 | 显示全部楼层
太深奥,
看不懂


回复

使用道具 举报

发表于 2020-3-8 16:30:30 | 显示全部楼层

RE: 将grub2启动模板封装成efi单文件

本帖最后由 nivigo 于 2020-3-8 16:35 编辑

我修改了一下可以在win下定制,自测成功,欢迎大家测试。
用法:
1、把tools.7z解压出来,把tools文件夹放到grub2的文件夹下。
2、进入tools文件夹点击“定制grub2_efi单文件版.bat”
3、在grub2文件夹下找bootx64.efi就是生成的efi文件。
4、把bootx64.efi文件放efi/boot/文件夹下就行了。
https://pan.baidu.com/s/1UBZKZoDKT8JUsWT9H7zEkg  验证码:qxhr


点评

感谢分享。 仿照你的方法,我更新了我的方案。 下载附件,解压放到grub2文件夹 将 build/boot/grub 里的内容清空,换上自己的启动模板的整套文件 启动模板的主程序需要命名为grub.cfg 按自己的启动模  详情 回复 发表于 2020-3-8 19:32
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-16 13:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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