无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: wintoflash

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

    [复制链接]
发表于 2019-11-20 15:01:11 | 显示全部楼层
本帖最后由 ddsony 于 2019-11-20 15:12 编辑

强!VHDX有搞头了。顺带问一下:动态vhd和vhdx能够在深度隐藏分区map出来的虚拟盘里被ntboot启动吗?
好象动态vhd和vhdx的动态扩展要通过文件系统,这样是不是不能深度隐藏了呢?
回复

使用道具 举报

发表于 2019-11-20 15:23:14 | 显示全部楼层
照此速度,各大神的SISO,RUN,VHDBOOT......等模块收入囊中也指日可待。一个全新的grub2扑面而来。
回复

使用道具 举报

 楼主| 发表于 2019-11-20 17:41:53 | 显示全部楼层
adef 发表于 2019-11-20 11:02
uefi下多cd-rom启动好像是有点啥问题。试了两个U盘各有一个usb-cdrom,uefi下单独启动都正常。如果同时插上 ...

BOOTMGR is missing 应该是 Legacy-BIOS 的报错吧
回复

使用道具 举报

 楼主| 发表于 2019-11-20 17:42:25 | 显示全部楼层
wuwuzz 发表于 2019-11-20 12:53
shell状态下,能够看到不同的bootx64.efi
fs1:\efi\boot\bootx64.efi
fs2:\efi\boot\bootx64.efi

那就无解了
回复

使用道具 举报

 楼主| 发表于 2019-11-20 17:44:58 | 显示全部楼层
ddsony 发表于 2019-11-20 15:01
强!VHDX有搞头了。顺带问一下:动态vhd和vhdx能够在深度隐藏分区map出来的虚拟盘里被ntboot启动吗?
好 ...

那要看你是怎么隐藏的。
首先,bootmgfw.efi要能读到vhd,
其次,里面的Windows要能读到自己。
具体能不能,不清楚。反正UD那种肯定不行
回复

使用道具 举报

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

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

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

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

使用道具 举报

发表于 2019-11-20 23:59:10 | 显示全部楼层
wuwuzz 发表于 2019-11-20 07:36
为方便测试对比,营造了3光驱环境做实验:

第1 USBCD  装经典Win10PE V16

是光盘EFI程序本身的限制。
MS   的 boot*.efi  不支持 多光盘; 只支持第一个光盘。用Linux光盘,多少个都没问题。

点评

M大,请教一个问题。 wimboot启动wim,关闭安全启动,一切正常。开启安全启动,出现以下错误: [attachimg]405448[/attachimg] 如果不通过wimboot,是可以正常启动的。 如果使用Udm里面的grub2,runudm @bootx64.  详情 回复 发表于 2019-11-21 08:49
回复

使用道具 举报

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

M大,请教一个问题。
wimboot启动wim,关闭安全启动,一切正常。开启安全启动,出现以下错误:
深度截图_选择区域_20191121083831.png
如果不通过wimboot,是可以正常启动的。
如果使用Udm里面的grub2,runudm @bootx64.efi: .....启动也是正常的。
请问您是移植的wimboot吗,如果是的,请教一下做了什么修改才能正常通过安全启动?
----------------
用win7的bootmgfw.efi是正常的,因为它好像不会强制检验什么东西。


点评

默认 UDM中用的是 bootmgfw.efi。  详情 回复 发表于 2019-11-21 09:44
回复

使用道具 举报

发表于 2019-11-21 09:44:03 | 显示全部楼层
wintoflash 发表于 2019-11-21 08:49
M大,请教一个问题。
wimboot启动wim,关闭安全启动,一切正常。开启安全启动,出现以下错误:

默认 UDM中用的是 bootmgfw.efi。

点评

wimboot用win7的bootmgfw.efi,可以通过安全启动,用win8及以上的,不能通过安全启动。 UDm好像都可以。为什么呢?  详情 回复 发表于 2019-11-21 09:47
回复

使用道具 举报

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

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

使用道具 举报

发表于 2019-11-21 10:20:03 | 显示全部楼层
hi, good working.
but backgroundimage was not showed in my grub theme.

how to create grubx64.efi with mod? or set to grub.cfg?

my cfg .

terminal_output gfxterm
insmod part_msdos
insmod ntfs
insmod gfxmenu
insmod png
insmod font

insmod jpeg
insmod part_acorn
insmod part_amiga
insmod part_apple
insmod part_bsd
insmod part_gpt
insmod part_msdos
insmod part_sun
insmod part_sunpc
insmod ext2
insmod ntfs
insmod iso9660
insmod loopback

set icondir=$prefix/themes/icons

set theme=${prefix}/themes/oxygen/theme.txt
export theme

点评

gfxmode not set.  详情 回复 发表于 2019-11-21 11:27
回复

使用道具 举报

 楼主| 发表于 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.

点评

Sorry, but i have "set gfxmode" if [ "$disable_gfxterm" != true ]; then insmod all_video gfxmode=1024x768 if terminal_output --append gfxterm then terminal_output --remove consol  详情 回复 发表于 2019-11-21 12:10
回复

使用道具 举报

发表于 2019-11-21 12:10:59 | 显示全部楼层
本帖最后由 2012apple3000 于 2019-11-21 12:13 编辑

Sorry, but i have "set gfxmode"

if [ "$disable_gfxterm" != true ]; then
  insmod all_video
  gfxmode=1024x768
  if terminal_output --append gfxterm
  then
      terminal_output --remove console
  fi
fi

set gfxmode=1024x768


my old grubx64.efi is good work.
but new compiled grubx64.efi with your grub-mkimage bat (with module(ntboot wimboot)), has display problem.
So , i think that i must add some mod in bat..
what problem?

my old grubx64.efi
https://youtu.be/xWVUTFx37Mw

new compiled efi
https://youtu.be/rdGuJy3PVGA

点评

how did you build 'grubx64.efi'? and what's the content of theme.txt  详情 回复 发表于 2019-11-21 12:58
回复

使用道具 举报

 楼主| 发表于 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

点评

grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi affs afs all_video bfs bitmap bitmap_scale blocklist boot bsd btrfs cat chain cmp commandline configfile cpio crc date dateho  详情 回复 发表于 2019-11-21 13:20
回复

使用道具 举报

发表于 2019-11-21 13:20:41 | 显示全部楼层
wintoflash 发表于 2019-11-21 12:58
how did you build 'grubx64.efi'?
and what's the content of theme.txt

grub-mkimage -d x86_64-efi -p /boot/grub -o grubx64.efi -O x86_64-efi acpi affs afs all_video bfs bitmap bitmap_scale blocklist boot bsd btrfs cat chain cmp commandline configfile cpio crc date datehook dd disk dm_nv echo efi_gop efi_uga efifwsetup efiload eval exfat expr ext2 extcmd f2fs fat fb file font fshelp getenv getkey gfxmenu gfxterm gfxterm_background gfxterm_menu gptsync gzio halt hashsum help hexdump hfs hfsplus iso9660 jfs jpeg keystatus legacycfg linux linuxefi loadbios loadenv loopback ls lsacpi lua lvm lzopio mdraid09 mdraid09_be memdisk minicmd multiboot multiboot2 newc normal ntfs part_apple part_bsd part_gpt part_msdos partnew parttool png probe progress raid5rec raid6rec random read reboot regexp reiserfs sbpolicy search setenv shell sleep squash4 syslinuxcfg tar terminal terminfo test tga time true udf vhd video video_colors video_fb videoinfo wimboot xfs xnu xzio zfs map ntboot png

all theme same problem.

点评

can't reproduce  详情 回复 发表于 2019-11-21 14:22
回复

使用道具 举报

发表于 2019-11-21 14:20:59 | 显示全部楼层
chenall 发表于 2019-11-20 14:42
借楼问一下GRUB2有没有比较好的学习教程.有时间我也想来学习下grub2

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

我是看了这篇,然后就慢慢上手了。
http://www.jinbuguo.com/linux/grub.cfg.html

时不时也参考一下官方文档。
http://www.gnu.org/software/grub/manual/grub/grub.html

有时还需要网上搜索补充学习,如正则表达式。

点评

谢谢  发表于 2019-11-21 17:24
回复

使用道具 举报

 楼主| 发表于 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, 下载次数: 7)

点评

good work. do you use theme? is it inner grub.cfg? i want use myUSB:\boot/grub/grub.cfg would you show sample grub.cfg?  详情 回复 发表于 2019-11-21 14:40
回复

使用道具 举报

发表于 2019-11-21 14:40:29 | 显示全部楼层
本帖最后由 2012apple3000 于 2019-11-21 14:41 编辑

good work. do you use theme? is it inner grub.cfg? i want use myUSB:\boot/grub/grub.cfg
would you show sample grub.cfg?



2019-11-21_15-35-42.jpg
回复

使用道具 举报

发表于 2019-11-21 15:05:15 | 显示全部楼层
本帖最后由 2012apple3000 于 2019-11-21 15:11 编辑

this is my efi grub.cfg and theme

compiled_bootx64.efi(created with your bat commandline)


boot.7z

1.41 MB, 下载次数: 2, 下载积分: 无忧币 -2

回复

使用道具 举报

 楼主| 发表于 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. }
复制代码

点评

I appreciate you. i changed yours.Good working.  详情 回复 发表于 2019-11-21 15:42
回复

使用道具 举报

发表于 2019-11-21 15:42:11 | 显示全部楼层

I appreciate you. i changed yours.Good working.
回复

使用道具 举报

发表于 2019-11-23 11:02:06 | 显示全部楼层
谢谢分享,非常给力
回复

使用道具 举报

发表于 2019-11-23 13:47:47 | 显示全部楼层
不错,太牛逼了!收藏!
回复

使用道具 举报

发表于 2019-11-23 14:02:31 | 显示全部楼层
好贴,收藏先。
回复

使用道具 举报

发表于 2019-11-23 16:04:15 | 显示全部楼层
本帖最后由 ggmm888 于 2019-11-23 20:00 编辑

set pager=0;
set debug=off;
export enable_progress_indicator=0;

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

set lang=en_US

export gfxmode=1024x768;
export gfxpayload=keep;
terminal_output gfxterm;

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

menuentry "menu 1" {
  echo 1
}
menuentry "menu 2" {
  echo 2
}

en_US语言,unicode.xz字体,这两个文件如何得来?

GRUB2 UEFI 下的磁盘仿真,grub2   下载:https://github.com/aIive/builds/archive/master.zip 这个文件里面没有,还是不适合使用中文?


还有一个问题,得到的bootx64.efi文件,在纯UEFI下启动ISO镜像,就是ISO镜像必须附合UEFI规范的才能启动,符合BIOS镜像不能启动,对吗?测试分区工具DG.ISO不能启动


启动ISO文件:
menuentry "启动ISO文件" {
search --file /neyan/grub/memdisk --set=root
linux16  /neyan/grub/memdisk  iso
initrd16 /rdtobot/DG.iso
}

上面的工具,启动ISO文件应如何写菜单,MAP菜单不能使用
回复

使用道具 举报

发表于 2019-11-24 22:16:24 | 显示全部楼层
grub.cfg 菜单喜欢显示中文

点评

喜欢中文菜单就直接使用中文菜单,不需要特别设置: menuentry "菜单 1" { echo 1 } menuentry "菜单 2" { echo 2 } menuentry "启动ISO文件" { search --file /neyan/grub/memdisk --set=root linux  详情 回复 发表于 2019-11-25 15:12
回复

使用道具 举报

发表于 2019-11-25 15:12:12 | 显示全部楼层
本帖最后由 hilsonma 于 2019-11-25 15:20 编辑
ggmm888 发表于 2019-11-24 22:16
grub.cfg 菜单喜欢显示中文

喜欢中文菜单就直接使用中文菜单,不需要特别设置:
menuentry "菜单 1" {
  echo 1
}
menuentry "菜单 2" {
  echo 2
}
只是在虚拟机下有可能中文显示不全,实机一般都能显示的。

另外,这条菜单是bios平台下用的
menuentry "启动ISO文件" {
search --file /neyan/grub/memdisk --set=root
linux16  /neyan/grub/memdisk  iso
initrd16 /rdtobot/DG.iso
}
uefi平台下:
menuentry "启动ISO文件" "/rdtobot/DG.iso" {
        search -s -f $2
        map $2
        boot
}
但你这个DG.iso应该是不能在uefi平台下启动的,必须是支持uefi启动的iso文件才可以用上面这条菜单启动。
把/rdtobot/DG.iso 替换为你要启动的支持uefi的iso文件。
支持uefi的iso文件一般都有\efi\boot\bootx64.efi这样的文件,也可能是efi.img这样的文件。

回复

使用道具 举报

发表于 2019-11-25 16:13:20 | 显示全部楼层
我是在虚拟机中测试的,虚拟机中中文是??号,实机无条件测试。
多谢了

点评

关于中文显示请参考http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=413597&pid=3910839&fromuid=586362  详情 回复 发表于 2019-11-30 22:37
回复

使用道具 举报

发表于 2019-11-30 22:37:34 | 显示全部楼层
ggmm888 发表于 2019-11-25 16:13
我是在虚拟机中测试的,虚拟机中中文是??号,实机无条件测试。
多谢了

关于中文显示请参考http://bbs.wuyou.net/forum.php?m ... &fromuid=586362
回复

使用道具 举报

发表于 2019-12-1 18:53:08 | 显示全部楼层
本帖最后由 ggmm888 于 2019-12-1 18:57 编辑

grub.cfg显示中文菜单,加入下面内容,使用utf-8编码
terminal_output  gfxterm
loadfont /boot/grub/fonts/unicode.pf2
set locale_dir=/boot/grub/locale
set lang=zh_CN
set gfxmode=auto,800x600,1024x768

添加
语言文件 locale/zh_CN.mo
字体文件 fonts/unicode.pf2

grub.cfg是显示中文菜单,但是执行菜单出现PE不能正常显示等问题?在运行菜单命令时,英文完全不显示。这是在虚拟机中测试结果。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2020-10-27 23:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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