无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: hilsonma
打印 上一主题 下一主题

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

  [复制链接]
1#
发表于 2020-1-18 17:33:24 | 显示全部楼层
win10可以用wsl

点评

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

使用道具 举报

2#
发表于 2020-1-18 19:16:57 | 显示全部楼层
说一个问题:

用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
回复

使用道具 举报

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



你看错了。

回复

使用道具 举报

4#
发表于 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
回复

使用道具 举报

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

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

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


回复

使用道具 举报

6#
发表于 2020-3-27 14:04:33 | 显示全部楼层
2012kwy 发表于 2020-3-23 13:57
hilsonma大,按照此法依样画葫芦,想把之前wintoflash的Run模块中的grub2更新到最新版,打包后测试发现已 ...

你要下载源码,然后自己编译run用的grubfm模块。

点评

这个有难度。好像单一模块的功能正逐步被新版Grub2取代,Grub2变得越来越强,都快成了微型操作系统了,谢谢W大的奉献  详情 回复 发表于 2020-3-28 15:00
回复

使用道具 举报

7#
发表于 2020-3-28 16:37:08 | 显示全部楼层
2012kwy 发表于 2020-3-28 15:00
这个有难度。好像单一模块的功能正逐步被新版Grub2取代,Grub2变得越来越强,都快成了微型操作系统了,谢 ...

不会的话那你就直接用grub2-filemanager吧
回复

使用道具 举报

8#
发表于 2020-4-19 15:21:39 | 显示全部楼层
2000lg 发表于 2020-4-19 13:29
我现在想实现的功能是,加载自制的bootx64.efi。这个efi会自动加载Slic 2.5用来激活win7,加载完自动进入wi ...

http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
回复

使用道具 举报

9#
发表于 2020-4-19 16:11:18 | 显示全部楼层
2000lg 发表于 2020-4-19 15:52
多谢w大和楼主,就是看了两位的帖子,已经实现加载slic,并成功制作efi单文件。 您发的这个帖子也看过了 ...

我发的帖子里面27#有个支持命令行操作UEFI启动项的Bootice。
回复

使用道具 举报

10#
发表于 2020-4-20 13:36:39 | 显示全部楼层
2000lg 发表于 2020-4-20 13:08
多谢啦。用bcdedit命令编辑{bootmgr},然后把bootmgr设置成fwbootmgr的第一启动项也可以成功引导自定义 ...

不清楚。
grub4dos的slic不是我写的。
回复

使用道具 举报

11#
发表于 2020-5-8 15:57:05 | 显示全部楼层
szmsys 发表于 2020-5-8 15:04
重新制作了一次,手动输入命令,又显示这个

你再输入boot就启动了

点评

报告一个严重的问题,使用生成的 Efi 作为第一启动项,开机,关机都么有问题。 但是,计算机进入休眠模式后,无法成功唤醒,提示错误,这个问题有点严重啊!  详情 回复 发表于 2020-5-9 07:36
谢谢!加了一行boot,终于成功了。可是这满屏的字符太难看了,怎么去掉?  详情 回复 发表于 2020-5-8 19:00
谢谢老大,我试试  详情 回复 发表于 2020-5-8 17:40
用 chainloader /EFI/Microsoft/Boot/bootmgfw.efi 命令行 启动失败, 但是,用下面的就启动成功,咋回事 menuentry '正常启动(Windows)' --unrestricted { if [ 'pc' == $grub_platform ] ; then  详情 回复 发表于 2020-5-8 17:39
回复

使用道具 举报

12#
发表于 2020-5-9 08:09:01 | 显示全部楼层
本帖最后由 wintoflash 于 2020-5-9 08:11 编辑
szmsys 发表于 2020-5-9 07:36
报告一个严重的问题,使用生成的 Efi 作为第一启动项,开机,关机都么有问题。

但是,计算机进入休眠 ...

Windows 自己的问题,别赖我。你自己加载slic搞盗版Windows,微软不十分钟给你黑屏一次就已经不错了。



点评

老大,不是这样的。我用 mydigitallife 上的 WindSLIC 就没有这个休眠无法唤醒的问题。 另外,我对您只有感谢,不会赖你的感谢都来不及,咋会赖你  详情 回复 发表于 2020-5-9 08:25
回复

使用道具 举报

13#
发表于 2020-5-28 21:30:26 | 显示全部楼层
pseudo 发表于 2020-5-28 21:26
谢谢分享。
可以把grubfm.efi打包进去,在geub.cfg中作为一个菜单项运行吗?

可以,但是似乎没必要。grubfm本身可以加载外部菜单,想要全内置,可以直接改grubfm源码生成efi。

点评

试了一下没成功,不知道是哪里弄错。 我用楼主模板,grub文件夹下只放grub.cfg和grubfmx64.efi(5月14日)两个文件。grub.cfg内容为: menuentry "grubfm" { ls (loop)/boot/grub/; chainloader (loop)/boot  详情 回复 发表于 2020-5-28 22:39
回复

使用道具 举报

14#
发表于 2020-5-29 08:05:50 | 显示全部楼层
pseudo 发表于 2020-5-28 22:39
试了一下没成功,不知道是哪里弄错。

我用楼主模板,grub文件夹下只放grub.cfg和grubfmx64.efi(5月14 ...

启动 EFI 应用需要向其传递该应用的设备路径。(memdisk)是一个不存在的设备,传递空的设备路径很有可能出问题。
而且你这样玩俄罗斯套娃是何苦呢。

点评

1、grubfm有通用的优点,所以菜单里必备;grubfm有通用的缺点,要启动指定文件每次还需要一番选择,不能直达(也许grubfm有命令行方式可以直达?) 2、完全取代grub2命令,所有功能都由grubfm出发,毕竟还不方便。  详情 回复 发表于 2020-5-29 11:54
回复

使用道具 举报

15#
发表于 2020-5-29 14:57:24 | 显示全部楼层
pseudo 发表于 2020-5-29 11:54
1、grubfm有通用的优点,所以菜单里必备;grubfm有通用的缺点,要启动指定文件每次还需要一番选择,不能 ...

更新了一下,现在如果 EFI 文件位于不存在的磁盘上,会传递 root 设备的路径。

但是,我仍然不建议这种俄罗斯套娃的做法。
EFI 文件本来就应该放在固件能够认得到的硬盘上,否则在运行的过程中也可能会出问题。
你可以创建一个 img,把 efi 文件放里面,用 map 命令启动。这种虚拟盘是固件认可的。

要启动指定文件每次还需要一番选择,不能直达(也许grubfm有命令行方式可以直达?)
完全取代grub2命令,所有功能都由grubfm出发,毕竟还不方便。所以,不想把grubfmx64.efi直接作为bootx64.efi加载,只想把grubfm作为楼主菜单的一项,菜单还需要有其它菜单项。


把所有东西都集成到一个文件里面,想修改也不方便。
不如直接修改 grub2-filemanager 本身。基本上都是 grub 菜单,没什么神秘的。

点评

谢谢!更新后可以了。 另外遇到一个问题:wimboot可以启动(hd1)/pe.wim,即ud里的wim。uefi启动时,pe是否藏入ud都随意。而ntboot则报错: this command is available only for disk devices. 感觉是ntboot作了  详情 回复 发表于 2020-5-31 09:23
回复

使用道具 举报

16#
发表于 2020-5-31 09:50:01 | 显示全部楼层
本帖最后由 wintoflash 于 2020-5-31 09:55 编辑
pseudo 发表于 2020-5-31 09:23
谢谢!更新后可以了。

另外遇到一个问题:wimboot可以启动(hd1)/pe.wim,即ud里的wim。uefi启动时,pe ...

这不是程序做出的限制,而是 ntboot 本身的局限。
你没有用 grub4dos ntboot 启动过 ud 区里面的 wim 吧。

点评

谢谢,明白了,看来要改ntboot才行,暂时先用wimboot吧。  详情 回复 发表于 2020-6-2 11:38
回复

使用道具 举报

17#
发表于 2020-6-27 06:30:18 | 显示全部楼层
pseudo 发表于 2020-6-26 23:43
也不行。
在grub提示符下试好的if语句放到pre.cfg里就不行,导致菜单出不来了。

看样子你是想在嵌入grub的配置里面用if。
这不行。
只有进入normal环境后才能用if then function while return 等流程控制语句,在这之前是rescue环境,只支持简单语句。

点评

你的解说更容易理解。 但是官方的说明是怎么回事呢?是不是官方说明错了? [attachimg]460327[/attachimg] 因为我没有需求,所以没有特意去试过。  详情 回复 发表于 2020-6-27 07:12
回复

使用道具 举报

18#
发表于 2020-6-27 08:03:43 | 显示全部楼层
hilsonma 发表于 2020-6-27 07:12
你的解说是容易理解。
只是官方的说明好象不一样。
因为我没有需求,所以没有特意去试过if。

你试试不就知道了吗。反正我和官方,总有一个错的。
  1. loopback 是需要loopback模块的,估计在rescue下不能用(我没有试过)
复制代码

你试试不就知道了吗。rescue 下什么命令都可以使用。
但是 if else while 这些不是命令。

点评

试了,官方错的。 没进入normal之前使用if 会提示 Unknown command 'if'. 其他命令照执行。  详情 回复 发表于 2020-6-27 10:03
回复

使用道具 举报

19#
发表于 2020-7-4 19:34:21 | 显示全部楼层
欢迎测试新版 wimboot 和 ntboot :http://bbs.wuyou.net/forum.php?m ... 545&pid=4097585

现在wimboot 和 ntboot 都可以自己生成 bcd 和 boot.sdi 了,不再需要自己准备这两个文件。另外还可以调整bcd的多种选项。

点评

已试,OK. http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=417545&pid=4097804&fromuid=586362  详情 回复 发表于 2020-7-5 06:04

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5 兄弟对grub2添加的好功能不少呀。

查看全部评分

回复

使用道具 举报

20#
发表于 2020-11-17 20:08:17 | 显示全部楼层
pseudo 发表于 2020-11-17 18:30
如果用grub4dos,倒是能封装成大体积grldr单文件

grldr可以撑到几mb吗?

点评

当初单文件化用的是手工“续尾法”:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=154873&extra=page%3D1&page=1 后来fbinsttool工具已经把续尾工作自动化通用化了。 续尾法其实并没有实质性改变grldr,  详情 回复 发表于 2020-11-18 12:35
回复

使用道具 举报

21#
发表于 2020-11-18 13:55:03 | 显示全部楼层
pseudo 发表于 2020-11-18 12:35
当初单文件化用的是手工“续尾法”:http://bbs.wuyou.net/forum.php?m ... tra=page%3D1&page=1
http:/ ...

> 续尾法其实并没有实质性改变grldr,所以与体积关系不大。
最多能续多少?4GB?把一个winpe的iso都弄进去可以吗?
> 如果.efi没有校验方面问题,原则上应该也可以用续尾法实现单文件化。
不可以。PE格式不能这样做。

点评

1、续尾容易 copy命令带/B参数就可以实现。 2、尾大无妨 加了5GB尾部的大grldr跟原来的grldr功能一样。grub4dos载人stage2之类时不涉及尾部。 3、尾部可map 且假定大grldr在盘上是连续存放无碎片的。 已知续尾  详情 回复 发表于 2020-11-20 11:37
回复

使用道具 举报

22#
发表于 2020-11-20 19:51:10 | 显示全部楼层
pseudo 发表于 2020-11-20 11:37
1、续尾容易
copy命令带/B参数就可以实现。
2、尾大无妨

grub.exe也能续尾吗?

点评

grldr没问题,没试过grub.exe。 你可以用 copy /B grub.exe /B +pe.iso /B 命令对grub.exe进行续尾,看续尾后grub.exe原有功能有没有受到影响。 只要续尾不影响原功能,就有机会通过续尾实现单文件化。  详情 回复 发表于 2020-11-21 12:28
回复

使用道具 举报

23#
发表于 2021-1-12 16:09:26 | 显示全部楼层
wuyouman01 发表于 2021-1-12 11:05
如何添加 font ?把fonts目录添加到grub.cfg后,
loadfont  $prefix/fonts/unicode.pf2
set theme= $prefi ...

set theme=后面不要有空格。

点评

menuentry "1.Windows" --class windows --hotkey=1 {if search -n -s -f /Efi/Microsoft/Boot/Bcd; then chainloader /Efi/Microsoft/Boot/bootmgfw.efi fi} menuentry "2.WindowsRe" --class recovery --  详情 回复 发表于 2021-1-12 22:05
谢谢您。  详情 回复 发表于 2021-1-12 21:37
回复

使用道具 举报

24#
发表于 2022-2-19 08:22:05 | 显示全部楼层
2011yfrui 发表于 2022-2-18 15:17
补充:在GRUB_v2.04 或 GRUB_v2.06,设置
--memdisk=memdisk.cpio(未经过 gz 压缩)

官方版 GRUB2 不支持压缩的 memdisk 和 loopback 盘。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 17:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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