无忧启动论坛

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

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

    [复制链接]
 楼主| 发表于 2019-11-3 19:45:59 | 显示全部楼层
深度截图_选择区域_20191103194421.png

2048+14176768=14178816
这样也是能启动的。
深度截图_选择区域_20191103194344.png


点评

那这东西就是现成的了。  详情 回复 发表于 2019-11-3 20:01
回复

使用道具 举报

发表于 2019-11-3 20:01:18 | 显示全部楼层
wintoflash 发表于 2019-11-3 19:45
2048+14176768=14178816
这样也是能启动的。

那这东西就是现成的了。
回复

使用道具 举报

发表于 2019-11-3 20:06:34 | 显示全部楼层

谢谢分享
回复

使用道具 举报

发表于 2019-11-3 20:42:38 | 显示全部楼层
wintoflash 发表于 2019-11-3 19:39
试了一下,可以直接用blocklist啊

你图3以这种虚拟盘的形式能顺利efi启动到PE桌面吗?

点评

可以  详情 回复 发表于 2019-11-3 20:54
回复

使用道具 举报

 楼主| 发表于 2019-11-3 20:54:00 | 显示全部楼层
ddsony 发表于 2019-11-3 20:42
你图3以这种虚拟盘的形式能顺利efi启动到PE桌面吗?

可以
回复

使用道具 举报

发表于 2019-11-3 22:10:58 | 显示全部楼层
不正常呀,看到今天gurb2的帖子量这么大。就知道有人发好东西了。
回复

使用道具 举报

发表于 2019-11-4 08:31:24 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-11-4 08:33 编辑

wintoflash大神技术过硬,支持!现在支持ISO格式,其他格式呢?比如img,vdf,wim,vhd等等支持情况怎么样? 大神的这个帖子给了UEFI-RAMOS带来了曙光。
      

点评

img mbr分区表的已经测试过可以了。GPT的暂时没有条件测试。分区镜像(无分区表)也测试通过了。 wim 不是磁盘镜像,应该用wimboot启动。 vdh/vdf 暂时没有条件测试。可否推荐一下体积比较小的镜像?  详情 回复 发表于 2019-11-4 08:43
回复

使用道具 举报

 楼主| 发表于 2019-11-4 08:43:18 | 显示全部楼层
liuzhaoyzz 发表于 2019-11-4 08:31
wintoflash大神技术过硬,支持!现在支持ISO格式,其他格式呢?比如img,vdf,wim,vhd等等支持情况怎么样 ...

img  mbr分区表的已经测试过可以了。GPT的暂时没有条件测试。分区镜像(无分区表)也测试通过了。
wim  不是磁盘镜像,应该用wimboot启动。
vdh/vdf 暂时没有条件测试。可否推荐一下体积比较小的镜像?

点评

vhd和vdf基本上是面向机器的,需要自己安装个系统到vhd里面。vdf格式是用primo ramdisk生成的镜像,里面的内容也是面向机器的,主要是驱动什么的,就是说我机器上面的vdf肯定不能再你的机器上面启动,提供给您也没什  详情 回复 发表于 2019-11-4 12:09
回复

使用道具 举报

发表于 2019-11-4 10:35:39 | 显示全部楼层
本帖最后由 指南针 于 2019-11-4 10:45 编辑

我来报告一下启动vhd情况:
MBR或GPT分区表,EFI启动,差分vhd,非差分vhd(均动态)
直接用楼主的efi文件,map或map --mem都失败
...
mem:0
type:0
vdisk_install
...
found iso partition
failed to install virtual partition
installing block_io protocol for virtual disk...
failed to install virtual disk
Failed to install vdisk.
exit.
exit status code:0x80000000000000000002

点评

现在支持动态VHD了(不支持差分) 先挂载vhd到vhd0 (也可以是其他盘符) vhd vhd0 /test.vhd 然后启动 map --disk --type=HD vhd0  详情 回复 发表于 2019-11-5 17:12
固定大小的vhd是可以的。 动态vhd可能可以通过blocklist启动,我试一下。  详情 回复 发表于 2019-11-4 11:22
你有没有内置ntfs.efi的  详情 回复 发表于 2019-11-4 10:55
回复

使用道具 举报

发表于 2019-11-4 10:55:26 | 显示全部楼层
本帖最后由 282198284 于 2019-11-9 22:26 编辑
指南针 发表于 2019-11-4 10:35
我来报告一下启动vhd情况:
MBR或GPT分区表,EFI启动,差分vhd,非差分vhd(均动态)
直接用楼主的efi文 ...


你有没有内置ntfs.efi的

点评

....  详情 回复 发表于 2019-11-4 11:02
什么东西?什么作用?  详情 回复 发表于 2019-11-4 10:59
回复

使用道具 举报

发表于 2019-11-4 10:59:28 | 显示全部楼层
282198284 发表于 2019-11-4 10:55
你有没有内置ntfs.efi的

什么东西?什么作用?
回复

使用道具 举报

发表于 2019-11-4 11:02:52 | 显示全部楼层
本帖最后由 282198284 于 2019-11-9 22:23 编辑
282198284 发表于 2019-11-4 10:55
你有没有内置ntfs.efi的


....
回复

使用道具 举报

 楼主| 发表于 2019-11-4 11:22:08 | 显示全部楼层
指南针 发表于 2019-11-4 10:35
我来报告一下启动vhd情况:
MBR或GPT分区表,EFI启动,差分vhd,非差分vhd(均动态)
直接用楼主的efi文 ...

固定大小的vhd是可以的。
动态vhd可能可以通过blocklist启动,我试一下。
回复

使用道具 举报

发表于 2019-11-4 11:59:45 | 显示全部楼层
为楼主点赞!

UEFI的启动一直以来只有一个XORBoot勉强用用,而且,兼容性不是很好,很多机器不能用。导致我近几年安装电脑,基本上全部是把硬盘改成MBR格式,然后用grub4dos。UEFI+GPT真的没有一个能打的启动管理器,从今天开始,应该会有所好转了。

回复

使用道具 举报

发表于 2019-11-4 12:09:32 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-11-4 12:12 编辑
wintoflash 发表于 2019-11-4 08:43
img  mbr分区表的已经测试过可以了。GPT的暂时没有条件测试。分区镜像(无分区表)也测试通过了。
wim  不 ...


vhd和vdf基本上是面向机器的,需要自己安装个系统到vhd里面,小的esd镜像RAMOS专区有很多。vdf格式是用primo ramdisk生成的镜像,里面的内容也是面向机器的,主要是驱动什么的,就是说我机器上面的vdf肯定不能再你的机器上面启动,提供给您也没什么用啊。再说了现在primo驱动很多用的是复杂的双镜像启动技术,牵涉到的MBR克隆等内容更多,有些复杂,vdf单镜像的我现在用的少了,如果要测试,也要先用vdf单镜像的来测试最好,先排除双镜像的启动问题。RAMOS涉及到注册表mounteddevice等等内容,还是挺复杂的,任何一点卡住都可能导致引导失败,应该想办法缩小范围,以测试UEFI MAP是否能够用于vdf启动。

我对于vdf启动底层支持了解不是很透彻,能力和水平不够,看下虎大能否研究下。根据已知的众多测试,UEFI下生成的img硬盘格式这样子的内存盘,微软不支持,无法启动,vdf格式=img格式+引导脚,可以视作img格式。        

点评

img格式的话,应该是支持的。比如固定大小的vhd,可以看作img。 而动态vhd这种结构与img不同的,就要另找办法。  详情 回复 发表于 2019-11-4 12:33
回复

使用道具 举报

 楼主| 发表于 2019-11-4 12:33:05 | 显示全部楼层
liuzhaoyzz 发表于 2019-11-4 12:09
vhd和vdf基本上是面向机器的,需要自己安装个系统到vhd里面,小的esd镜像RAMOS专区有很多。vdf格式是用 ...

img格式的话,应该是支持的。比如固定大小的vhd,可以看作img。
而动态vhd这种结构与img不同的,就要另找办法。
回复

使用道具 举报

 楼主| 发表于 2019-11-4 12:36:26 | 显示全部楼层
@282198284
建议和原作者一样,加一个外置配置文件

你在\boot\grub下新建文本文件grub.cfg,编码选UTF-8无BOM。
内容如下:
  1. menuentry "BOOT VHD" {
  2.   map --type=HD /xxx.vhd
  3. }
复制代码

就可以了。
如果不想显示菜单,就
  1. map --type=HD /xxx.vhd
  2. boot
复制代码
回复

使用道具 举报

发表于 2019-11-4 14:22:46 | 显示全部楼层
W大,能直接用map命令启动Porteus-4.0-x86_64-20170917.iso镜像吗?

点评

不能。 在我的印象中,这个版本是符合loopback规范的。  详情 回复 发表于 2019-11-4 14:39
回复

使用道具 举报

 楼主| 发表于 2019-11-4 14:39:04 | 显示全部楼层
liaonf 发表于 2019-11-4 14:22
W大,能直接用map命令启动Porteus-4.0-x86_64-20170917.iso镜像吗?

不能。
在我的印象中,这个版本是符合loopback规范的。
  1. menuentry "Porteus" {
  2.       iso_path="/xxx/Porteus-4.0-x86_64-20170917.iso"
  3.       export iso_path
  4.       search --set=root --file "$iso_path"
  5.       loopback loop "$iso_path"
  6.       root=(loop)
  7.       configfile /boot/grub/loopback.cfg
  8. }
复制代码

点评

请教W大,到脚本初始化时就进不去了,是什么问题?  详情 回复 发表于 2019-11-4 18:27
谢了,只是不知道在UEFI下也可以吗?  详情 回复 发表于 2019-11-4 16:15
回复

使用道具 举报

发表于 2019-11-4 16:15:21 | 显示全部楼层
wintoflash 发表于 2019-11-4 14:39
不能。
在我的印象中,这个版本是符合loopback规范的。

谢了,只是不知道在UEFI下也可以吗?

点评

都可以  详情 回复 发表于 2019-11-4 16:36
回复

使用道具 举报

 楼主| 发表于 2019-11-4 16:36:34 | 显示全部楼层
liaonf 发表于 2019-11-4 16:15
谢了,只是不知道在UEFI下也可以吗?

都可以

点评

刚才试了一下,可以启动win10pe,真的是太强了!只是grub.cfg和grubx64.efi话同一个目录,好像加载不了!另外在命令行下回车不起作用,这可能是一个bug.  详情 回复 发表于 2019-11-4 16:45
回复

使用道具 举报

发表于 2019-11-4 16:45:08 | 显示全部楼层

刚才试了一下,可以启动win10pe,真的是太强了!只是grub.cfg和grubx64.efi话同一个目录,好像加载不了!另外在命令行下回车不起作用,这可能是一个bug.

点评

关于grub.cfg的路径,可以参考论坛里grub2定制相关的帖子。 只有回车键不能用?  详情 回复 发表于 2019-11-4 17:57
回复

使用道具 举报

 楼主| 发表于 2019-11-4 17:57:05 | 显示全部楼层
liaonf 发表于 2019-11-4 16:45
刚才试了一下,可以启动win10pe,真的是太强了!只是grub.cfg和grubx64.efi话同一个目录,好像加载不了! ...

关于grub.cfg的路径,可以参考论坛里grub2定制相关的帖子。
只有回车键不能用?
回复

使用道具 举报

发表于 2019-11-4 17:59:54 | 显示全部楼层
本帖最后由 yynq 于 2019-11-4 18:01 编辑

wintoflash
查看个人网站查看详细资料
64主题
2971帖子
4597积分
VIP会员 大元帅

禁止访问
回复

使用道具 举报

发表于 2019-11-4 18:27:16 | 显示全部楼层
wintoflash 发表于 2019-11-4 14:39
不能。
在我的印象中,这个版本是符合loopback规范的。

请教W大,到脚本初始化时就进不去了,是什么问题?
1.jpg

点评

cat /proc/cmdline 看一下。 建议单独开一帖讨论。  详情 回复 发表于 2019-11-4 18:32
回复

使用道具 举报

发表于 2019-11-4 18:28:33 | 显示全部楼层
哇,W大真的在憋大招啊,这下终于就出手了。。。
几天没上无忧,今天上来就发现重量级的贴子了,W大居然搞定grub2的磁盘仿真了!

好想试试看,可惜手里没有UEFI主板。
现在先用着grub4dos,等以后手里有了UEFI主板就立刻上马!

回复

使用道具 举报

 楼主| 发表于 2019-11-4 18:32:38 | 显示全部楼层
liaonf 发表于 2019-11-4 18:27
请教W大,到脚本初始化时就进不去了,是什么问题?

cat /proc/cmdline 看一下。
建议单独开一帖讨论。
回复

使用道具 举报

发表于 2019-11-4 18:48:51 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-11-4 19:23 编辑


1、虚拟机里面试了下,boot/grub/grub.cfg必须放在esp分区是吗?不放在ESP分区,似乎会直接进入grub rescue?我看了您在一楼给出的定制grub2模块,
grub-mkimage -d x86_64-efi -p /boot/grub,prefix明明没有写(hd0,1)这样子的盘符啊?奇怪的很。
我用set命令看了下是指向(hd0,gpt1)的,我试了如果放在esp分区,测试可以启动PE.ISO。
GPT测试-2019-11-04-18-39-36.png
QQ拼音截图20191104192215.png
2、wintoflash大神给出的grubx64.efi大小有3.18MB,感觉有点大,您在一楼给出的定制grub2模块,能否由您动手精简下,模块太多了,对于纯粹的windows用户,我不知道哪些模块是必须的。
        

点评

自问自答,第一个问题解决了。 Windows定制Grub2(包括BIOS和UEFI、自定义Grub2路徑) - GRUB2 - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=339411&extra=page%3D1 新建  详情 回复 发表于 2019-11-5 07:08
回复

使用道具 举报

发表于 2019-11-4 20:48:51 来自手机 | 显示全部楼层
我的efi十一兆,将所有模块的打包进去,这样就不需要insmod了。

点评

我以前想把pe也打包进去,被楼主鄙视了  详情 回复 发表于 2019-11-4 21:19
回复

使用道具 举报

发表于 2019-11-4 21:19:40 | 显示全部楼层
窄口牛 发表于 2019-11-4 20:48
我的efi十一兆,将所有模块的打包进去,这样就不需要insmod了。

我以前想把pe也打包进去,被楼主鄙视了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 03:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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