无忧启动论坛

标题: 【已解决】求助,grub4dos从光盘加载VHD到内存后卡死 [打印本页]

作者: 2013lirunext    时间: 2019-10-19 23:49
标题: 【已解决】求助,grub4dos从光盘加载VHD到内存后卡死
本帖最后由 2013lirunext 于 2019-10-25 21:11 编辑


10.25更新

问题已解决,yaya提供了修改代码后的grldr,测试正常了。感谢不点和yaya的帮助!

------------------------------以下是原帖子------------------------------

同样的grldr代码加载VHD到内存,在本地硬盘和移动硬盘,都可以启动成功,但是grldr和VHD做进iso镜像并用虚拟光驱加载后,grldr可以启动并加载VHD到内存,但是加载到最后就卡死不动了,并且CPU使用率100%。研究了半天都没找出问题,特此发帖向大佬们求助。





grub4dos版本是 grub4dos-0.4.6a-2019-09-09,grldr代码如下:

title Load RAMOS
find --set-root /RAMOS/RAMOS.VHD
map --mem --top /RAMOS/RAMOS.VHD (hd0)
map --hook
root (hd0,0)
chainloader /bootmgr
boot

环境:都是在Parallels Desktop 14 虚拟机跑的。本地硬盘是虚拟机里的虚拟硬盘;移动硬盘是真实存在的物理机械硬盘,映射到虚拟机;光驱是用虚拟机加载iso文件。

iso镜像结构:


E:\
│  bootmgr
│  
│      
├─RAMOS
│      RAMOS.VHD
│      hash.txt
│      
└─其它的一些文件...


根目录下存放bootmgr,然后是有个RAMOS目录,里面存放了RAMOS.VHD文件。
这个bootmgr实际上是grldr改了个名字,不是微软的bootmgr,至于为什么grldr要改名为bootmgr是因为我不知道怎么设置iso的哪一个文件作为启动。我是用微PE的iso修改的,它的iso里面的bootmgr实际上也是grldr,所以我就用微PE的iso壳来做了,用我的grldr改名为bootmgr并替换掉微PE的bootmgr。

p.s 之所以要从iso里加载vhd,不用硬盘加载,不是吃饱了没事干,是因为这个vhd是一个Windows 7精简版做的迷你RAMOS,用来在某些复杂情况替代PE的。做成iso后,可以刻录到光盘或U盘启动。


作者: 不点    时间: 2019-10-20 12:41
先排除虚拟机的 bug 再说。就是说,你换个别的虚拟机,如果没问题,那就证明是你现在这个虚拟机的 bug 造成的。如果别的虚拟机也出现同样的问题,那我们接下来继续寻找其它原因。
作者: 2013lirunext    时间: 2019-10-20 13:27
不点 发表于 2019-10-20 12:41
先排除虚拟机的 bug 再说。就是说,你换个别的虚拟机,如果没问题,那就证明是你现在这个虚拟机的 bug 造成 ...

谢谢提供分析思路,之前没往虚拟机的bug这个方向想,现在试试vmware
作者: 2013lirunext    时间: 2019-10-20 14:56
不点 发表于 2019-10-20 12:41
先排除虚拟机的 bug 再说。就是说,你换个别的虚拟机,如果没问题,那就证明是你现在这个虚拟机的 bug 造成 ...

用vmware 试过了还是一样的问题,现象稍微有些不同的是,在vmware,[4096M/4100M]后的光标“_”还会一闪一闪,而在PD虚拟机,屏幕画面是不动的。不过此时vmware内部的CPU使用率应该也很高,因为明显感觉电脑发烫。

还请大师帮我



作者: 不点    时间: 2019-10-20 16:05
为了完整起见,你最好也测试一下真实机的情况。

如果你没有过多的时间来测试其它虚拟机以及真实机,那么,转入下一步骤的测试:测试 grub4dos 0.4.5 系列,看看有没有问题。此处是假定,0.4.6 引入了新的 bug,而 0.4.5 系列可能会正常。

作者: 2013lirunext    时间: 2019-10-20 16:47
不点 发表于 2019-10-20 16:05
为了完整起见,你最好也测试一下真实机的情况。

如果你没有过多的时间来测试其它虚拟机以及真实机,那么 ...

非常感谢!刚试了在grub4dos.chenall.net下载grub4dos-0.4.5c-2012-12-31版本,并用同样的代码写入这个版本的grldr,做进iso,可以用虚拟光驱启动成功!那证明了“假定,0.4.6 引入了新的 bug”。



作者: 2013lirunext    时间: 2019-10-20 16:52
不点 发表于 2019-10-20 16:05
为了完整起见,你最好也测试一下真实机的情况。

如果你没有过多的时间来测试其它虚拟机以及真实机,那么 ...

手头电脑只支持纯EFI启动,又出差在外没有可用的真实机测试,所以最近只能用虚拟机测试了,也不知道iso做好后在真实机上运行会不会出什么幺蛾子。。。
作者: 不点    时间: 2019-10-20 16:57
2013lirunext 发表于 2019-10-20 16:47
非常感谢!刚试了在grub4dos.chenall.net下载grub4dos-0.4.5c-2012-12-31版本,并用同样的代码写入这个版 ...

非常感谢您的辛苦测试,让大家了解到 0.4.6 存在 bug。相信开发者看到这一情况后,会采取措施。
开发者很有可能会让你逐个测试一系列的版本,以便确定究竟是哪个版本开始引入了 bug。

您也可以给开发者提供一个能够再现 bug 的最小 iso 文件,让开发者下载之后,开发者自己就能碰到失败的情况,这样您就彻底解脱了,不用跟踪每一个繁琐的测试步骤了。

作者: 2013lirunext    时间: 2019-10-20 17:07
不点 发表于 2019-10-20 16:57
非常感谢您的辛苦测试,让大家了解到 0.4.6 存在 bug。相信开发者看到这一情况后,会采取措施。
开发者 ...

感谢您的热心指导,让我找到了问题所在。我已经把问题提交到githubhttps://github.com/chenall/grub4dos/issues/217

我愿意配合开发者进行测试和解决问题,也感谢开发者们做出这么好的软件造福网友。

iso将于今天的晚些时候上传。
作者: 不点    时间: 2019-10-20 17:09
2013lirunext 发表于 2019-10-20 16:52
手头电脑只支持纯EFI启动,又出差在外没有可用的真实机测试,所以最近只能用虚拟机测试了,也不知道iso做 ...

根据您提供的测试报告,我认为目前可以判定,问题是由 grub4dos 0.4.6 的 bug 造成的。

粗略估计,您的 ISO 文件,可能没什么太大的问题,估计应该能够在那些支持 BIOS 的真实机上启动运行。


作者: gnuxwy    时间: 2019-10-20 20:53
还有用 grldr 改名 bootmgr ,再加载 VHD 来做 引导 iso的做法,真氏长见识了。。。

作者: 2013lirunext    时间: 2019-10-20 21:02
gnuxwy 发表于 2019-10-20 20:53
还有用 grldr 改名 bootmgr ,再加载 VHD 来做 引导 iso的做法,真氏长见识了。。。

哈哈,因为不知道“正统”、“正规”的方法怎么弄,不知道怎么设置iso里面哪个文件作为启动文件。恰好看微PE/通用PE的iso,就是这么搞的启动,所以直接套用了
作者: 2013lirunext    时间: 2019-10-20 21:03
不点 发表于 2019-10-20 17:09
根据您提供的测试报告,我认为目前可以判定,问题是由 grub4dos 0.4.6 的 bug 造成的。

粗略估计,您 ...

我倒是不担心grub4dos的引导,主要是担心vhd在虚拟机里用着ok,到别的机器会启动过程中蓝屏之类的问题,有点扯远了,这个和grub4dos无关哈
作者: 不点    时间: 2019-10-20 21:59
2013lirunext 发表于 2019-10-20 21:03
我倒是不担心grub4dos的引导,主要是担心vhd在虚拟机里用着ok,到别的机器会启动过程中蓝屏之类的问题, ...

唉——,这是个没办法的事情,属于“利益保护”范畴。

想当初,DOS、Win3.1 时代,操作系统是在软盘上,随便安装,安装后,也是随便拷贝(把安装后的文件夹拷到别的电脑上),就能到处运行。当初的 Office 5.0 也是拷贝后到处运行。如今称这些“拷贝后到处运行”的软件为“绿色软件”,因而,当初所有的软件都是“绿色软件”。

现在不行了,人家要保护人家自己的利益。因此,操作系统会把硬件信息进行加密,操作系统安装在某个硬件之下,就只能用于这台硬件设备,而不能“随意拷贝”到别处运行。


作者: cbl    时间: 2020-3-2 23:11
好的,学习了,我的也是加载到内存时候假死了




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3