无忧启动论坛

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

[发布] grub2文件管理器(BIOS/UEFI启动 ISO/WIM/VHD...)

    [复制链接]
发表于 2021-1-12 12:04:17 | 显示全部楼层
wintoflash 发表于 2020-5-1 19:18
现在引入对 Ventoy 启动方式的实验性支持。
欢迎感兴趣并且对这方面有一些了解的朋友测试。不了解 Linux  ...

请问制作单文件grubefi,添加字体和主题命令应该怎么样写?
回复

使用道具 举报

发表于 2021-1-14 10:12:16 | 显示全部楼层
经过一段时间的研究给跟自己一样的小白。
如果想要用grubfm做自已的Grub引导菜单
search --set=user -f -q /boot/grubfm/config;
if [ -n "${user}" ];
then
  grubfm_set -u "${user}";
  source (${user})/boot/grubfm/config;
fi;
在初始化时会查找分区下/boot/grubfm目录下的config文件,如果文件存在执行文件中的内容,如果不存在则打开文件管理器。
通过这个我们可以写自己的自定义菜单
config内容可以写入如下内容来载入自己的菜单也可修改为自己菜单所在路径。
search --no-floppy --file --set=root /boot/grubfm/grub.cfg
configfile /boot/grubfm/grub.cfg
在自己菜单结尾可以加入如下代码来载入快捷菜单
source ${prefix}/global.sh;
启动分区中的WIM文件跟VHD文件
menuentry "【01】启动 Windows PE x64 增强版" --class PE {
     search -f /WINPE/winpe_X64.wim -s root;
     set grubfm_file=($root)/WINPE/winpe_X64.wim
     configfile ${prefix}/rules/wim/wimboot.sh
}
menuentry "【02】启动 VHD Windows 10" --class PE {
     search -f /VHDX/WIN10.vhdx -s root;
     set grubfm_file=($root)/VHDX/WIN10.vhdx
     configfile ${prefix}/rules/vhd/ntboot.sh
}
如果要像内部一样列表多启动菜单可以写成如下,grubfm必需在grubfm_open之前不然打开肉容为空。
menuentry "【01】启动 Windows PE x64 增强版" --class PE {
search -f /WINPE/winpe_X64.wim -s root;
grubfm;
grubfm_open "($root)/WINPE/winpe_X64.wim";
}
menuentry "【02】启动 VHD Windows 10" --class PE {
search -f /VHDX/WIN10.vhdx -s root;
grubfm;
grubfm_open "($root)/VHDX/WIN10.vhdx"
}
回复

使用道具 举报

发表于 2021-1-21 18:11:12 | 显示全部楼层
请教一下大神:
      新版 grub2文件管理器, F1现在显示GRUB、CPU、主板和RAM信息。
那么,显示GRUB、CPU、主板和RAM信息的命令语句是什么?
以前grub2文件管理器可以解压缩,里面的 .sh文件都可以打开阅读;现在的新版grub2文件管理器,似乎无法解压缩了。
回复

使用道具 举报

 楼主| 发表于 2021-1-21 18:38:24 | 显示全部楼层
本帖最后由 wintoflash 于 2021-1-21 18:39 编辑
青青草 发表于 2021-1-21 18:11
请教一下大神:
      新版 grub2文件管理器, F1现在显示GRUB、CPU、主板和RAM信息。
那么,显示GRUB、C ...

cpuid, cputemp, smbios
smbios 的用法,可以看 smbios 官方文档。cpuid 的用法,可以看 intel 或 amd 的文档。
grubfm 里面的文件你可以直接在 github 上浏览,没必要解压。
https://github.com/a1ive/grub2-f ... ot/grubfm/hwinfo.sh
或者在 gitee 上查看 https://gitee.com/a1ive/grub2-fi ... ot/grubfm/hwinfo.sh
如果非得解压,用 7-Zip 就行。
回复

使用道具 举报

发表于 2021-1-21 18:49:35 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2021-1-21 19:18:37 | 显示全部楼层
wintoflash 发表于 2021-1-21 18:38
cpuid, cputemp, smbios
smbios 的用法,可以看 smbios 官方文档。cpuid 的用法,可以看 intel 或 amd  ...

谢谢!
      新版grub2文件管理器无法用 7-Zip解压: 解压mods文件时,显示“无法作为压缩包打开文件”。
以前的版本都可以用 7-Zip解压。
回复

使用道具 举报

 楼主| 发表于 2021-1-21 19:34:53 | 显示全部楼层
本帖最后由 wintoflash 于 2021-1-21 19:37 编辑
青青草 发表于 2021-1-21 19:18
谢谢!
      新版grub2文件管理器无法用 7-Zip解压: 解压mods文件时,显示“无法作为压缩包打开文件” ...

1.png
2.png

我也是奇了怪了,为什么你们都不愿意去直接看源码,非得研究怎么用7-Zip提取grub2 efi文件的内存盘。
回复

使用道具 举报

发表于 2021-1-21 19:42:20 | 显示全部楼层
不错的楼主产品收到了
回复

使用道具 举报

发表于 2021-1-22 10:47:02 | 显示全部楼层
wintoflash 发表于 2021-1-21 19:34
我也是奇了怪了,为什么你们都不愿意去直接看源码,非得研究怎么用7-Zip提取grub2 efi文件的内存盘 ...

谢谢!
再请教一个问题:哪个实时时钟很好,可不可以把它弄到菜单界面上?如果可以,如何书写?
再次谢谢!
回复

使用道具 举报

 楼主| 发表于 2021-1-22 11:17:45 | 显示全部楼层
本帖最后由 wintoflash 于 2021-1-22 11:18 编辑
青青草 发表于 2021-1-22 10:47
谢谢!
再请教一个问题:哪个实时时钟很好,可不可以把它弄到菜单界面上?如果可以,如何书写?
再次谢 ...

什么叫"菜单界面"?
菜单项是不会随变量改变而更新的,只有主题才会。


至于主题上怎么显示时间,我在论坛里面说过。
http://bbs.wuyou.net/forum.php?m ... &fromuid=487838
https://github.com/a1ive/grub2-f ... hwinfo/grub.txt#L49
回复

使用道具 举报

发表于 2021-1-22 11:32:10 | 显示全部楼层
wintoflash 发表于 2021-1-22 11:17
什么叫"菜单界面"?
菜单项是不会随变量改变而更新的,只有主题才会。

好的,谢谢!
回复

使用道具 举报

发表于 2021-2-4 01:08:30 | 显示全部楼层
这个可以直接启动ISO文件的????
回复

使用道具 举报

发表于 2021-2-16 09:35:51 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2021-2-16 11:27 编辑
wintoflash 发表于 2021-1-22 11:17
什么叫"菜单界面"?
菜单项是不会随变量改变而更新的,只有主题才会。

grubfm-zh_CN2021-02-12启动debian-live-10.8.0-amd64-kde.iso失败,求帮助
1、我去清华大学开源站下载的debian-live-10.8.0-amd64-kde.iso,这个开源站下载速度超快:
https://mirrors.tuna.tsinghua.edu.cn/debian-cd/10.8.0-live/amd64/iso-hybrid/


文件名称: debian-live-10.8.0-amd64-kde.iso
文件大小: 2.65 GB (2,840,985,600 字节)
MD5: 15C052A9F857DBDC8280B12ED1199350


用grubfm启动debian-live-10.8.0-amd64-kde.iso失败。
我是先用grubx64.efi作为第一引导,引导grubfm:
menuentry "/boot/grub2/grubfmx64.efi" "/boot/grub2/grubfmx64.efi" --hotkey=4 {
search --no-floppy --set --file $2
chainloader $2
}


找到ISO之后,选择从ISO引导debian,或者用loopback的方法结果一样。下面的截图是在vmware虚拟机里面截图测试的,实体机结果一样,虚拟机里面只是为了方便截图。
GPT_test-2021-02-16-08-13-05.png



GPT_test-2021-02-16-08-13-50.png


GPT_test-2021-02-16-08-18-17.png
debian-live-7.2-amd64-kde-desktop.iso可以成功启动。


2、我用下面的菜单,UEFI下面尝试启动debian-live-10.8.0-amd64-kde.iso也失败。cheatcodes是参考原光盘里面的grub.cfg来写的。友情各路大神指点一二。iso放在NTFS分区,有无影响?
menuentry "/linux/debian/debian-live-10.8.0-amd64-kde.iso" "/linux/debian/debian-live-10.8.0-amd64-kde.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2
loopback loop $2
linux (loop)/live/vmlinuz-4.19.0-14-amd64 findiso=/linux/debian/debian-live-10.8.0-amd64-kde.iso boot=live components splash quiet
initrd (loop)/live/initrd.img-4.19.0-14-amd64
}
GPT_test-2021-02-16-09-12-56.png


用下面的菜单,启动debian-live-7.2-amd64-kde-desktop.iso没有问题:
menuentry "/linux/debian/debian-live-7.2-amd64-kde-desktop.iso" "/linux/debian/debian-live-7.2-amd64-kde-desktop.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2
loopback loop $2
linux (loop)/live/vmlinuz boot=live findiso=/linux/debian/debian-live-7.2-amd64-kde-desktop.iso boot=live config quiet splash
initrd (loop)/live/initrd.img
}




3、live-boot - System Boot Components
https://manpages.debian.org/testing/live-boot-doc/live-boot.7.en.html
我查看了相关debian启动的cheatcodes,感觉findiso用法没问题啊,奇怪得很。

4、另外想请问下,grub2里面的变量,加上大括号和不加,有没有区别?
set root=(hd0,msdos1)
linux (loop)/live/vmlinuz findiso=${isofile} boot=live components memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal


${isofile}与$isofile这样子的变量,倒底有何区别?好像没看出来有什么区别。
GPT_test-2021-02-16-10-21-55.png






回复

使用道具 举报

发表于 2021-2-16 11:23:10 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-16 09:35
grubfm-zh_CN2021-02-12启动debian-live-10.8.0-amd64-kde.iso失败,求帮助
1、我去清华大学开源站下载 ...

是不是iso放在 exFAT/NTFS 分区里面?一般情况下要放 FAT32 分区里面。我刚试了,放FAT32分区里面可以正常启动。


点评

我也曾经怀疑过是不是因为放在NTFS分区的问题,可是我的硬盘上面没有那么大的FAT32分区可以用来尝试,这个ISO大小是2.65GB。懒得调整分区了。 我很奇怪,为啥debian不能从NTFS分区启动,debian7就可以啊。  详情 回复 发表于 2021-2-16 11:25
回复

使用道具 举报

发表于 2021-2-16 11:25:10 | 显示全部楼层
xbmc 发表于 2021-2-16 11:23
是不是iso放在 exFAT/NTFS 分区里面?一般情况下要放 FAT32 分区里面。我刚试了,放FAT32分区里面可以正 ...

我也曾经怀疑过是不是因为放在NTFS分区的问题,可是我的硬盘上面没有那么大的FAT32分区可以用来尝试,这个ISO大小是2.65GB。懒得调整分区了。
我很奇怪,为啥debian10.8不能从NTFS分区启动,debian7就可以啊。
回复

使用道具 举报

发表于 2021-2-16 12:40:35 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-16 11:25
我也曾经怀疑过是不是因为放在NTFS分区的问题,可是我的硬盘上面没有那么大的FAT32分区可以用来尝试,这 ...

放 NTFS 分区之后,确实就不能启动了。
至于变量要不要加花括号,建议全都加上。
比如:
  1. echo "$abcd"
  2. echo "${a}bcd"
  3. echo "${abc}d"
  4. echo "${abcd}"
复制代码




点评

刚才在虚拟机里面新建了一个FAT32硬盘,进行测试,把debian-live-10.8.0-amd64-kde.iso拷贝进去,grubfm-zh_CN2021-02-12和手工写的菜单都可以启动。 debian真的是一代不如一代啊!放在NTFS上面的镜像都不支持,完  详情 回复 发表于 2021-2-16 14:03
回复

使用道具 举报

发表于 2021-2-16 12:51:08 | 显示全部楼层
good
回复

使用道具 举报

发表于 2021-2-16 14:03:42 | 显示全部楼层
xbmc 发表于 2021-2-16 12:40
放 NTFS 分区之后,确实就不能启动了。
至于变量要不要加花括号,建议全都加上。
比如:

刚才在虚拟机里面新建了一个FAT32硬盘,进行测试,把debian-live-10.8.0-amd64-kde.iso拷贝进去,grubfm-zh_CN2021-02-12和手工写的菜单都可以启动。
debian真的是一代不如一代啊!放在NTFS上面的镜像都不支持,完全是忽略我大Windows用户群体啊!搞什么嘛。
回复

使用道具 举报

发表于 2021-2-16 14:45:01 | 显示全部楼层
本帖最后由 ksafei 于 2021-2-16 14:48 编辑

最近用grub2FM和map 启动有svbus驱动的iso PE时会一直卡在windows图标处转圈,只能强制重启(如下图)。找到一个2020年10月的grub2FM则正常(UEFI安全启动)
QQ截图20210216140403.png

测试PE: 1.@chiannet USBOSV3.iso
            2.@2011whp  svbusPE.iso
链接:https://pan.baidu.com/s/1vOHmKJ2OxV2CZcg8scjV0g
提取码:eruh
回复

使用道具 举报

发表于 2021-2-17 00:26:30 | 显示全部楼层
收藏了
回复

使用道具 举报

发表于 2021-2-17 15:54:47 | 显示全部楼层
ksafei 发表于 2021-2-16 14:45
最近用grub2FM和map 启动有svbus驱动的iso PE时会一直卡在windows图标处转圈,只能强制重启(如下图)。找到 ...

如果不是用在vhd或ramos上(比如pe),适合进桌面后再加载svbus驱动
要么自己加参数自定义加载iso,
回复

使用道具 举报

发表于 2021-2-17 16:52:45 | 显示全部楼层
江南一根葱 发表于 2021-2-17 15:54
如果不是用在vhd或ramos上(比如pe),适合进桌面后再加载svbus驱动
要么自己加参数自定义加载iso,

grub2fm启动这种PE好像12月前都是正常,近期更新才发现卡。如果菜单引导的话请问怎样加参数
回复

使用道具 举报

发表于 2021-2-17 18:11:02 | 显示全部楼层
ksafei 发表于 2021-2-16 14:45
最近用grub2FM和map 启动有svbus驱动的iso PE时会一直卡在windows图标处转圈,只能强制重启(如下图)。找到 ...

1.png
回复

使用道具 举报

发表于 2021-2-20 15:48:50 | 显示全部楼层
wintoflash 发表于 2021-1-22 11:17
什么叫"菜单界面"?
菜单项是不会随变量改变而更新的,只有主题才会。

大神,我试了loopback.cfg方案,用于启动veket和puppy,都失败了,我的菜单如下,虚拟机卡死,“固件遇到意外的异常情况。虚拟机无法引导”。实体机直接死机了。我用命令行进去看了,都是卡死在这一句:“configfile /boot/grub/loopback.cfg”。

可是你的grubfm,选择loopback.cfg方案之后,veket和puppy,是怎么做到的?

menuentry "/linux/veket/veket-20.10.iso-loopback" "/linux/veket/veket-20.10.iso" {
iso_path="/linux/veket/veket-20.10.iso"
export iso_path
search --set=root --file $iso_path
loopback loop $iso_path
root=(loop)
configfile /boot/grub/loopback.cfg
loopback --delete loop
}

menuentry "/linux/puppy/fossapup64-9.5.iso-loopback" "/linux/puppy/fossapup64-9.5.iso" {
set iso_path="/linux/puppy/fossapup64-9.5.iso"
export iso_path
search --no-floppy --set --file $2
loopback loop $2
set root=loop
configfile /boot/grub/loopback.cfg
loopback --delete loop
}

回复

使用道具 举报

发表于 2021-2-20 16:11:09 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-20 15:48
大神,我试了loopback.cfg方案,用于启动veket和puppy,都失败了,我的菜单如下,虚拟机卡死,“固件遇到 ...

直接参考grubfm里面的脚本不就行了
回复

使用道具 举报

发表于 2021-2-20 16:51:28 | 显示全部楼层
江南一根葱 发表于 2021-2-20 16:11
直接参考grubfm里面的脚本不就行了

我看了下脚本,没发现什么根本性的区别啊。好像获取了rootuuid,我试了也不行。
回复

使用道具 举报

发表于 2021-2-20 19:01:10 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-20 16:51
我看了下脚本,没发现什么根本性的区别啊。好像获取了rootuuid,我试了也不行。

linux的iso貌似都是靠给内核传递相关参数来启live的吧,,在正确的时间正确地传递正确的参数给内核,让内核来根据uuid或其它路径查找正确的设备或路径加载正确的initrd挂载正确的文件系统。。就行了吧

启不来应该就是某步出错了,或者需要修改initrd脚本,让它强制加载你想要挂载的文件系统
grubfm启linux貌似干的就是这些事,即使是启win的iso也是干的这个事。
回复

使用道具 举报

发表于 2021-2-20 21:32:22 | 显示全部楼层
江南一根葱 发表于 2021-2-20 19:01
linux的iso貌似都是靠给内核传递相关参数来启live的吧,,在正确的时间正确地传递正确的参数给内核,让内 ...

你说的思路很对,但我想要知道细节,veket和puppy据我所知,原生不支持loopback.cfg的。不知道w大用了什么魔法实现loopback.cfg启动的。
回复

使用道具 举报

发表于 2021-2-20 21:50:29 | 显示全部楼层
liuzhaoyzz 发表于 2021-2-20 21:32
你说的思路很对,但我想要知道细节,veket和puppy据我所知,原生不支持loopback.cfg的。不知道w大用了什 ...

我说"参考grubfm"的思路也没错啊
distro目录下有相应的脚本的(veket.sh)
是用了魔改grub2高科技命令mkinitrd,强改了initrd里init脚本,让它知道来世的路,正确地挂载正确的文件系统,ventoy也是类似的原理,实现方式不一样
这个貌似确实还没在论坛上讨论过,,,我玩倒是玩过会的,老眼昏花,累啊。
回复

使用道具 举报

发表于 2021-2-20 21:55:16 | 显示全部楼层
江南一根葱 发表于 2021-2-20 21:50
我说"参考grubfm"的思路也没错啊
distro目录下有相应的脚本的(veket.sh)
是用了魔改grub2高科技命令mki ...

你说的不是我想要的,distro目录下有相应的脚本的(veket.sh),这个脚本是用了patch initrd的高科技方案。不是我说的loopback.cfg的方案啊,难道loopback.cfg方案中,也用了patch initrd了吗?好像这是两个独立的方案啊。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 18:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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