AndyChen 发表于 2021-2-16 22:25
文件“grub2 生成 efi 引导 ” 是我修改后的,生成的efi有问题,能帮我看看,我的是哪里错了?
我测试没有发现问题
本帖最后由 hilsonma 于 2021-2-17 07:12 编辑
AndyChen 发表于 2021-2-16 22:25
文件“grub2 生成 efi 引导 ” 是我修改后的,生成的efi有问题,能帮我看看,我的是哪里错了?
看了一下你的菜单内容,共3项
默认项是进入自动还原的B版vhd,不需密码
另两项需要输入用户名和密码,一个是A版vhd,另一个是pe
我的建议是,使用自定义命令代替密码,自定义命令只有你自己知道,相当于密码,普通用户只能通过菜单进入默认项,也就是自动还原的B版vhd.
你告诉我 A版vhd / B版vhd / pe 的文件名和路径,我会告诉你我是怎样配置菜单的,在达成你的要求的同时应该会更便于操作。
例如:
假设
A版vhd的文件路径是 /VHD/WIN10_A_CHILD.VHDX
B版vhd的文件路径是 /VHD/WIN10_B_CHILD1.VHDX 和 /VHD/WIN10_B_CHILD2.VHDX
pe的文件路径是 /efi/WINPE/WINPE.WIM
那么我的菜单配置如下:
source $prefix/run/run.cfg
function andy {run /VHD/WIN10_A_CHILD.VHDX;}
function pe {run /efi/WINPE/WINPE.WIM;}
terminal_output gfxterm
loadfont unicode
theme=elegant/theme.txt
timeout=1
menuentry "1.WIN10 OS B AUTO RESTORE" --class windows--hotkey=1 {
if search -n -s -f /VHD/CHILD.2; then
xntboot /VHD/WIN10_B_CHILD2.VHDX
elif search -n -s -f /VHD/WIN10_B_CHILD1.VHDX; then
xntboot /VHD/WIN10_B_CHILD1.VHDX
fi
}
menuentry "2.Reboot" --class reboot --hotkey=2 {reboot;}
这样,开机默认进B版vhd
开机时按上下箭头键,出现grub2菜单并等待选择
这时,按c进入命令行,
输入andy回车可进入A版vhd
或者输入pe回车可进入pe
如果不想开机时按上下箭头键,就将timout=1改为3以上,比如你原来的timout=10,这样开机时会出现grub2菜单并等待若干秒
使用自定义命令与使用密码相比,减少了键盘输入,所以应该会更简便,同时也达到了屏蔽非授权用户的目的,因为非授权用户并不知道自定义命令,菜单上也没有显示。
本帖最后由 AndyChen 于 2021-2-17 11:47 编辑
source $prefix/run/run.cfg
function AndyChen {run /WIN10_A_CHILD.VHDX;}
function PE {run /W10PE64.WIM;}
terminal_output gfxterm
loadfont $prefix/fonts/RobotoMonoLightItalicForPowerline.pf2
theme=$prefix/themes/elegant/theme.txt
timeout=10
default=0
menuentry "1.WIN10 OS B AUTO RESTORE" --class windows--hotkey=1 {
if search -n -s -f /VHD/CHILD.1; then
ntboot /VHD/WIN10_B_CHILD1.VHDX
elif search -n -s -f /VHD/CHILD.2; then
ntboot /VHD/WIN10_B_CHILD2.VHDX
fi
}
menuentry "2.REBOOT" --class windows--hotkey=2 {reboot;}
hilsonma 发表于 2021-2-17 06:35
看了一下你的菜单内容,共3项
默认项是进入自动还原的B版vhd,不需密码
是 xntboot,还是 ntboot ?
启动不了,看下图
[分享] Grub2_2.04 全模块 .efi 文件
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=422810&extra=page%3D1
我用这个efi启动,一样关机,重启,一样进不了系统
我是在实体机测试的,是有这种情况。请问你们是在虚拟机测试还是在实体机测呢?
本帖最后由 hilsonma 于 2021-2-17 14:54 编辑
AndyChen 发表于 2021-2-17 11:57
启动不了,看下图
can't find command 'run' 说明没有run命令
这是我自定义的命令,在run文件夹中。
你要使用我的整个模板,然后修改其中的 grub.cfg 就可以了
成功之后再尝试换字体及其他修改。
附件是根据你的菜单修改过的模板,以及生成的单文件,我试过应该是没有问题的。
你原菜单中自定义命令是有大写的,我暂时照搬。
但我建议全部换成小写,并且尽量将命令名缩短,以方便输入。
例如 Andychen 改为 ac 或 andy
PE 改为 pe
注意grub2中是大小写不同的,有区分的。
AndyChen 发表于 2021-2-17 11:49
是 xntboot,还是 ntboot ?
是xntboot,我自定义的,引用ntboot并添加了参数,如果你将xntboot直接改成ntboot 是会缺少参数的。
你可以打开 build\boot\grub\run\run.cfg 来看,里面就定义了 xntboot 命令以及其他命令,主命令是run。
AndyChen 发表于 2021-2-17 11:45
source $prefix/run/run.cfg
function AndyChen {run /WIN10_A_CHILD.VHDX;}
function AndyChen {run /WIN10_A_CHILD.VHDX;}
建议命令名改为小写并缩短,如
function andy {run /WIN10_A_CHILD.VHDX;}
function PE {run /W10PE64.WIM;}
同样建议命令名改为小写
default=0
这一句本身是默认的,不需要,只有默认不是0时才需要
所以我们只要将默认项放到第一位就可以了,不需要这一句
ntboot /VHD/WIN10_B_CHILD1.VHDX
不能将xntboot改成ntboot,因为xntboot是自定义命令,是添加了参数的ntboot,如果改成ntboot就需要添加相应的参数
elif search -n -s -f /VHD/CHILD.2; then
在判断使用哪一个副本时,存在CHILD.2就使用副本2,不存在CHILD.2就不需找CHILD.1了,直接找副本1并启动,所以并不是两个标志文件都要找的,找其中一个就可以了。我们始终是使用同一个标志文件,只是通过将标志文件改名来达到启动不同副本的目的。
感谢分享!
大大越来越厉害了!期待新成果
感谢大佬分享,正好是我需要的
hilsonma 老师:你好!
你的文章很受益!我在 efi 系统上试了GRUB_v2.04和GRUB_v2.06俩个版本,按照文章中的方法都没有成功。
loopback loop (memdisk)/memdisk.cpio.gz
显示未知的文件系统。
我也注意到GRUB_v2.04和GRUB_v2.06这俩个版本,没有 map.mod fb.mod 等模块。
针对 memdisk.cpio.gz 装入.efi 文件,欢迎各位高手提出解决方法!
补充:在GRUB_v2.04 或 GRUB_v2.06,设置
--memdisk=memdisk.cpio(未经过 gz 压缩)
--config=build\pre.cfg
loopback memdisk /path/to/memdisk.cpio(未经过 gz 压缩)
set prex=(memdisk)/boot/grub
或干脆不设置--config
都会成功生成所需要的efi单文件。
一旦 gz 压缩 后设置
--memdisk=memdisk.cpio(经过 gz 压缩)
--config=build\pre.cfg
loopback loop (memdisk)/memdisk.cpio.gz
set root=loop
set prefix=($root)/boot/grub
生成的efi单文件启动后报错:未知的文件系统.
请大师出手相助求解!提前谢谢!
2011yfrui 发表于 2022-2-18 10:02
hilsonma 老师:你好!
你的文章很受益!我在 efi 系统上试了GRUB_v2.04和GRUB_v2.06俩个版本,按照文章中 ...
注意有6个模块是本封装模式要用到的:cpio gzio loopback lzopio memdisk newc
这6个模块不能缺少
2011yfrui 发表于 2022-2-18 15:17
补充:在GRUB_v2.04 或 GRUB_v2.06,设置
--memdisk=memdisk.cpio(未经过 gz 压缩)
官方版 GRUB2 不支持压缩的 memdisk 和 loopback 盘。
谢谢大师的回复!cpio gzio loopback lzopio memdisk newc 封装在内是必须的,否则未经 gz 压缩的.efi 单文件也不会成功启动。
目前求解的关键是 memdisk.cpio.gz 如何通过 gzio.mod lzopio.mod 解压转为 memdisk.cpio,然后
loopback loop (memdisk)/memdisk.cpio
set prefix=(loop)/boot/grub
问题 像是 解决了:
手动(定置),不支持的压缩的 ,(想用压缩的:要用 修改版 grub205)
定置时,理清 两个变量的 形成方法 (下图为 示例:具体 实践出真知)
感谢楼主分享
谢谢分享
感谢分享
看看这个帖子,学习如何将grub2封装成efi单文件啊
将其中的porteus.cfg放到自动菜单目录,就可以在自动菜单中选择启动
——我对porteus,纯属外行。如何启动porteus,能否详细些?
本帖最后由 hilsonma 于 2022-11-13 12:00 编辑
青青草 发表于 2022-11-11 10:06
将其中的porteus.cfg放到自动菜单目录,就可以在自动菜单中选择启动
——我对porteus,纯属外行。如何启 ...
要看你下载的porteus,我手上有个是这样启动的:
search -n -s -f /porteus/vmlinuz
linux /porteus/vmlinuz norootcopy nomagic
initrd /porteus/initrd.xz
把这三行放到 porteus.cfg 中,就可以在自动菜单中选择 porteus.cfg 来启动了
hilsonma 发表于 2022-11-13 11:59
要看你下载的porteus,我手上有个是这样启动的:
search -n -s -f /porteus/vmlinuz
linux /porteus/vm ...
用wintoflash的grub2文件管理器,找到porteus.cfg,作为grub2菜单打开。结果不行。
青青草 发表于 2022-11-13 12:32
用wintoflash的grub2文件管理器,找到porteus.cfg,作为grub2菜单打开。结果不行。
我刚才重启试了一下,我的电脑上是可以的
你可以到1楼我那个链接中下载我使用的这个porteus来试一试。
不同的版本有可能引导方法不一样。
hilsonma 发表于 2022-11-13 12:53
我刚才重启试了一下,我的电脑上是可以的
你可以到1楼我那个链接中下载我使用的这个porteus来试一试。
...
我就是从1楼那个链接中下载的
青青草 发表于 2022-11-13 17:34
我就是从1楼那个链接中下载的
对比看看你的路径有没有问题
正好需要这方面的,谢谢分享!
哦
