无忧启动论坛

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

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

    [复制链接]
31#
发表于 2019-12-21 22:02:37 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-21 22:05 编辑
wintoflash 发表于 2019-12-21 22:00
码云是自动同步的源码 https://gitee.com/a1ive/grub
但是码云不支持同步releases,好像也不能自动发布re ...

登录下也无所谓啊,下载速度快就好。码云确实不能同步release,就是这一点不太爽,而且码云不是自动同步的,要手工同步。
哦,看了下,码云的代码似乎不是最新版的吧。
回复

使用道具 举报

32#
发表于 2019-12-21 22:36:17 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-21 22:37 编辑

码云没有发行版,只有2.04-rc1,2019-04-08 13:30,几秒钟下载了。
github上面release版本,我下载了一晚上下载不下来,wintoflash大传到码云,或者兰奏云可好?
回复

使用道具 举报

33#
发表于 2019-12-21 22:43:25 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-12-21 22:46 编辑

你给的镜像站点速度还行。http://github-mirror.bugkiller.org/a1ive/grub/releases地址放到一楼吧

我分享个。https://www.lanzous.com/b00n8g6gf 密码:77yw

QQ拼音截图20191221224257.png (9.95 KB, 下载次数: 132)

QQ拼音截图20191221224257.png
回复

使用道具 举报

34#
发表于 2020-5-13 07:36:50 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-5-13 07:43 编辑
wintoflash 发表于 2020-5-12 20:39
现在增加了一个选项来屏蔽光驱
例如 屏蔽(cd0):

wintoflash大神牛逼!

我在164楼描述的现象,
http://wuyou.net/forum.php?mod=r ... 1539&fromuid=298214
用刚下载的版本定制之后,菜单改成下面,vm里面挂载了个pe.iso,优先从硬盘grub2x64.efi引导wepe.iso成功。
menuentry "WePE_64_V2.0.iso" "/boot/imgs/WePE_64_V2.0.iso" {
search --no-floppy --set --file $2
map --mem --type=CD $2
map -x (cd0)
}
想问下,map -x (cd0)是屏蔽所有光驱,还是仅仅屏蔽(cd0)?是否还需要map -x (cd1);map -x (cd2)...?

分流https://liuzhaoyzz.lanzous.com/b00n8g6gf



点评

应该先执行屏蔽 (cd0),再进行map。 仅屏蔽 (cd0)。map -x 后面跟什么就屏蔽什么。理论上也可以屏蔽硬盘。 屏蔽所有光驱:  详情 回复 发表于 2020-5-13 08:01
回复

使用道具 举报

35#
发表于 2020-5-13 08:41:07 来自手机 | 显示全部楼层
wintoflash 发表于 2020-5-13 08:01
应该先执行屏蔽 (cd0),再进行map。



明白了,感谢回复!
回复

使用道具 举报

36#
发表于 2020-5-13 09:29:03 来自手机 | 显示全部楼层
wintoflash 发表于 2020-5-13 08:01
应该先执行屏蔽 (cd0),再进行map。



另外,想请问下,grub2菜单中,一行写多条语句,用分号作为续行符隔开,一行最多可以写多少个字符?

点评

这个没有限制吧。内存都是动态分配的,只要内存有空间就行。  详情 回复 发表于 2020-5-13 09:48
回复

使用道具 举报

37#
发表于 2020-5-13 10:02:32 | 显示全部楼层
wintoflash 发表于 2020-5-13 09:48
这个没有限制吧。内存都是动态分配的,只要内存有空间就行。

好像记得grub4dos单行限制256个字符还是多少,忘了。grub2应该也是一样有限制的。没有资料显示倒底是多少。心里没谱。

点评

没有。grub4dos里面都是写死的内存地址,所以有限制。 grub2实现了malloc,动态分配内存。  详情 回复 发表于 2020-5-13 10:16
回复

使用道具 举报

38#
发表于 2020-5-13 10:24:23 | 显示全部楼层
wintoflash 发表于 2020-5-13 10:16
没有。grub4dos里面都是写死的内存地址,所以有限制。
grub2实现了malloc,动态分配内存。

哦,明白了。看样子我对grub2误会很深啊!
回复

使用道具 举报

39#
发表于 2020-5-13 10:52:23 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-5-13 10:59 编辑
wintoflash 发表于 2020-5-12 20:39
现在增加了一个选项来屏蔽光驱
例如 屏蔽(cd0):

menuentry "WePE_64_V2.0.iso" "WePE_64_V2.0.iso" {
strconv --gbk --set=file "(http)/imgs/WePE_64_V2.0.iso";map -x (cd0);map -x (cd1);map -x (cd2);map --mem --type=CD ${file}
}

grub2-pxe启动,用上面的菜单,
(cd0)挂载的有个pe1.iso,提示path:....../EndEntire一长串字符。
(cd1) (cd2)没有挂载,启动的时候提示出错,提示failed to open disk.这个出错信息让人迷惑,以为启动出错了,其实没问题,能否屏蔽显示?
就是(cd0)存在的话也没必要提示啊。

在windows批处理里面,可以用1>nul 2>nul屏蔽输出显示:
pause 1>nul 2>nul

grub2有没有类似的屏蔽某个命令输出显示的命令?
或者在map -x命令内部代码层级直接屏蔽输出显示,是否可行?





测试GPT-2020-05-13-10-47-56.png (4.25 KB, 下载次数: 254)

测试GPT-2020-05-13-10-47-56.png

点评

我喜欢调试信息,所以不让屏蔽。  详情 回复 发表于 2020-5-13 11:13
回复

使用道具 举报

40#
发表于 2020-5-13 11:45:21 | 显示全部楼层
江南一根葱 发表于 2020-5-13 11:38
要不弄个动态图,盖住

不用。

menuentry "WePE_64_V2.0.iso" "WePE_64_V2.0.iso" {
strconv --gbk --set=file "(http)/imgs/WePE_64_V2.0.iso";for dev in (cd*); do map -x $dev;done;map --mem --type=CD ${file}
}

用这样子的语句就可以不显示failed to open disk.的错误。
回复

使用道具 举报

41#
发表于 2020-5-13 15:22:15 | 显示全部楼层
wintoflash 发表于 2020-5-13 11:13
我喜欢调试信息,所以不让屏蔽。

大神,还是请出手去掉map -x的提示吧。因为实际启动过程中:
for dev in (cd*); do
    map -x $dev
done
如果一个光驱都没有的时候,上面的语句还是会提示failed to open disk.的错误。
回复

使用道具 举报

42#
发表于 2020-5-13 17:18:47 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-5-13 17:23 编辑

这样子的菜单,大大增加了菜单的复杂度,少个空格都出错。
本来一句map -x ${dev}就能够搞定的,现在要搞7个语句,就是为了规避那个本来不该出现的错误提示failed to open disk.

path:....../EndEntire一长串字符保留倒是可以,用于调试。

点评

写成fuck函数,各个菜单调用,能极大缩简语句 只需要输fuck  详情 回复 发表于 2020-5-13 18:06
错了就是错了,执行过程中出错然后报警,是正常操作。如果不报警反而不正常。  详情 回复 发表于 2020-5-13 17:23
回复

使用道具 举报

43#
发表于 2020-5-13 18:57:53 来自手机 | 显示全部楼层
江南一根葱 发表于 2020-5-13 18:06
写成fuck函数,各个菜单调用,能极大缩简语句
只需要输fuck

菜单里面再搞函数,感觉可读性较差,就一两条语句,没必要搞函数啊。

点评

不是要弄在菜单里搞啊,写在别处,多个菜单里使用啊  详情 回复 发表于 2020-5-13 18:59
回复

使用道具 举报

44#
发表于 2020-5-13 20:20:27 | 显示全部楼层
江南一根葱 发表于 2020-5-13 18:59
不是要弄在菜单里搞啊,写在别处,多个菜单里使用啊你不是说有七条语句

写在别处不是更乱了吗?一个grub.cfg已经够我折腾的了。
回复

使用道具 举报

45#
发表于 2020-5-23 19:53:10 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-5-23 19:55 编辑
wintoflash 发表于 2020-5-13 17:23
错了就是错了,执行过程中出错然后报警,是正常操作。如果不报警反而不正常。

请问下大神,grub2,模块能否支持ext3 ext4 ReiserFS这样子的文件解析模块?我只看到有ext2?

点评

ext2 3 4 都用ext2。 reiserfs也有。  详情 回复 发表于 2020-5-23 20:04
回复

使用道具 举报

46#
发表于 2020-5-23 20:06:33 | 显示全部楼层
wintoflash 发表于 2020-5-23 20:04
ext2 3 4 都用ext2。
reiserfs也有。

明白了。
回复

使用道具 举报

47#
发表于 2020-11-4 14:45:40 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-4 15:00 编辑

github下载速度只有20~60kB/s,到最后是0~200B/s,简直是浪费生命!
https://offcloud.com/ 下载也很慢,没有太大的改善。
分享个GitHub代下载服务·永久免费 http://gitd.cc/
有点奇怪的是,这个GitHub代下载服务下载后与github原站点下载的MD5值不同,不知道咋回事。压缩包解压缩之后,里面的文件MD5倒是一致的,没有问题。

另外,想问下wintoflash大神,grub2有没有changelog之类的?对于grub2更新了什么内容有些好奇。github上面,commit里面只是有个简短的描述。






回复

使用道具 举报

48#
发表于 2020-11-4 15:04:47 | 显示全部楼层
wintoflash 发表于 2020-11-4 14:59
如果没详细说明,那一般是修bug或者内部的一些改动。
如果增加了模块或命令,我都会写 "add ... command ...

       难怪,我看到github上面,10725 commits,用户文档没发现有什么改变,原来都是后台调整。
回复

使用道具 举报

49#
发表于 2020-11-5 14:19:41 | 显示全部楼层
wintoflash 发表于 2020-11-5 13:10
gitd.cc在我这边特别慢。github反而很快。

这都是没办法的事。国内没有靠谱且免费的持续集成服务和软 ...

        不同地域对不同服务器响应的确不同,差别还很大。
回复

使用道具 举报

50#
发表于 2020-11-5 16:30:25 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-5 16:34 编辑
wintoflash 发表于 2020-11-5 13:48
@wuwuzz 可以下载最新版试试
map -f /xxx.iso
这样让 map 出的磁盘/光盘排在第一位。

        刚才在虚拟机里面试了下,光驱里面挂载个PE1.ISO,bios设置优先从本地硬盘的grub2x64.efi引导,可以启动pe2.iso,似乎不需要提前map -x (cd0)?
菜单如下:
map --mem -f --type=CD /pe2.iso


menuentry "SXWIN10PEX64_17763_NET20200902.iso" "/boot/imgs/SXWIN10PEX64_17763_NET20200902.iso" {
search --no-floppy --set --file $2
map --mem -f --type=CD $2
}


回复

使用道具 举报

51#
发表于 2020-11-5 16:39:52 | 显示全部楼层
wintoflash 发表于 2020-11-5 16:32
是的,不用map -x。
还有 map本地镜像不需要--mem。加--mem纯属浪费时间

        太棒了!不要map -x (cd0)这样子的语句,菜单简单太多了!以前要7条语句。

PE启动我都使用map --mem加载到内存,习惯了。
回复

使用道具 举报

52#
发表于 2020-11-5 17:02:57 | 显示全部楼层
wintoflash 发表于 2020-11-5 16:44
加--mem除了浪费时间没有其他用处。这个参数一般网启才用。
就算你想设计Windows下的驱动挂载map出来的 ...

        map --mem可以规避在grub4dos下面需要pe.iso连续存放的问题,而且map --mem要比直接map稳定些,pe.iso所在的优盘可以拔除,时间长了就习惯用这个参数了,grub2下面直接map pe.iso对于碎片是否有要求?
回复

使用道具 举报

53#
发表于 2020-11-5 18:35:10 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-5 18:40 编辑
wintoflash 发表于 2020-11-5 17:46
没有任何要求。
如果没有碎片(或者碎片满足一些要求),可以用 --blocklist 参数加速虚拟盘的读取。 ...

不是退出grub2/grub4dos的瞬间拔u盘啊,不是想在grub2启动 iso 之后,windows 转圈之前的那几秒之间拔掉 U 盘(拔掉的时候也很少,只是有这个可能),是启动PE之后可以拔掉优盘啊,如果直接map,启动PE之后可能还会有读写优盘的动作吧,直接拔掉有蓝屏的可能(因为有些PE的外置是放在wim之外,iso以内),在BIOS启动的grub4dos里面,map --mem感觉上来说要比直接map真的稳定可靠些(规避碎片文件是其中的一个方面),然后这些习惯一直沿袭下来了,我以为grub2_UEFI也是这样子呢。
看了你的解释,看样子要颠覆我的观念了!我真不知道或者没有注意到在哪里发帖推荐过直接map。
回复

使用道具 举报

54#
发表于 2020-11-6 10:07:18 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-6 11:33 编辑
wintoflash 发表于 2020-11-5 16:44
加--mem除了浪费时间没有其他用处。这个参数一般网启才用。
就算你想设计Windows下的驱动挂载map出来的 ...

grub2_UEFI_map与map --mem启动PE速度测试
选取了几个不同大小的PE,对grub2_UEFI启动PE.ISO(均为全内置版本PE)采用直接map和map --mem启动速度进行了测试。
测试环境:为了便于截图和录像,在vmware虚拟机中进行测试,引导器为grub2_uefi_20201105版本,pe.iso存放的介质为虚拟机机械硬盘。从grub2选择启动菜单开始计时,到见到PE桌面停止计时。下面的gif,可以下载到本地,用7gif查看,ctrl+↑加快播放速度,ctrl+↓减慢播放速度。
1、WePE_64_V2.1_beta.iso,199MB

直接map,耗时2:05秒。



map --mem,耗时2:02秒。



2、SXWIN10PEX64_17763_NET20200902.iso,438MB
直接map,启动后发生蓝屏一次;



再次重启测试,耗时4:10秒。



map --mem,耗时2:29秒。



3、Win10PE_17763.107x64net.iso,699MB
直接map,耗时5:01秒。



map --mem,耗时3:08秒。



我的结论:
1、对于体积较小的200MB的微PE,直接map pe.iso和map --mem pe.iso速度相差不大,对于体积稍大的PE,map --mem pe.iso要比map pe.iso启动速度快。一般的PE体积都会超过200MB,大概500MB-1GB左右。
测试是在机械硬盘上进行的,在普通优盘上启动速度应该要比机械硬盘更慢,启动速度差距估计稍大。我觉得还是map --mem pe.iso更好。
2、内存足够的前提下,map --mem pe.iso要比map pe.iso启动更加稳定。直接map在机械硬盘上蓝屏了一次。
3、grub2_UEFI感觉读盘的速度有一定的提升空间,而且读盘瞬时速度显示似乎有点不符合实际,前期有时候显示4TiB/s、13GiB/S,后期读盘速度在机械硬盘上只有68MB/S~2MB/S左右,这个速度感觉不符合实际。



哦,刚才又在实体机上面用优盘测试了几次,用手机秒表卡表,启动速度大概34-46秒的样子,与虚拟机启动速度差别太大了!而且感觉map --mem pe.iso与map pe.iso启动同一个PE启动速度相差无几!大概2秒的样子!
看样子虚拟机不能代替实体机作为速度测试的依据,相差太大了!原因不明。





回复

使用道具 举报

55#
发表于 2020-11-6 22:02:16 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-6 22:10 编辑
2011yaya2007777 发表于 2020-11-6 16:33
在虚拟机里,加与不加 --mem 耗时应当差不多,因为两者都是在内存里。在实机上,如果程序把自己都加载到内 ...

不对啊,虚拟机里面,直接map我测试的慢很多。
实体机里面,直接map和map --mem基本上没差别,只有2秒不到的差别!(测试的是全内置版PE.ISO)
回复

使用道具 举报

56#
发表于 2020-11-6 22:03:33 | 显示全部楼层
hilsonma 发表于 2020-11-6 18:22
不管带不带 --mem,始终都是读一次到内存,区别只是前者先读再从内存启动,后者边启动边读。整体效率应该 ...
由于U盘读盘比硬盘慢,所以我只有在第一次接触的电脑上启动U盘上的pe,经我手维护的电脑,我都放一份pe镜像在硬盘上作为备用系统以便维护。只有发生主引导故障才需要从U盘启动,引导硬盘上的pe。
在这一点上,你跟我的用法完全一样。我都是尽可能抛弃USB启动。
回复

使用道具 举报

57#
发表于 2020-11-6 22:46:14 | 显示全部楼层
wuwuzz 发表于 2020-11-6 22:37
高速U盘的读速度,要超过机械硬盘读速度...

不是高速优盘,是普通的优盘,读写没有机械硬盘快。
回复

使用道具 举报

58#
发表于 2020-11-9 10:21:06 | 显示全部楼层
江南一根葱 发表于 2020-11-6 22:54
不加mem也可以拔掉u盘的,毕竟最后都是由bootmgfw.efi载入内存,快慢。这就看grub2和微软启动器那个读盘能 ...

        全内置的PE,一般都是可以拔掉优盘的,外置版本的PE,拔掉优盘可能外置软件找不到,严重的可能会导致蓝屏。我更加喜欢全内置版本的PE。
回复

使用道具 举报

59#
发表于 2020-11-10 07:55:25 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-10 08:14 编辑
江南一根葱 发表于 2020-11-9 17:54
外置版的,加了mem照样不能拔。。。

        外置版的,BIOS启动,如果集成了firadisk这样的驱动,可以拔盘。xppe有集成这样的驱动的,WIN7 8 10PE好像很少见了。

       BIOS下面,管他是否集成了firadisk这样子的驱动,我都是喜欢用map --mem,便于XPPE启动找到外置,还规避文件碎片问题,启动速度也还可以。
回复

使用道具 举报

60#
发表于 2020-11-12 07:30:40 | 显示全部楼层
wintoflash 发表于 2020-11-10 18:56
都 UEFI 了,还是忘掉插屁吧。

UEFI也有UEFI的特点。我不建议UEFI用--mem也有我的考虑。
都 UEFI 了,还是忘掉插屁吧。

确实是。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 11:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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