|
本帖最后由 不点 于 2014-10-10 15:59 编辑
最近 mdyblog 报告,说 wee 下启动 grub.exe 没能传递当前 root 值到新的环境。我看了 wee 的代码,发现 wee 已经做了传递的工作,只是 grub4dos 启动逻辑过于复杂,才导致 grub4dos 忽略了 wee 所传递的 root 信息。
我们知道,grub4dos 的文件结构是 “头部+主体”。头部是用汇编语言写成的,具有搜索的功能。头部还有一个作用,那就是设定主体的 install_partition 以及 config_file(还可能有别的少量设置,我们本次不讨论)。
当初这两项设置之所以要在头部进行,是因为想直接支持 gnu grub legacy 的 pre_stage2,属于兼容性的考量。现在我们没有必要再去兼容 grub legacy 了,所以,头部的这两项设定,可以挪到主体(即 pre_stage2)里面,这样启动逻辑更加清晰,不至于产生混乱。兼容的越多,就越混乱。所以,我们头部代码今后不再支持加载原版的 grub legacy 里面的 pre_stage2(即,只支持加载 grub4dos 自己的 pre_stage2)。
本次改动就是准备撤销头部关于 install_partition 和 config_file 的两项设定,改为在主体中进行设定。
一般情况下不影响大家的使用。受影响的范围大概会是极少数对 grub4dos 进行深度定制的应用者。
调整之后会更方便那些深入研究 grub4dos 的应用者们。调整之后,install_partition 和 boot_drive 都可以被外部程序修改。
附件是个测试版,请 mdyblog 看看有没有问题。
说明:外部程序可以修改 boot_drive 和 install_partition(位于 grub4dos 的内部变量区),修改后的值将用来强制设置为启动设备。换句话说,启动 grub4dos 之前,用户可以控制启动后的 boot 设备和 root 设备为用户自己设定的 boot_drive 和 install_partition,只需把自己要设置的值注入到 grub4dos 主体部分的内部变量区,然后启动修改后的 grub4dos 即可达到目的。
对于 mdyblog 来说,在 wee 中通过设置 root 然后启动 grub.exe,也应该可以把 root 传递给新的 grub4dos 环境。
|
评分
-
查看全部评分
|