无忧启动论坛

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

[原创] GRUB2 UEFI 下的磁盘仿真

    [复制链接]
61#
 楼主| 发表于 2019-11-20 17:47:43 | 显示全部楼层
chenall 发表于 2019-11-20 14:42
借楼问一下GRUB2有没有比较好的学习教程.有时间我也想来学习下grub2

官网只是简单的介绍,有好多命令我看 ...

UEFI
BIOS下要用汇编,这个我玩不转。
GRUB2目前官方文档有点过时,确实是个问题。

我个人觉得GRUB2的脚本比GRUB4DOS简单。
语法类似bash shell,但是阉割了很多,比如不支持管道。
另外我修改的版本带Lua模块,可以用Lua写菜单。
回复

使用道具 举报

62#
 楼主| 发表于 2019-11-21 08:49:16 | 显示全部楼层
mdyblog 发表于 2019-11-20 23:59
是光盘EFI程序本身的限制。
MS   的 boot*.efi  不支持 多光盘; 只支持第一个光盘。用Linux光盘,多少 ...

M大,请教一个问题。
wimboot启动wim,关闭安全启动,一切正常。开启安全启动,出现以下错误:

如果不通过wimboot,是可以正常启动的。
如果使用Udm里面的grub2,runudm @bootx64.efi: .....启动也是正常的。
请问您是移植的wimboot吗,如果是的,请教一下做了什么修改才能正常通过安全启动?
----------------
用win7的bootmgfw.efi是正常的,因为它好像不会强制检验什么东西。


回复

使用道具 举报

63#
 楼主| 发表于 2019-11-21 09:47:44 | 显示全部楼层
mdyblog 发表于 2019-11-21 09:44
默认 UDM中用的是 bootmgfw.efi。

wimboot用win7的bootmgfw.efi,可以通过安全启动,用win8及以上的,不能通过安全启动。
UDm好像都可以。为什么呢?
回复

使用道具 举报

64#
 楼主| 发表于 2019-11-21 11:27:19 | 显示全部楼层
2012apple3000 发表于 2019-11-21 10:20
hi, good working.
but backgroundimage was not showed in my grub theme.

gfxmode not set.
回复

使用道具 举报

65#
 楼主| 发表于 2019-11-21 12:58:25 | 显示全部楼层
2012apple3000 发表于 2019-11-21 12:10
Sorry, but i have "set gfxmode"

if [ "$disable_gfxterm" != true ]; then

how did you build 'grubx64.efi'?
and what's the content of theme.txt
回复

使用道具 举报

66#
 楼主| 发表于 2019-11-21 14:22:06 | 显示全部楼层
2012apple3000 发表于 2019-11-21 13:20
grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi affs afs all_video bfs  ...

can't reproduce
testx64.efi.7z (1.78 MB, 下载次数: 14)

回复

使用道具 举报

67#
 楼主| 发表于 2019-11-21 15:08:38 | 显示全部楼层
2012apple3000 发表于 2019-11-21 14:40
good work. do you use theme? is it inner grub.cfg? i want use myUSB:\boot/grub/grub.cfg
would you ...
  1. set pager=0;
  2. set debug=off;
  3. export enable_progress_indicator=0;

  4. loadfont ${prefix}/fonts/unicode.xz;
  5. export locale_dir=${prefix}/locale;

  6. set lang=en_US

  7. export gfxmode=1024x768;
  8. export gfxpayload=keep;
  9. terminal_output gfxterm;

  10. export theme=$prefix/themes/slack/theme.txt;

  11. menuentry "menu 1" {
  12.   echo 1
  13. }
  14. menuentry "menu 2" {
  15.   echo 2
  16. }
复制代码
回复

使用道具 举报

68#
 楼主| 发表于 2019-12-10 10:35:26 | 显示全部楼层
本帖最后由 wintoflash 于 2019-12-10 10:38 编辑

20191209更新
添加--rw(-w)参数,可以启用写入支持
  • 只支持内存盘,不会向本地的文件实际写入内容。
  • 此参数对光盘无效。

添加--nb(-n)参数,加载虚拟盘后不立即启动
  • 虚拟盘在grub2中是不可见的
  • 支持加载多个虚拟盘,最后一个盘不加-n参数就能启动了

读虚拟盘的时候,不再显示进度
虚拟盘的UUID不再固定,而是随机生成
    UUID不再固定为 ebe35ad8-6c1e-40f5-aaed-0b919a46bf4b
使用GitHub Actions自动编译
回复

使用道具 举报

69#
 楼主| 发表于 2019-12-21 18:32:54 | 显示全部楼层
本帖最后由 wintoflash 于 2019-12-21 18:42 编辑
liuzhaoyzz 发表于 2019-12-21 18:10
引导文件选择编译出来的grubx64.efi?他会找本地配置文件/boot/grub/grub.cfg,不会找webserver上面的grub ...

首先要编辑 arch\x64\builtin.txt ,在最后添加 efinet http tftp 之类的,加上这些模块。后面我就不清楚了,我不会网启。以前葱也没教会我。


回复

使用道具 举报

70#
 楼主| 发表于 2019-12-21 19:06:46 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-21 19:01
为什么要用ipxe.efi来启动grub2?grub2.efi直接pxe启动,添加http模块不行吗?
为什么要来回倒腾?

可以。
来回倒腾是因为efi下grub2不支持proxydhcp,而ipxe支持。
回复

使用道具 举报

71#
 楼主| 发表于 2019-12-21 22:00:03 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-21 21:52
克隆到国内的码云,源代码压缩包下载倒是挺快,可是release版本克隆不下来。一个8MB的zip包,github下载 ...

码云是自动同步的源码 https://gitee.com/a1ive/grub
但是码云不支持同步releases,好像也不能自动发布releases,
而且最坑的是码云下载releases要登录.国内网站都有这种坏习惯.
回复

使用道具 举报

72#
 楼主| 发表于 2019-12-21 22:27:19 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-21 22:02
登录下也无所谓啊,下载速度快就好。码云确实不能同步release,就是这一点不太爽,而且码云不是自动同步 ...

是最新版的,实时同步。以前是手动,后来我用了一些奇技淫巧实现了自动同步。
现在所有的流程都实现了自动化。
每次我向github推送代码,github actions 就会自动把代码推送到码云,并且自动编译。编译好之后会自动发布。
码云好像对这一套不怎么上心,似乎实现不了。
回复

使用道具 举报

73#
 楼主| 发表于 2019-12-21 22:39:37 | 显示全部楼层
liuzhaoyzz 发表于 2019-12-21 22:36
码云没有发行版,只有2.04-rc1,2019-04-08 13:30,几秒钟下载了。
github上面release版本,我下载了一晚上 ...

码云的发行版没办法自动创建。太麻烦了。
找到一个可能是github非官方镜像的?试试
http://github-mirror.bugkiller.org/a1ive/grub/releases


回复

使用道具 举报

74#
 楼主| 发表于 2019-12-27 21:42:57 | 显示全部楼层
2090147941 发表于 2019-12-26 11:13
grub4dos使用map命令引导proteus初始化失败,grub2使用上面提供的loopback命令启动成功,grub4dos可以使 ...

map之后启动里面的vmlinuz(和initrd),而不是直接启动光盘
回复

使用道具 举报

75#
 楼主| 发表于 2019-12-30 12:07:49 | 显示全部楼层
hhh333 发表于 2019-12-30 11:45
刚才看了一下,grub2已经升级到了2.04版了,请问楼主这个是在2.04的基础上强化的吧?

不是
回复

使用道具 举报

76#
 楼主| 发表于 2020-1-1 10:28:48 | 显示全部楼层
lhb9900 发表于 2020-1-1 10:14
当第一个ISO光盘里的GRUBFM用MAP启动第二个硬盘里ISO光盘PE时,第二个硬盘里ISO光盘(微软)bootx64.efi始终 ...

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

使用道具 举报

77#
 楼主| 发表于 2020-3-2 11:09:11 | 显示全部楼层
ksafei 发表于 2020-3-2 10:59
最近新版grub2-filemanager的ISO map功能好像有调整,测试对于需按任一键启动的ISO PE不能启动了(新版grub ...

v7-beta到现在没改啊
回复

使用道具 举报

78#
 楼主| 发表于 2020-3-2 12:13:26 | 显示全部楼层
ksafei 发表于 2020-3-2 11:52
刚找到grub2-filemanager-master稍早的留存0224和0228版,进行测试:
grub2-filemanager-master0224+新版g ...

测试失败的ISO在哪下载?
回复

使用道具 举报

79#
 楼主| 发表于 2020-3-2 12:47:15 | 显示全部楼层
ksafei 发表于 2020-3-2 12:20
Win10PE X64_18363.592企业版_纯净/网络280M_新增ADMIN/SYSTEM双切 (2020.2.29更新)
http://bbs.c3.wuyo ...

试了一下,没毛病啊


回复

使用道具 举报

80#
 楼主| 发表于 2020-3-2 14:30:57 | 显示全部楼层
本帖最后由 wintoflash 于 2020-3-2 14:35 编辑
ksafei 发表于 2020-3-2 13:20
仔细看了下,咱俩测试的PE所在磁盘分区不一样,我是GPT,而且map菜单也不一样

放 GPT 分区表 NTFS 分区里面,依然正常启动。


在这个界面下, 按c进入命令行输入 configfile (memdisk)/boot/grubfm/rules/iso/map.sh,看看输出。
提示:按左Ctrl+左ALt+F12可截图。




回复

使用道具 举报

81#
 楼主| 发表于 2020-3-2 14:41:55 | 显示全部楼层
ksafei 发表于 2020-3-2 14:39
既然这样,我就先用着v7-beta版吧,这版不但启动兼容性好,而且功能也多,尤其是 重命名、复制到...  在 ...

打开文件后,手动执行 configfile (memdisk)/boot/grubfm/rules/iso/map.sh 试试
回复

使用道具 举报

82#
 楼主| 发表于 2020-3-2 19:32:38 | 显示全部楼层
ksafei 发表于 2020-3-2 15:05
试了,没有任何信息输出。对比了下,这2个ISO选择后屏幕左上角没信息,其他的有显示路径

现在应该正常了,你更新源码重新生成一下试试。
回复

使用道具 举报

83#
 楼主| 发表于 2020-3-2 20:57:06 | 显示全部楼层
ksafei 发表于 2020-3-2 20:51
同前面一样,所有的ISO PE 均不能启动

直接输map呢
回复

使用道具 举报

84#
 楼主| 发表于 2020-3-2 21:21:19 | 显示全部楼层
ksafei 发表于 2020-3-2 21:09
直接用 map 命令启动正常

gpt分区表,什么格式的分区?虚拟机启动,录个屏看看
回复

使用道具 举报

85#
 楼主| 发表于 2020-3-2 21:35:43 | 显示全部楼层
ksafei 发表于 2020-3-2 21:25
没有虚拟机,都是实机测试

ntfs开没开压缩?
虚拟机方便录屏

点评

没压缩 机子还要办公不方便安装虚拟机  详情 回复 发表于 2020-3-2 21:40
回复

使用道具 举报

86#
 楼主| 发表于 2020-3-2 21:46:52 | 显示全部楼层
ksafei 发表于 2020-3-2 21:40
没压缩
机子还要办公不方便安装虚拟机

那我就没办法了,没法重现.你可以整理下磁盘碎片试试

点评

好的,辛苦您了,十分感谢!  详情 回复 发表于 2020-3-2 21:52
回复

使用道具 举报

87#
 楼主| 发表于 2020-3-22 15:27:40 | 显示全部楼层
sxz7392 发表于 2020-3-22 14:35
使用grubfm模块,前面的分区,目录选择都正常,使用grubfm_open打开一个ISO文件时只有返回菜单,请问在哪里 ...

这个模块不是直接给普通用户直接使用的。
grubfm 只是列出磁盘文件,至于文件具体怎么打开,还是需要你自己定义。
grub2-filemanager 就是成品,你可以参考。
不同文件的扩展名及打开方式配置文件在 (memdisk)/boot/grubfm/types/ 下 (当然可以自己研究怎么改)
https://github.com/a1ive/grub2-f ... r/boot/grubfm/types
打开文件对应的脚本在 (memdisk)/boot/grubfm/rules/ 下
https://github.com/a1ive/grub2-f ... r/boot/grubfm/rules


回复

使用道具 举报

88#
 楼主| 发表于 2020-3-24 09:58:17 | 显示全部楼层
sxz7392 发表于 2020-3-22 15:41
type,rules目录是不是只能放在memdisk内存盘中?

可以放在其他盘中。
配置文件分为系统配置和用户配置,都可以自定义位置。
例如自定义系统配置所在磁盘
grubfm_set --root hd0,1
至于自定义用户配置,grub2-filemanager中有例子。
回复

使用道具 举报

89#
 楼主| 发表于 2020-3-25 13:13:35 | 显示全部楼层
sxz7392 发表于 2020-3-25 12:59
谢谢指导,在U盘上启动grub2-filemanager成功,只是grub2只能放在/boot/grubfm/目录下,我想把目录改为/boo ...

不支持
回复

使用道具 举报

90#
 楼主| 发表于 2020-3-29 17:54:23 | 显示全部楼层
ksafei 发表于 2020-3-29 17:42
0327版grubfm,ntboot启动gpt分区表NTFS分区的wim PE报错(UEFI安全启动,wimboot正常):

这应该不是安全启动导致的吧
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-3 16:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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