无忧启动论坛

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

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

    [复制链接]
607#
发表于 2021-9-14 12:49:55 来自手机 | 只看该作者
传统BIOS下无法使用map命令?

点评

没必要开发。  详情 回复 发表于 2021-9-14 13:58
回复

使用道具 举报

606#
发表于 2021-8-12 18:10:09 | 只看该作者
wintoflash 发表于 2021-8-12 13:09
Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可 ...

谢谢大神的指点,我试试。
回复

使用道具 举报

605#
 楼主| 发表于 2021-8-12 13:09:34 | 只看该作者
brook 发表于 2021-8-12 08:30
大神现在还在开发E2B的EFI启动项目吗,昨天重新用了V1.73的版本,无论用Isodef 还是map启动,发现启动H3后 ...

Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可能是直接把 ISO 挂载到 Y 盘的。而国内 PE 大多数都需要把外部数据加载到 Y 盘,这会造成冲突。
至于 WAIGO 的 PE 无法启动,那是因为 WAIGO 的 PE 带了不稳定的 SVBus 驱动。你应该找到启动 ISO 的配置文件,在 map 后面加上 -g 选项。
    map [--pause] [--mem] [--type=CD|HD|FD] FILE
        -m, --mem  加载到内存
        --rt 指定内存盘在操作系统加载后不被释放
        ...
        -g, --no_g4d  不向内存写入 GRUB4DOS map 信息
        -f, --first 使该设备位于磁盘列表的第一位

点评

谢谢大神的指点,我试试。  详情 回复 发表于 2021-8-12 18:10
回复

使用道具 举报

604#
发表于 2021-8-12 08:30:00 | 只看该作者
大神现在还在开发E2B的EFI启动项目吗,昨天重新用了V1.73的版本,无论用Isodef 还是map启动,发现启动H3后无法点击外置配置,WAIGO 的PE直接无法启动,但是把这两个PE做出IMGPTN形式后,完全正常。imgPTN的PE兼容性更好。另外问一下大神,我做盘是分了三个区,第一个区80G为E2B的,第二个10G为EFI的,第三个区30G,总共120G的U盘,看说明弄的,不知对不对?

点评

Easy2Boot 不是我开发的。它的 UEFI 部分是基于我的 grubfm 修改的。据我所知,它启动 WinPE 的时候,可能是直接把 ISO 挂载到 Y 盘的。而国内 PE 大多数都需要把外部数据加载到 Y 盘,这会造成冲突。 至于 WAIGO  详情 回复 发表于 2021-8-12 13:09
回复

使用道具 举报

603#
发表于 2021-6-17 21:24:47 | 只看该作者
wintoflash 发表于 2021-6-17 20:04
我也是醉了。你下载 grub-2.06.tar.gz (或者 tar.xz),里面有个 NEWS。

想看详细的,就看它的提交历 ...

哦,看到了,很详细的解释!
回复

使用道具 举报

602#
 楼主| 发表于 2021-6-17 20:04:45 | 只看该作者
本帖最后由 wintoflash 于 2021-6-17 20:10 编辑
liuzhaoyzz 发表于 2021-6-17 11:00
https://ftp.gnu.org/gnu/grub/
        grub-2.06-for-windows.zip        2021-06-08 13:21        12 ...
想请问下,grub2的changelog在哪里?

我也是醉了。你下载 grub-2.06.tar.gz (或者 tar.xz),里面有个 NEWS。

想看详细的,就看它的提交历史 (commit history)
http://git.savannah.gnu.org/cgit/grub.git

点进去详细看或者点 expand,可以看到修改原因,作者、审核人员。每一根毛都看得清清楚楚,比 AV 都清晰。


点评

哦,看到了,很详细的解释!  详情 回复 发表于 2021-6-17 21:24
回复

使用道具 举报

601#
发表于 2021-6-17 17:51:13 | 只看该作者
liuzhaoyzz 发表于 2021-6-17 17:05
proxydhcp不是你心仪已久的吗?
你在哪里看到的?
有changelog吗?

启动出来看过了,还没想好用啥姿势给ipxe传递性息。
回复

使用道具 举报

600#
发表于 2021-6-17 17:05:06 | 只看该作者
江南一根葱 发表于 2021-6-17 15:45
用来网启不错,可以支持proxydhcp了,哈哈

proxydhcp不是你心仪已久的吗?
你在哪里看到的?
有changelog吗?

点评

启动出来看过了,还没想好用啥姿势给ipxe传递性息。  详情 回复 发表于 2021-6-17 17:51
回复

使用道具 举报

599#
发表于 2021-6-17 15:45:50 | 只看该作者
liuzhaoyzz 发表于 2021-6-17 11:00
https://ftp.gnu.org/gnu/grub/
        grub-2.06-for-windows.zip        2021-06-08 13:21        12 ...

用来网启不错,可以支持proxydhcp了,哈哈

点评

proxydhcp不是你心仪已久的吗? 你在哪里看到的? 有changelog吗?  详情 回复 发表于 2021-6-17 17:05
回复

使用道具 举报

598#
发表于 2021-6-17 11:00:38 | 只看该作者
本帖最后由 liuzhaoyzz 于 2021-6-17 11:08 编辑
wintoflash 发表于 2021-1-21 20:12
增加 "--vtoy" 参数,用来启动 ventoy vtoyboot 制作的 Linux vDisk,目前只支持 vhd 格式。
示例:

https://ftp.gnu.org/gnu/grub/
        grub-2.06-for-windows.zip        2021-06-08 13:21        12M         
大神,官方2.06版本已经正式发布了,可有什么值得借鉴的?


另外,想请问下,grub2的changelog在哪里?在官网https://www.gnu.org/software/grub/index.html没看到。


点评

我也是醉了。你下载 grub-2.06.tar.gz (或者 tar.xz),里面有个 NEWS。 [attachimg]481860[/attachimg]  详情 回复 发表于 2021-6-17 20:04
用来网启不错,可以支持proxydhcp了,哈哈  详情 回复 发表于 2021-6-17 15:45
回复

使用道具 举报

597#
发表于 2021-3-2 14:23:11 | 只看该作者
请问 grub2 下bios的磁盘仿真怎么做呢?
回复

使用道具 举报

596#
发表于 2021-3-2 14:20:03 | 只看该作者
请问 grub2 BIOS下的磁盘仿真怎么做呢?
回复

使用道具 举报

595#
 楼主| 发表于 2021-1-21 20:12:39 | 只看该作者
增加 "--vtoy" 参数,用来启动 ventoy vtoyboot 制作的 Linux vDisk,目前只支持 vhd 格式。
示例:
  1. map --vtoy (hd0,2)/manjaro.vhd.vtoy
复制代码

点评

https://ftp.gnu.org/gnu/grub/ grub-2.06-for-windows.zip 2021-06-08 13:21 12M 大神,官方2.06版本已经正式发布了,可有什么值得借鉴的?  详情 回复 发表于 2021-6-17 11:00
回复

使用道具 举报

594#
 楼主| 发表于 2021-1-21 14:37:13 | 只看该作者
liuzhaoyzz 发表于 2021-1-21 11:53
搞不懂这个邮件列表,感觉不如github托管平台直观。

我也不太会用。GNU 项目用这个,一是历史遗留问题,二是平台问题。托管 GNU 项目的平台本身必须保证开源,且不受制于一些商业公司。
回复

使用道具 举报

593#
发表于 2021-1-21 11:53:20 | 只看该作者
wintoflash 发表于 2021-1-21 11:43
grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/
讨论开发、反馈 bug、提问题 ...

搞不懂这个邮件列表,感觉不如github托管平台直观。

点评

我也不太会用。GNU 项目用这个,一是历史遗留问题,二是平台问题。托管 GNU 项目的平台本身必须保证开源,且不受制于一些商业公司。  详情 回复 发表于 2021-1-21 14:37
回复

使用道具 举报

592#
 楼主| 发表于 2021-1-21 11:43:48 | 只看该作者
liuzhaoyzz 发表于 2021-1-21 11:22
出于好奇的心理,想问下大神一个问题:
1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们 ...
官方grub2源代码托管平台,好像是GNU自己搭建的是吗?

grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/
讨论开发、反馈 bug、提问题都是用的邮件列表。
https://www.gnu.org/software/grub/grub-mailinglist.html

点评

搞不懂这个邮件列表,感觉不如github托管平台直观。  详情 回复 发表于 2021-1-21 11:53
回复

使用道具 举报

591#
发表于 2021-1-21 11:22:30 | 只看该作者
wintoflash 发表于 2020-12-29 10:56
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

出于好奇的心理,想问下大神一个问题:
1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们的官网上,http://www.gnu.org/software/grub/index.html
You can obtain the latest GRUB source from the GIT:
git clone https://git.savannah.gnu.org/git/grub.git
For developers with write access via ssh, use:
git clone <membername>@git.sv.gnu.org:/srv/git/grub.git
他们通过邮件列表来提交代码,反馈问题吗?
github的源代码托管我大概了解点,GNU GRUB的邮件列表,源代码托管我完全不懂。


点评

grub2 及其他很多 gnu 项目都托管在 Savannah http://savannah.gnu.org/ 讨论开发、反馈 bug、提问题都是用的邮件列表。 https://www.gnu.org/software/grub/grub-mailinglist.html  详情 回复 发表于 2021-1-21 11:43
回复

使用道具 举报

590#
发表于 2020-12-31 07:36:32 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-31 07:48 编辑
liuzhaoyzz 发表于 2020-12-29 13:06
2020-12-29日,报告下好消息,UEFI-RAMOS已被彻底攻克:
一、抛弃ntfs_x64.efi的情况下,grub2+ntboot已 ...

报告个好消息,WIN7英文版,单镜像测试没问题了,可能是系统搞乱了的问题,我重新做了个WIN7英文版测试,正常启动win7enpd-primo-uefi-ramos。ntboot和直接map都可以,没问题。

567楼截图中failed to load image,从此成了未解之谜。。。
http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=417233&pid=4204394&fromuid=298214




g4e-grub2-win7enpd-primo-ueif-ramos.jpg (217.71 KB, 下载次数: 347)

g4e-grub2-win7enpd-primo-ueif-ramos.jpg
回复

使用道具 举报

589#
发表于 2020-12-29 18:40:29 | 只看该作者
hilsonma 发表于 2020-12-29 18:33
你的电脑没有 \Windows 目录,那更简单了
你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows , ...

不是,我要修改RAMOS批处理,上面只是举个例子,对于别人的电脑,可能有多个windows,对于我的电脑,没有那个关键字。情况不一而论。
回复

使用道具 举报

588#
发表于 2020-12-29 18:33:04 | 只看该作者
本帖最后由 hilsonma 于 2020-12-29 18:42 编辑
liuzhaoyzz 发表于 2020-12-29 11:03
我的电脑,只有一个1GB的FAT32启动分区,其他全部都是vhd,就没有\Windows目录,只有\EFI\Microsoft\Boot ...

你的电脑没有 \Windows 目录,那更简单了
你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows ,不需要标志文件
这样只要
search -n -s -f \Windows\Boot\EFI\bootmgfw.efi
ntboot ($root)

就只会引导 (vd0)上有 \Windows\Boot\EFI\bootmgfw.efi 的分区
bootmgfw.efi 使用该分区上的 \Windows\Boot\EFI\bootmgfw.efi
winload.efi 使用该分区上的 \Windows\System32\Boot\winload.efi

你要做的只是规范vhd,确保里面有 \Windows\Boot\EFI\bootmgfw.efi 和 \Windows\System32\Boot\winload.efi ,没有就补全。

当然,以上命令要求wintoflash修改ntboot 默认 --efi=\Windows\Boot\EFI\bootmgfw.efi 以及 --winload=\Windows\System32\Boot\winload.efi

点评

不是,我要修改RAMOS批处理,上面只是举个例子,对于别人的电脑,可能有多个windows,对于我的电脑,没有那个关键字。情况不一而论。  详情 回复 发表于 2020-12-29 18:40
回复

使用道具 举报

587#
发表于 2020-12-29 13:07:26 | 只看该作者
wintoflash 发表于 2020-12-29 10:56
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。
加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

加上--highest=no 参数之后,分辨率正常了,感谢!
回复

使用道具 举报

586#
发表于 2020-12-29 13:06:31 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-29 13:30 编辑
wintoflash 发表于 2020-12-28 20:56
稍微改了一下ntboot对磁盘的判定。
现在也可以用 ntboot 启动map出来的vhd里面的windows系统了。
在我 ...

2020-12-29日,报告下好消息,UEFI-RAMOS已被彻底攻克:
一、抛弃ntfs_x64.efi的情况下,grub2+ntboot已完成了通杀WIN7 8 10单镜像、双镜像通杀:
1、ntboot启动WIN7 8.1 10+基于svbus驱动的vhd到内存成功。
2、ntboot启动WIN7 8.1 10+基于primo驱动的RAMOS成功,包括单镜像、双镜像模式。
WIN7 8.1 10双镜像模式支持无压缩、compact压缩、wimboot压缩。
有个win7英文版遇到问题,但我怀疑可能是系统搞坏了,以后有空再验证下。


二、保留ntfs_x64.efi的情况下,g4e/grub2的map已完成了通杀WIN7 8 10单镜像、双镜像通杀:
1、map --mem启动WIN7 8.1 10+基于svbus驱动的vhd到内存成功。
2、直接map启动WIN7 8.1 10+基于primo驱动的RAMOS成功,包括单镜像、双镜像模式。
WIN7 8.1 10双镜像模式支持无压缩、compact压缩、wimboot压缩。
有个win7英文版遇到问题,但我怀疑可能是系统搞坏了,以后有空再验证下。

向Wintoflash、2011yaya2007777、sunsea等等等等各位大神,这么长时间的付出表示衷心的感谢!



点评

报告个好消息,WIN7英文版,单镜像测试没问题了,可能是系统搞乱了的问题,我重新做了个WIN7英文版测试,正常启动win7enpd-primo-ueif-ramos。ntboot和直接map都可以,没问题。  详情 回复 发表于 2020-12-31 07:36
回复

使用道具 举报

585#
发表于 2020-12-29 11:03:17 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-29 11:20 编辑
ntboot使用了 --win 参数,就默认bootmgfw.efi为win分区的 \Windows\Boot\EFI\bootmgfw.efi ,winload.efi 为win分区的 \Windows\System32\Boot\winload.efi

我的电脑,只有一个1GB的FAT32启动分区,其他全部都是vhd,就没有\Windows目录,只有\EFI\Microsoft\Boot\bootmgfw.efi,winload.efi也全部都在vhd里面。

这样,正常的win启动只需 ntboot --win (vd0,1)
前面说了vhd里面可能有多分区啊。

另外,标志文件的办法,感觉有点麻烦。

        

点评

你的电脑没有 \Windows 目录,那更简单了 你map了某个vhd后,就只有 (vd0) 的某个分区上有 \Windows 这样只要 search -n -s -f \Windows\Boot\EFI\bootmgfw.efi ntboot ($root) 就只会引导 (vd0)上有 \Window  详情 回复 发表于 2020-12-29 18:33
回复

使用道具 举报

584#
 楼主| 发表于 2020-12-29 10:56:19 | 只看该作者
liuzhaoyzz 发表于 2020-12-29 08:15
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\ ...
用ntboot启动之后,屏幕的分辨率好像被锁定了不能更改?(这个我不确定)

加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。

这个能否做到自适应,因为启动之前我不知道这个vhd里面倒底是WIN7 还是WIN8.1 WIN10,菜单不容易通用,如果ntboot内部能够查找\Windows\system32\boot\winload.efi或者\Windows\system32\winload.efi是否存在并自动指定就好了。

这样做不符合 UNIX 的哲学:"程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。"
目前 GRUB 已经有了判断文件是否存在的命令,那么 NTBOOT 就不应该把这个功能再实现一遍。我们应该把这个选择权交给用户,让他们通过脚本自行决定。
如果两个文件都有,怎么办?
如果GRUB无法读取这个分区的数据怎么办?(比如没加载 EXFAT/NTFS 驱动,或者将来微软为 NTFS 设计了新的压缩方法,或者微软为 Windows 设计了新的文件系统格式,或者分区加密了)

能否自动搜索虚拟盘,不要指明分区这种?

同上。可以通过 GRUB2 脚本做到的事情,没必要集成进命令中。
如果一块硬盘上安装了多个 Windows,怎么办?
如果 bootx64.efi 不是微软的 bootmgfw.efi 怎么办?

1、WIN7启动后7B蓝屏了。(晚点我再试试,看下是否有其他原因)

win7 的 bootmgfw.efi 和更高版本的相比,差别很大。可能有其他原因。

点评

出于好奇的心理,想问下大神一个问题: 1、官方grub2源代码托管平台,好像是GNU自己搭建的是吗?在他们的官网上,http://www.gnu.org/software/grub/index.html,You can obtain the latest GRUB source from the G  详情 回复 发表于 2021-1-21 11:22
加上--highest=no 参数之后,分辨率正常了,感谢!  详情 回复 发表于 2020-12-29 13:07
回复

使用道具 举报

583#
发表于 2020-12-29 10:31:13 | 只看该作者
本帖最后由 hilsonma 于 2020-12-29 10:42 编辑
liuzhaoyzz 发表于 2020-12-29 08:15
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\ ...

vhd 不是可以修改的吗?

我的建议是修改vhd来符合一般的引导,而不是修改ntboot,当然,修改ntboot也可以,但前提是不影响启动效率。

所以我建议:
ntboot 引导的如果是win分区,就默认bootmgfw.efi为win分区的 \Windows\Boot\EFI\bootmgfw.efi ,winload.efi 为win分区的 \Windows\System32\Boot\winload.efi
这样,正常的win启动只需 ntboot (vd0,1)

如果win分区没有以上默认路径文件的,就在win分区放入以上路径文件

如果有多个win分区,用户通过在不同分区放置唯一的识别文件来指定启动
如:
第一个win分区根目录放识别文件 win001
search -n -s -f /win001
ntboot ($root)

第二个win分区根目录放识别文件 win002
search -n -s -f /win002
ntboot ($root)


--------------------
就好象有些win7原本缺少uefi支持的,不能期望ntboot来添加支持,而是在这些win7中添加uefi支持 (放入 \Windows\System32\Boot\winload.efi 等相关文件)。
回复

使用道具 举报

582#
发表于 2020-12-29 09:28:51 | 只看该作者
wintoflash 发表于 2020-12-13 17:29
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也 ...
如果文件无碎片,可以加 -l 参数,先转成 blocklist 格式加速读取。
如果文件有碎片,可能可以,也可能不行。

本人亲测了-l这个参数,7GB的vhd加载到内存,结果如下:
1、把SX70211.vhd放到sata ssd上面,没有碎片。不带-l参数从0→100%,用时1分23秒。
menuentry "SX70211.vhd-svbus" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt $2
}


加上-l参数,用时23秒。
menuentry "SX70211.vhd-svbus-l" "/VHD/SX70211.vhd" {
        efiload /EFI/grub/ntfs_x64.efi
        search --no-floppy --set --file $2
        map --mem --rt -l $2
}



2、把SX70211.vhd放到机械硬盘上面,wincontig显示4个碎片,在g4e下用blocklist看了显示有3个碎片。
不带-l参数从0→100%,用时1分13秒。
加上-l参数从0→100%,用时1分03秒


g4e用时1分11秒。
title WIN7X64-SVBUS (/VHD/SX70211.vhd)
find --ignore-floppies --ignore-cd --set-root /EFI/grub/ntfs_x64.efi
load /EFI/grub/ntfs_x64.efi
find --ignore-floppies --ignore-cd --set-root /VHD/SX70211.vhd
map --mem --top /VHD/SX70211.vhd (hd)
chainloader (hd-1)



我的结论:
1、如果vhd没有碎片,加上-l参数会极大地提高读盘速度。
2、如果vhd有碎片,加上-l参数提高读盘速度不是太多,机械硬盘上面加快了10秒,加上-l参数之后与g4e读盘速度几乎没有差别(可能有卡表误差);有碎片的ssd上面未测试。
3、无论是否有碎片,加上-l参数,无论是直接map,还是map --mem都可行。
所以最终结论是:grub2的map最好加上-l参数。

回复

使用道具 举报

581#
发表于 2020-12-29 08:15:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-29 10:30 编辑
wintoflash 发表于 2020-12-28 22:27
分区表可以不写的。(hd0,1) 一样可以。

是不是你的vhd里面的winload.efi路径不是 \Windows\System32 ...

map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,1)

早上起来试了下,结果如下:
1、WIN7启动后一台台式电脑7B蓝屏了(晚点我再试试,看下是否有其他原因)

另外一台笔记本WIN7成功启动。
2、WIN8.1启动成功。
3、WIN10启动成功。


有以下疑问:

1、能否自动搜索虚拟盘,不要指明分区这种?
ntboot --win -e (vd0)/EFI/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0)
这样子的话,不需要搜索bootx64.efi在vd0的哪个分区,因为有时候里面是单分区,有时候是双分区(激活FAT32+NTFS,或者GPT分区最少两个),而如果用search --no-floppy --set --file /EFI/boot/bootx64.efi,直接全盘搜索bootx64.efi,可能hd0,vd0上面都有,搜索到不匹配的bootx64.efi/bootmgfw.efi会不会有兼容性问题?
如果直接指明vd0,就可以直接自动查找vd0里面的bootx64.efi,最好激活的分区优先。
就好比g4e里面可以直接chainloader (hd-1),我不用担心bootx64.efi是在(hd0,0)或者是(hd0,1),只要是某个(hd-1),自动搜索(hd-1)里面的bootx64.efi,激活分区优先.

最后的(vd0)参数指明的是windows所在的盘符,如果能够自动定位windows目录,不需要指明分区,那就更好了。就不需要担心windows倒底是在(vd0,1)还是在(vd0,2)这样的问题了。

或者,有没有办法让search有参数直接搜索虚拟磁盘?这样的话,直接在用户侧就可以解决文件定位的问题。
哦,似乎在vhd内部放两个唯一名字的标志文件,也可以达到目标。搜索bootx64.efi用一个标志文件,搜索windows目录用一个标志文件,因为vd0内部,bootx64.efi和windows不一定在同一个分区。

2、WIN8 10似乎默认搜索\Windows\system32\boot\winload.efi,WIN7好像默认是\Windows\system32\winload.efi吧(这个有待大家指正)
这个能否做到自适应,因为启动之前我不知道这个vhd里面倒底是WIN7 还是WIN8.1 WIN10,菜单不容易通用,如果ntboot内部能够查找\Windows\system32\boot\winload.efi或者\Windows\system32\winload.efi是否存在并自动指定就好了。

3、用ntboot启动之后,屏幕的分辨率好像被锁定了不能更改?这个我不确定,试了笔记本好像又没事,可能是驱动的问题。





点评

加上 --highest=no 参数试试。默认是 highest=yes,也就是强制最高分辨率。 这样做不符合 UNIX 的哲学:"程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。" 目前 GRUB 已经有了判断文件  详情 回复 发表于 2020-12-29 10:56
vhd 不是可以修改的吗? 我的建议是修改vhd来符合一般的引导,而不是修改ntboot,当然,修改ntboot也可以,但前提是不影响启动效率。 所以我建议: ntboot使用了 --win 参数,就默认bootmgfw.efi为win分区的  详情 回复 发表于 2020-12-29 10:31
回复

使用道具 举报

580#
发表于 2020-12-28 22:52:50 来自手机 | 只看该作者
今天没法试了。晚点再试试看windows路径的问题,如果是路径的问题,对于win7 8是不同的,有点麻烦,菜单不好通用?
        你不是说 "当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下",但是手动输命令可以吗?
是的
回复

使用道具 举报

579#
 楼主| 发表于 2020-12-28 22:27:20 | 只看该作者
本帖最后由 wintoflash 于 2020-12-28 22:29 编辑
liuzhaoyzz 发表于 2020-12-28 22:06
如果能够抛弃ntfs驱动将会大大提高兼容性。
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win -- ...
另外grub2命名不都是(hd0,msdos1)这种吗?你发的菜单(hd1,4)仅仅是个示意的意思是吗?

分区表可以不写的。(hd0,1) 一样可以。
我这边试了不行啊,里面有svbus驱动,结果0xc000000f,或者7B蓝屏,我不知道错在哪里了?   

是不是你的vhd里面的winload.efi路径不是 \Windows\System32\boot\winload.efi?那需要指定 winload的路径。
比如
ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,3)


failed to load image我上面有截图呀?

你不是说 "当时直接用菜单启动,选择之后直接跳回菜单。boot命令晚点试下",但是手动输命令可以吗?
另外,bootmgfw报错那里,应该也可以用 左Ctrl+左Alt+F12 截图。

点评

ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --winload=\\Windows\\System32\\winload.efi (vd0,1) 早上起来试了下,结果如下: 1、WIN7启动后7B蓝屏了。 2、WIN8.1启动成功。 3、WIN10启动成功。 有以下  详情 回复 发表于 2020-12-29 08:15
回复

使用道具 举报

578#
发表于 2020-12-28 22:06:32 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2020-12-28 22:23 编辑

如果能够抛弃ntfs驱动将会大大提高兼容性。
map -n --mem --rt (hd0,msdos2)/ramos.vhd
ntboot --win --efi=(vd0,msdos1)/EFI/boot/bootx64.efi (vd0,msdos1)
我这边试了不行啊,里面有svbus驱动,结果0xc000000f,或者7B蓝屏,我不知道错在哪里了?   是不是必须用bootmgfw.efi作为名字?我手机回复的,打字好难。今天没时间继续测试了。

另外有没有好办法只搜索定位虚拟盘上面的bootmgfw.efi,不搜索物理硬盘上的bootmgfw.efi?

另外grub2命名不都是(hd0,msdos1)这种吗?你发的菜单(hd1,4)仅仅是个示意的意思是吗?

failed to load image我上面有截图呀?

IMG_20201228_215213.jpg (26.85 KB, 下载次数: 179)

IMG_20201228_215213.jpg

IMG_20201228_215153.jpg (32.91 KB, 下载次数: 191)

IMG_20201228_215153.jpg

点评

分区表可以不写的。(hd0,1) 一样可以。 是不是你的vhd里面的winload.efi路径不是 \Windows\System32\boot\winload.efi?那需要指定 winload的路径。 比如 ntboot --win -e (vd0,1)/efi/boot/bootx64.efi --win  详情 回复 发表于 2020-12-28 22:27
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 18:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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