无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: wintoflash
打印 上一主题 下一主题

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

    [复制链接]
511#
发表于 2020-12-13 11:52:47 | 只看该作者
wintoflash 发表于 2020-12-13 10:09
这里写的是 0x9d000,你在执行 "boot" 之前,执行 "hexdump (mem) -s 0x9d000" 查看一下内存。
还有 ...

以前图示中用的是楼层里的grub2,该grub2没有包含hexdump。

因此,又从github下载了grub2,把hexdump包含进去,使用该grub2 map,
write grub4dos drive map slot地址变为0x57000,相关截图如下:









先g4d map ramos.vhd,然后chainloader grub2后的截图如下:





点评

你发的图片上的数据不科学啊。 [attachimg]470641[/attachimg] 这个是不是 grub4dos 启动 grub2 ,再 map 的? [attachimg]470642[/attachimg] 这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map  详情 回复 发表于 2020-12-13 17:20
回复

使用道具 举报

512#
发表于 2020-12-13 11:59:36 | 只看该作者
本帖最后由 wuwuzz 于 2020-12-13 13:55 编辑

补充发现:

1. g4e map启动成功,像是“假”成功。她只能map引导刚解压出的、全新ramos.vhd成功
(即第一次map,这次map引导会出现:正准备设备进度提示),之后热启、冷启后再
map引导ramos.vhd(不再出现正准备设备提示),将蓝屏。

2.我的fixwtg.vhd,热启、冷启用G4E map引导成功后,能够看到SVbus virtual磁盘设备,
而用grub2(仅限楼层中发布的1212版)热启、冷启map引导成功后,看不到SVbus virtual
磁盘设备。如下图对比:

G4E:



grub2:




回复

使用道具 举报

513#
发表于 2020-12-13 15:00:58 | 只看该作者
假设一下,直接map不mem启动后,vhd会产生碎片吧,

点评

只是启动下VHD,读写一般不多,临时文件基本不怎么影响碎片的,很早以前g4d+firadisk就是这样子,不会产生什么碎片。 大不了就用wincontig整理下。  详情 回复 发表于 2020-12-13 16:49
回复

使用道具 举报

514#
发表于 2020-12-13 16:49:11 来自手机 | 只看该作者
江南一根葱 发表于 2020-12-13 15:00
假设一下,直接map不mem启动后,vhd会产生碎片吧,

       只是启动下VHD,读写一般不多,临时文件基本不怎么影响碎片的,很早以前g4d+firadisk就是这样子,不会产生什么碎片。 大不了就用wincontig整理下。

点评

我只不过往vhd加了几个文件,就产生碎片了 直接就蓝屏,  详情 回复 发表于 2020-12-13 17:06
回复

使用道具 举报

515#
发表于 2020-12-13 17:06:17 | 只看该作者
liuzhaoyzz 发表于 2020-12-13 16:49
只是启动下VHD,读写一般不多,临时文件基本不怎么影响碎片的,很早以前g4d+firadisk就是这样子, ...

我只不过往vhd加了几个文件,就产生碎片了
直接就蓝屏,

点评

不会吧?!你的vhd是不是放在ssd上面?ssd有FTL中间层会影响碎片。  详情 回复 发表于 2020-12-13 18:19
回复

使用道具 举报

516#
发表于 2020-12-13 17:12:32 来自手机 | 只看该作者
看来,让SVBUS支持碎片,很有必要。
回复

使用道具 举报

517#
 楼主| 发表于 2020-12-13 17:20:17 | 只看该作者
本帖最后由 wintoflash 于 2020-12-13 17:22 编辑
wuwuzz 发表于 2020-12-13 11:52
以前图示中用的是楼层里的grub2,该grub2没有包含hexdump。

因此,又从github下载了grub2,把hexdump包 ...

你发的图片上的数据不科学啊。

这个是不是 grub4dos 启动 grub2 ,再 map 的?


这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map 了?

我的fixwtg.vhd,热启、冷启用G4E map引导成功后,能够看到SVbus virtual磁盘设备,
而用grub2(仅限楼层中发布的1212版)热启、冷启map引导成功后,看不到SVbus virtual
磁盘设备。

grub2 和 grub4dos 在 map slot 里面写的信息不同,可能被 SVBus 当作不同类型的设备了。因为我觉得 grub4dos 写的有点问题。这个不重要。

点评

“这个是不是 grub4dos 启动 grub2 ,再 map 的?” ----不是的。这个应该是先前做过什么操作,然后热启动,单纯grub2引导、map。 “这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map 了?” ---  详情 回复 发表于 2020-12-13 21:04
回复

使用道具 举报

518#
 楼主| 发表于 2020-12-13 17:29:55 | 只看该作者
liuzhaoyzz 发表于 2020-12-13 11:48
好消息,用你在499楼分享的grubx64.efi.tar.gz,成功搞定了grub2+svbus+WIN7X64-UEFI-RAMOS!

1、在499 ...
2、感觉grub2读盘速度一直较慢,不稳定,感觉不如g4e稳定,请看下还有没有提升的空间。


如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也可能不行。
3、还有个问题:启动vhd-ramos的时候,能否优先搜索FAT32/ESP分区里面的bootx64.efi,如果找不到再找NTFS分区里面的bootx64.efi?
对于g4e,我发现如果优先查找NTFS里面的bootx64.efi会出错,不知道grub2是怎么考虑处理的?

grub2 不会按文件系统搜索虚拟盘内部。如果虚拟的是硬盘,它就先读 mbr,找激活分区,强制加载里面的 bootx64.efi。如果是 gpt,就强制加载 ESP 分区里面的 bootx64.efi。如果加载失败,就遍历 device path,只要是虚拟盘或者里面分区的 device path,就挨个试一遍。
我所说的 "加载" 其实是固件提供的启动服务里面的 "LoadImage"。

点评

本人亲测了-l这个参数,7GB的vhd加载到内存,结果如下: 1、把SX70211.vhd放到sata ssd上面,没有碎片。不带-l参数从0→100%,用时1分23秒。 menuentry "SX70211.vhd-svbus" "/VHD/SX70211.vhd" { efil  详情 回复 发表于 2020-12-29 09:28
grub2查找bootx64.efi的方案很不错!这正是我们想要的。对于MBR分区就找活动分区里的bootx64.efi,一般地来说UEFI搭配MBR硬盘启动的时候,bootx64.efi这样的引导文件肯定是会放在活动分区里的。 感觉上来  详情 回复 发表于 2020-12-13 19:18
回复

使用道具 举报

519#
发表于 2020-12-13 17:30:49 来自手机 | 只看该作者
SVBus只认最高处的搜索字符串,其他的没有起作用。

点评

svbus 的img 一些镜像工具,认为是 0 大小的磁盘,(没有smart 参数)  发表于 2020-12-14 12:03
回复

使用道具 举报

520#
发表于 2020-12-13 18:19:03 来自手机 | 只看该作者
江南一根葱 发表于 2020-12-13 17:06
我只不过往vhd加了几个文件,就产生碎片了
直接就蓝屏,

不会吧?!你的vhd是不是放在ssd上面?ssd有FTL中间层会影响碎片。

点评

这么高深,我确实是ssd上的,trim后才正常, 不过我以前在机械硬盘操、作,也不靠谱  详情 回复 发表于 2020-12-14 14:04
回复

使用道具 举报

521#
发表于 2020-12-13 19:18:27 来自手机 | 只看该作者
wintoflash 发表于 2020-12-13 17:29
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也 ...

        grub2查找bootx64.efi的方案很不错!这正是我们想要的。对于MBR分区就找活动分区里的bootx64.efi,一般地来说UEFI搭配MBR硬盘启动的时候,bootx64.efi这样的引导文件肯定是会放在活动分区里的。

感觉上来说g4e似乎没有这个机制?对于MBR硬盘活动FAT32分区+NTFS分区的情况,总是优先找到的是未激活的NTFS分区里的bootx64.efi。用户侧的确可以删除NTFS分区里的bootx64.efi规避问题,如果在开发侧考虑这个就好了。
回复

使用道具 举报

522#
发表于 2020-12-13 21:04:08 | 只看该作者
wintoflash 发表于 2020-12-13 17:20
你发的图片上的数据不科学啊。

这个是不是 grub4dos 启动 grub2 ,再 map 的?

“这个是不是 grub4dos 启动 grub2 ,再 map 的?”
----不是的。这个应该是先前做过什么操作,然后热启动,单纯grub2引导、map。

“这个是不是在 grub4dos 下 map,进grub2,在 grub2 下又执行 map 了?”
---没有再map。这个也是热启动之后,g4e下map,进grub2后截图,grub2没执行map。

怀疑热启动没清干净一些内容。
================================================
换用冷启动,重新进行操作,截图如下:
grub2 map





g4d map后,进grub2, hexdump





回复

使用道具 举报

523#
发表于 2020-12-13 21:09:43 | 只看该作者
@W大:

能不能发一个带hexdump、带ctl+alt+f12截图功能的grub2 ?  
我重做的grub2不带截图功能,发图效率低...

点评

github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。  详情 回复 发表于 2020-12-13 21:23
回复

使用道具 举报

524#
 楼主| 发表于 2020-12-13 21:23:39 | 只看该作者
本帖最后由 wintoflash 于 2020-12-13 21:25 编辑
wuwuzz 发表于 2020-12-13 21:09
@W大:

能不能发一个带hexdump、带ctl+alt+f12截图功能的grub2 ?  

grubx64.zip (656.91 KB, 下载次数: 9)
github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。

怀疑热启动没清干净一些内容。
================================================
换用冷启动,重新进行操作,截图如下:

这样看起来正常了。估计以前一些重启bug就是这个导致的。

点评

好消息!本人亲测,SVBUS+WIN7.VHD,vhd内部单分区,MBR分区,启动成功: menuentry "SX70211.vhd" "/VHD/SX70211.vhd" { efiload /EFI/grub/ntfs_x64.efi search --no-floppy --set --file $2  详情 回复 发表于 2020-12-17 01:43
好消息! 用你在524楼分享的这个grubx64.efi,成功地直接map win7.vhd启动成功,win7.vhd里面有svbus驱动加持。以前的版本直接map好像蓝屏了。  详情 回复 发表于 2020-12-14 12:32
ok  详情 回复 发表于 2020-12-13 23:04
回复

使用道具 举报

525#
发表于 2020-12-13 23:04:17 | 只看该作者
wintoflash 发表于 2020-12-13 21:23
github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。

ok
回复

使用道具 举报

526#
发表于 2020-12-14 08:44:36 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-14 08:51 编辑
wintoflash 发表于 2020-12-13 17:29
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也 ...

刚才用秒表测试了下,从选择菜单开始计时,把一个8GB的VHD放在普通ssd硬盘,完全加载到内存到100%为止停止计时。
g4e用了55秒,grub2用了1分23秒。
g4e加载速度比grub2快了(83-55)/83=34%


以前只是主观感觉慢,卡表看了下确实慢。
没有用--blocklist参数。
回复

使用道具 举报

527#
发表于 2020-12-14 08:56:00 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

528#
发表于 2020-12-14 12:32:59 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-14 12:35 编辑
wintoflash 发表于 2020-12-13 21:23
github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。




好消息!
用你在524楼分享的这个grubx64.efi,成功地直接map win7.vhd启动成功,win7.vhd里面有svbus驱动加持。
menuentry "SX70211.vhd" "/VHD/SX70211.vhd" {
       search --no-floppy --set --file $2
       map $2
    }


以前的版本直接map好像蓝屏了。
回复

使用道具 举报

529#
发表于 2020-12-14 14:04:00 | 只看该作者
liuzhaoyzz 发表于 2020-12-13 18:19
不会吧?!你的vhd是不是放在ssd上面?ssd有FTL中间层会影响碎片。

这么高深,我确实是ssd上的,trim后才正常,
不过我以前在机械硬盘操、作,也不靠谱

点评

根本用不着trim,WIN7以上的系统对ssd好像是自动开启trim的。ssd如果因为死机强制关机出现索引错误和交叉链接错误,chkdsk /f有时候都不一定能够完全修复,最简单直接的办法是:备份ssd里面的主要文件,然后  详情 回复 发表于 2020-12-17 07:56
回复

使用道具 举报

530#
发表于 2020-12-17 01:43:28 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-17 07:59 编辑
wintoflash 发表于 2020-12-13 21:23
github上已经发布了,你可以自己改模块。crscreenshot 是截图的模块。

好消息!本人亲测,SVBUS+WIN7.VHD,vhd内部单分区,MBR分区,启动成功:
menuentry "SX70211.vhd" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt $2
}

建议在发布的时候,加上efiload模块,这个模块很重要!没有这个模块,VHD-RAMOS单分区无法启动。
F:\bak\grub2\grub2-latest2020-12-17\arch\x64\builtin.txt
加上 efiload


我看了下帖子, 2019-11-9日,早在一年之前,118楼、119楼,我们早就讨论过了ntfs.efi驱动的加载了,单分区NTFS-svbus-RAMOS用grub2加载出错,我们早就应该想到加载ntfs.efi驱动的。


g4e也是因为缺乏这个ntfs.efi驱动导致无法正常加载单分区VHD。

点评

我觉得这个问题大家应该都知道啊,结果发现你们都不知道。。。多试试就能发现的。。。 另外,还是慎用这个 ntfs 驱动。保险起见,最好有 FAT 分区。 [attachimg]470880[/attachimg] 另外,今天的版本修复了 vhd  详情 回复 发表于 2020-12-17 14:31
“g4e也是因为缺乏这个ntfs.efi驱动导致无法正常加载单分区VHD” 是的,原以为G4E有内置NTFS支持,就没往这方面去想。实际上是我自己有模糊认识。  详情 回复 发表于 2020-12-17 12:21
回复

使用道具 举报

531#
发表于 2020-12-17 07:56:37 | 只看该作者
江南一根葱 发表于 2020-12-14 14:04
这么高深,我确实是ssd上的,trim后才正常,
不过我以前在机械硬盘操、作,也不靠谱

        根本用不着trim,WIN7以上的系统对ssd好像是自动开启trim的。ssd如果因为死机强制关机出现索引错误和交叉链接错误,chkdsk /f有时候都不一定能够完全修复,最简单直接暴力的办法是:备份ssd里面的主要文件,然后把ssd格式化,再把备份文件拷贝回去,各种怪异的问题基本都能够解决,很多时候不是UEFI固件“疯了”,而是ssd存贮“疯了”。

点评

trim可以解决,格式化那吃不消,几百G的文件  详情 回复 发表于 2020-12-17 12:47
回复

使用道具 举报

532#
发表于 2020-12-17 12:21:38 | 只看该作者
liuzhaoyzz 发表于 2020-12-17 01:43
好消息!本人亲测,SVBUS+WIN7.VHD,vhd内部单分区,MBR分区,启动成功:
menuentry "SX70211.vhd" "/VH ...

“g4e也是因为缺乏这个ntfs.efi驱动导致无法正常加载单分区VHD”

是的,原以为G4E有内置NTFS支持,就没往这方面去想。实际上是我自己有模糊认识。
回复

使用道具 举报

533#
发表于 2020-12-17 12:47:00 | 只看该作者
liuzhaoyzz 发表于 2020-12-17 07:56
根本用不着trim,WIN7以上的系统对ssd好像是自动开启trim的。ssd如果因为死机强制关机出现索引错 ...

trim可以解决,格式化那吃不消,几百G的文件
回复

使用道具 举报

534#
发表于 2020-12-17 13:02:48 | 只看该作者
感谢分享,学习下
回复

使用道具 举报

535#
 楼主| 发表于 2020-12-17 14:31:04 | 只看该作者
liuzhaoyzz 发表于 2020-12-17 01:43
好消息!本人亲测,SVBUS+WIN7.VHD,vhd内部单分区,MBR分区,启动成功:
menuentry "SX70211.vhd" "/VH ...

我觉得这个问题大家应该都知道啊,结果发现你们都不知道。。。多试试就能发现的。。。
建议慎用这个 ntfs 驱动。保险起见,最好有 FAT 分区。


另外,今天的版本修复了 vhd 模块的一些毛病。现在应该可以直接 map 或 loopback 挂载动态 vhd 了。
还有删掉了 fdlibm 模块,同时禁用浮点数,这个一般人不会关心吧。

你们在 BIOS 下用 grub4dos 启 RAMOS VHD,是不是喜欢用 lz4 压缩?
GRUB2 是否有必要支持 lz4 ?

点评

个人认为,在这论坛“玩”ramos的,“大部份”32G内存起步, 压缩,影响他们的心情,,, 个人认为,他们对16G以下内存的用户是非常不屑的  详情 回复 发表于 2020-12-17 19:23
回复

使用道具 举报

536#
发表于 2020-12-17 19:23:59 | 只看该作者
wintoflash 发表于 2020-12-17 14:31
我觉得这个问题大家应该都知道啊,结果发现你们都不知道。。。多试试就能发现的。。。
建议慎用这个 ntf ...

个人认为,在这论坛“玩”ramos的,“大部份”32G内存起步,
压缩,影响他们的心情,,,

个人认为,他们对16G以下内存的用户是非常不屑的

点评

也不能这么说,不同的人爱好不同,兴趣不同,无可非议,没有什么看不起之说。  详情 回复 发表于 2020-12-18 09:42
回复

使用道具 举报

537#
发表于 2020-12-17 21:14:45 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-18 21:16 编辑
wintoflash 发表于 2020-12-17 14:31
我觉得这个问题大家应该都知道啊,结果发现你们都不知道。。。多试试就能发现的。。。
建议慎用这个 ntf ...

        NTFS.EFI驱动,大家确实早就知道有这回事,我很早之前,在uefishell下也尝试过加载这个驱动,尝试用它解决UEFI-RAMOS的问题,然而有谁能够把vhd加载错误和这个驱动联想到一起呢?我的华硕电脑原生支持NTFS驱动,g4e带有NTFS驱动,对于WIN10-SVBUS-RAMOS-NTFS单分区启动没问题,可是WIN7/WIN8单分区启动就失败,用FAT32+NTFS双分区启动就可以成功。ntfs.efi的问题,的确没有想到。

你不说ntfs.efi驱动的稳定性,大家还真的都不知道,我在reboot.pro上面看到alacran汇报说,从不同网站下载的ntfs.efi这个驱动有失败的情况,可能是最新版本的问题,这个驱动倒底哪个版本更加适配g4e?我看有从refind下载的,有从github下载的,我找不到github那个下载地址了。

今天的版本修复了 vhd 模块的一些毛病。现在应该可以直接 map 或 loopback 挂载动态 vhd 了。

谢谢提醒,有的时候一些新功能,如果不去使用他,很容易就忘记了,grub2的efiload这个命令我去年知道有这么回事,也尝试过,后来完全没有印象了。

很多时候,开发者写了程序或者更新了bug,对于终端用户来说,根本不知道程序更新之后对于使用有什么变化,如果不是当初你@我,说reboot.pro上面有人成功用svbus制作了UEFI-RAMOS,我还真不知道去尝试,完全不知道要尝试,因为不知道svbus不需要做任何改动的情况下,单边改动g4e就能把g4e和svbus驱动对接上,并且成功启动UEFI-RAMOS。

BIOS下面用grub4dos引导的,实战上来讲,我基本没有用Svbus+vhd驱动这个方案,用的是primo驱动+vdf方案,用的是直接map  xxx.vdf的方案,vdf内部是采用compact压缩的,好处是primo这个软件能够直接保存(热备份)更新vdf里面的内容。vdf内部是压缩的,vdf外部再次压缩对于我个人来说,没有太大的必要。事实上我的内存用不完,压缩不压缩,对我来说真心不重要。
RAMOS要想玩起来,不能完全依靠各种压缩技术,加内存条最简单最实在。

我看reboot.pro的alacran似乎有这个需求,可能他代表了部分网友吧。是否跟进lz4模块,完全看大神你的兴趣爱好了。

对于svbus-vhd-uefi-ramos,如果支持gz/lz4,加载时间应该能够减少不少,这会加快RAMOS启动速度。



回复

使用道具 举报

538#
发表于 2020-12-18 09:42:58 来自手机 | 只看该作者
江南一根葱 发表于 2020-12-17 19:23
个人认为,在这论坛“玩”ramos的,“大部份”32G内存起步,
压缩,影响他们的心情,,,


        也不能这么说,不同的人爱好不同,兴趣不同,无可非议,没有什么看不起之说。

点评

我都是个人认为,玩ramos的,1111M/s的读写速度和2222M/s的读写速度在使用个小软件上都能感觉出区别。。。这个我是做不到的  详情 回复 发表于 2020-12-18 12:22
回复

使用道具 举报

539#
发表于 2020-12-18 12:22:19 | 只看该作者
liuzhaoyzz 发表于 2020-12-18 09:42
也不能这么说,不同的人爱好不同,兴趣不同,无可非议,没有什么看不起之说。

我都是个人认为,玩ramos的,1111M/s的读写速度和2222M/s的读写速度在使用个小软件上都能感觉出区别。。。这个我是做不到的

点评

这个速度区别的确感觉不出来。问题是电脑方面,对于速度的追求是没有止境的,就好像cpu,主屏速度翻了近百倍,还在持续发展,存储速度也是一样。管他有没有感觉,更快的当然更好。  详情 回复 发表于 2020-12-18 14:35
回复

使用道具 举报

540#
发表于 2020-12-18 14:35:04 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-19 15:03 编辑
江南一根葱 发表于 2020-12-18 12:22
我都是个人认为,玩ramos的,1111M/s的读写速度和2222M/s的读写速度在使用个小软件上都能感觉出区别。。 ...


        这个速度区别的确感觉不出来。问题是电脑方面,对于速度的追求是没有止境的,就好像cpu,主频速度翻了近百倍,还在持续发展,存储速度也是一样。管他有没有感觉,更快的当然更好。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-23 00:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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