无忧启动论坛

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

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

    [复制链接]
 楼主| 发表于 2020-4-1 18:54:26 | 显示全部楼层
ksafei 发表于 2020-4-1 17:59
经比对验证发现289#反馈的本机安全启动开启时ntboot引导NTFS分区wim失败问题已找到疑点
init.sh:"efilo ...

这个应该没关系吧,有点离谱。
回复

使用道具 举报

发表于 2020-4-1 19:04:46 | 显示全部楼层
wintoflash 发表于 2020-4-1 18:54
这个应该没关系吧,有点离谱。

事实的确如此,我是新旧版本比对一步步实机测试出来的,下为修改后正常引导启动图:
sshot-2.png
回复

使用道具 举报

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

现在增加了一个选项来屏蔽光驱
例如 屏蔽(cd0):
  1. map -x (cd0)
复制代码

屏蔽掉所有光驱后,应该就能启动了。

评分

参与人数 1无忧币 +20 收起 理由
liuzhaoyzz + 20 很给力!

查看全部评分

回复

使用道具 举报

发表于 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
回复

使用道具 举报

 楼主| 发表于 2020-5-13 08:01:52 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 07:36
wintoflash大神牛逼!

我在164楼描述的现象,
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)
}

应该先执行屏蔽 (cd0),再进行map。
  1. map -x (cd0)
  2. map --mem --type=CD $2
复制代码
想问下,map -x (cd0)是屏蔽所有光驱,还是仅仅屏蔽(cd0)?是否还需要map -x (cd1);map -x (cd2)...?

仅屏蔽 (cd0)。map -x 后面跟什么就屏蔽什么。理论上也可以屏蔽硬盘。
屏蔽所有光驱:
  1. for dev in (cd*); do
  2.     map -x $dev
  3. done
复制代码

回复

使用道具 举报

发表于 2020-5-13 08:29:05 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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



明白了,感谢回复!
回复

使用道具 举报

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



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

点评

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

使用道具 举报

 楼主| 发表于 2020-5-13 09:48:40 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 09:29
另外,想请问下,grub2菜单中,一行写多条语句,用分号作为续行符隔开,一行最多可以写多少个字符?

这个没有限制吧。内存都是动态分配的,只要内存有空间就行。
回复

使用道具 举报

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

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

点评

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

使用道具 举报

 楼主| 发表于 2020-5-13 10:16:06 | 显示全部楼层
本帖最后由 wintoflash 于 2020-5-13 10:21 编辑
liuzhaoyzz 发表于 2020-5-13 10:02
好像记得grub4dos单行限制256个字符还是多少,忘了。grub2应该也是一样有限制的。没有资料显示倒底是多少 ...

没有。grub4dos里面都是写死的内存地址,所以有限制。
grub2实现了malloc,动态分配内存。
grub2应该也是一样有限制的

你这个推论不成立。
grub2是完全推翻重写的。
https://github.com/a1ive/grub2-filemanager/blob/6f5be83ade9d0326688aaee7d3f1a10b5f899730/boot/grubfm/distro/win.sh#L46
这种长度都不能满足你的吗
回复

使用道具 举报

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

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

使用道具 举报

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

点评

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

使用道具 举报

 楼主| 发表于 2020-5-13 11:13:55 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 10:52
menuentry "WePE_64_V2.0.iso" "WePE_64_V2.0.iso" {
strconv --gbk --set=file "(http)/imgs/WePE_64_V ...

我喜欢调试信息,所以不让屏蔽。
回复

使用道具 举报

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

要不弄个动态图,盖住

点评

不用。 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} } 用这样子的  详情 回复 发表于 2020-5-13 11:45
回复

使用道具 举报

发表于 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.的错误。
回复

使用道具 举报

发表于 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.的错误。
回复

使用道具 举报

 楼主| 发表于 2020-5-13 16:27:25 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 15:22
大神,还是请出手去掉map -x的提示吧。因为实际启动过程中:
for dev in (cd*); do
    map -x $dev
  1. for dev in (cd*);
  2.   do
  3.     if [ -e ${dev} ];
  4.     then
  5.       map -x ${dev};
  6.     fi;
  7.   done;
复制代码
回复

使用道具 举报

发表于 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
回复

使用道具 举报

 楼主| 发表于 2020-5-13 17:23:15 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 17:18
这样子的菜单,大大增加了菜单的复杂度,少个空格都出错。
本来一句map -x ${dev}就能够搞定的,现在要 ...

错了就是错了,执行过程中出错然后报警,是正常操作。如果不报警反而不正常。
回复

使用道具 举报

发表于 2020-5-13 18:06:43 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 17:18
这样子的菜单,大大增加了菜单的复杂度,少个空格都出错。
本来一句map -x ${dev}就能够搞定的,现在要 ...

写成fuck函数,各个菜单调用,能极大缩简语句
只需要输fuck

点评

菜单里面再搞函数,感觉可读性较差,就一两条语句,没必要搞函数啊。  详情 回复 发表于 2020-5-13 18:57
回复

使用道具 举报

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

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

点评

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

使用道具 举报

发表于 2020-5-13 18:59:57 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-13 18:57
菜单里面再搞函数,感觉可读性较差,就一两条语句,没必要搞函数啊。

不是要弄在菜单里搞啊,写在别处,多个菜单里使用啊你不是说有七条语句
回复

使用道具 举报

发表于 2020-5-13 20:08:31 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2020-5-23 20:04:16 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-23 19:53
请问下大神,grub2,模块能否支持ext3 ext4 ReiserFS这样子的文件解析模块?我只看到有ext2?

ext2 3 4 都用ext2。
reiserfs也有。
回复

使用道具 举报

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

明白了。
回复

使用道具 举报

发表于 2020-5-25 16:44:31 | 显示全部楼层
iso的路径有要求吗
回复

使用道具 举报

发表于 2020-5-25 17:39:47 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 08:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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