指南针 发表于 2019-8-13 15:35:32

请教grub.exe为啥不能正常启动VHD

本帖最后由 指南针 于 2019-8-14 08:58 编辑

如题,我在DOS下用grub.exe加载配置文件,然后去启动VHD系统,但它不会正常启动,会有一个提示信息:

info:total_sectors calculated from partition table(16065)is less than the number of sectors in the whole disk image(20481).
信息:根据分区表(16065)计算的total_sectors小于整个磁盘映像(20481)中的扇区数量。

但是不使用DOS,是可以直接加载配置文件启动到系统的。

提供一个测试fba包,两个菜单,第一个是DOS启动grub.exe加载配置文件,第二个是直接加载配置文件,两个菜单加载的配置文件是一模一样的。

不点 发表于 2019-8-13 16:51:28

你的启动,死在了 NTLDR 加载之后。

建议你试试,不要加载 NTLDR,而是加载别的,比如加载 GRLDR,看看会不会死机。

怀疑你的 NTLDR 有问题,它不能适应被 DOS 污染之后的中断向量表。

你的 NTLDR(或 bootmgr)来路不明?是经过 hack 的?不是微软原版的?

请考虑这些因素。

liuzhaoyzz 发表于 2019-8-13 17:24:26

1、info:total_sectors calculated from partition table(16065)is less than the number of sectors in the whole disk image(20481).
这个提示的意思是你需要用固定大小的VHD来代替动态VHD,grub4dos的提示似乎不准确。
2、windows.vhd要想用grub4dos引导,需要有第三方的驱动,比如firadisk/winvblock/svbus之类的,否则无法识别磁盘7B蓝屏,bootmgr可以不要其他驱动直接引导vhd,grub4dos不能直接引导。
3、Will boot NTLDR from drive=0x80的提示,不一定是NTLDR,bootmgr似乎也会被grub4dos这样子提示即将引导NTLDR,这个提示似乎不准确。      

指南针 发表于 2019-8-13 17:35:27

不点 发表于 2019-8-13 16:51
你的启动,死在了 NTLDR 加载之后。

建议你试试,不要加载 NTLDR,而是加载别的,比如加载 GRLDR,看看 ...

换成了grldr后可以加载grldr,但不应该啊,我用的虽然不是微软的原版XP,但也是精简版,它不应该会搞NTLDR

指南针 发表于 2019-8-13 17:43:36

liuzhaoyzz 发表于 2019-8-13 17:24
1、info:total_sectors calculated from partition table(16065)is less than the number of sectors in th ...

我的VHD是固定大小,也注入了驱动,但现在问题是在DOS下的grub.exe压根不能启动VHD,没启动ntldr进入BOOT.INI的系统选择界面,我认为我用的NTLDR是原版的

不点 发表于 2019-8-13 17:46:21

指南针 发表于 2019-8-13 17:35
换成了grldr后可以加载grldr,但不应该啊,我用的虽然不是微软的原版XP,但也是精简版,它不应该会搞NTLD ...

你再做个试验,用微软原版 ntldr 或 bootmgr,看看情况如何。

注意,只要能启动到 NTLDR 的引导菜单,就算成功。

你也可以故意在 boot.ini 里面添加一些无用的启动项,目的只是让 ntldr 的菜单出来。

你看看能出来吗?

如果能出来,说明问题不在 ntldr 和 bootmgr 上,而死机发生在后面的 Windows 启动过程中。

如果菜单出不来,那说明问题在 ntldr 和 bootmgr 上。换用原版试试。


指南针 发表于 2019-8-13 18:05:38

不点 发表于 2019-8-13 17:46
你再做个试验,用微软原版 ntldr 或 bootmgr,看看情况如何。

注意,只要能启动到 NTLDR 的引导菜单, ...

换了个NTLDR(从网络上直接下载了两个,对比了MD5是一致的,因此认为是原版),启动到这个界面后很快就一闪而过,然后一直黑屏,直接configfile菜单文件能出boot.ini菜单;
换了bootmgr,不管是grub.exe还是直接加载菜单都能进入BCD报错界面

不点 发表于 2019-8-13 21:14:15

怀疑你的 DOS 有问题。你试试把 config.sys 里面清空,或者干脆删除 config.sys 文件,看看有没有效果。

注意 freeDOS 问题较多。请尽量使用 MSDOS。

你这是虚拟机,其他人也可以帮你测试。因为是虚拟机,所以,效果都一样。

很可惜,我没有环境,不方便测试,否则,我会替你搞定。

好的,就说这么多了,别的也帮不上了。

指南针 发表于 2019-8-14 08:58:56

不点 发表于 2019-8-13 21:14
怀疑你的 DOS 有问题。你试试把 config.sys 里面清空,或者干脆删除 config.sys 文件,看看有没有效果。

...

多谢提醒,换了个config.sys果然正常啦,哈哈哈

2011yaya2007777 发表于 2019-8-14 09:10:43

不点果然厉害,切中要害。

不点 发表于 2019-8-14 19:12:07

DOS 下确实会出问题,但是,出现 NTLDR 运行不了的情况,这问题就太大了。当时开发 grub.exe 的时候,是完全可以启动 NTLDR 的,不可能后来又不支持 NTLDR 了。

那么,我就怀疑,问题出在 DOS 上。

FreeDOS 毛病多,尤其是 FreeDOS 里面的 HIMEM、扩展内存管理等工具,极易造成系统不稳定。这些问题,当时都弄清楚了。就是说,使用 FreeDOS 时,要避免使用它的扩展内存管理工具,否则就会产生死机之类的问题。因此我怀疑楼主在使用 FreeDOS,并且正好使用了它的扩展内存管理工具。

即便是使用 MSDOS,也不可以使用那些与 grub4dos 不兼容的常驻内存程序(TSR)。天汇汉字系统就与 grub4dos 不兼容(造成 grub.exe 死机,无法正常运行)。所以,我们发出了警告:用户不可以使用天汇汉字系统。好像别的汉字系统都没问题,唯独不可以使用天汇汉字系统。

指南针 发表于 2019-8-16 17:01:44

2011yaya2007777 发表于 2019-8-14 09:10
不点果然厉害,切中要害。

大佬帮帮忙
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=415619&extra=page%3D1
加一下这个功能吧

2011yaya2007777 发表于 2019-8-16 19:08:10

在菜单前,加一条
passwd xxx
就可以了。

cbl 发表于 2020-3-2 23:16:49

学习了

cbl 发表于 2020-3-2 23:16:49

学习了

cbl 发表于 2020-3-2 23:16:49

学习了
页: [1]
查看完整版本: 请教grub.exe为啥不能正常启动VHD