|
今天再通报一个有关 ventoy 的问题。至今,在联想电脑上,我碰到的一个最严重的问题,就是,iso 仿真启动死机。那是一台联想笔记本。在这个联想笔记本上,用 ventoy 启动任何一个 iso 都是死机、花屏。此处花屏也是死机的一种方式,只不过死机时,屏幕是混乱的罢了。花屏的现象,很容易让人想到,那是代码 “跑飞” 了,跑到不是代码的地方,造成了混乱。而造成代码 “跑飞” 的一个常见的原因,就是堆栈被破坏,导致函数调用时,return 的地址被破坏,从而返回到一个随机的地方,于是代码就 “跑飞” 了。跑飞的结果,就是死机。而出现花屏,则是一个附带的效应。自己的程序占用过多的堆栈,导致堆栈冲突,是常见的原因。堆栈与谁冲突?堆栈可能与 BIOS 的数据发生冲突!您的堆栈,体积太大、占用过多,伸长到了 BIOS 所需要的区域,比如说,延伸到了中断向量表的尾部,而此处,BIOS 常常用作 int 调用的堆栈。于是,两个堆栈互相打架。并非所有的 BIOS 都把中断向量表的尾部当做堆栈来用,因此,您的程序,也并非总是死机。假如它总是死机,开发者倒是容易发现问题。然而,有些电脑发生死机,有些电脑又正常,这样,开发者可能就彻底蒙圈了!这只是举出一个例子罢了,冲突不一定是在中断向量表,还可能在别处,比如,堆栈与 BIOS 数据区发生冲突。
扯远了,回归正题。今天想说的是,尽管这台联想笔记本无法启动任何一个 iso,但是,ventoy 的菜单出现了,这说明 ventoy 确实成功启动了,成功从 bios 那里获取了控制权。而且,能够从 ventoy 进入 grub4dos,然后又能在 grub4dos 下成功启动 iso 进入 PE。
也就是说,至今在联想电脑上遇到的最严重的问题,就是 iso 启动失败。而 “第一启动” 的成功率,仍然是 100%。这就是我想要向大家汇报的内容。同时我也希望能够了解别人所遇到的情况。 |
|