无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 20341|回复: 32
打印 上一主题 下一主题

[分享] 快速修复引导(WEE)

    [复制链接]
跳转到指定楼层
1#
发表于 2019-7-5 16:10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hilsonma 于 2019-11-8 22:37 编辑

注意:MBR操作属于危险操作,如你对硬盘不熟悉请不要随意操作!请事先备份mbr到u盘再操作。
请确认你的硬盘是mbr硬盘而不是gpt硬盘。

1.下载附件          引导修复_WEE.7z (2.1 MB, 下载次数: 746)
2.解压后双击运行脚本 建立硬盘WEE引导.cmd
    脚本会将wee63.mbr写到主引导记录,并将引导文件grldr 和siso 复制到D盘根目录。

wee引导是一种bios引导。wee 是装在硬盘MBR上的微型的Grub4DOS。
wee 的最大作用是防止因丢失分区上的引导文件而死机。只要 MBR 上的 wee 还在,启动就不至于死机,于是就还能尝试挽救。

附件wee默认引导grldr (grub4dos). 找不到grldr就引导bootmgr,bootmgr也找不到就引导ntldr,ntldr再找不到就进入wee命令行。
grldr默认引导Windows(菜单第一项). 菜单第二项引导pe (\pe\pe.wim)。菜单第三项将任意分区的pe文件夹中的wim、iso、img、vhd等文件自动生成菜单一键启动,自动菜单按HOME键再回车可浏览电脑所有磁盘文件选择某镜像启动。

如需修改wee引导菜单请使用记事本修改wee.lst后重新运行脚本。
如需修改g4d菜单请使用BOOTICEx64.exe 修改grldr 的内置菜单。

U盘启动请参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414574

20191029更新:
安装程序改用weesetup.exe http://bbs.wuyou.net/forum.php?m ... p;extra=&page=2  (在18楼)
wee63.mbr使用 求道者 编译的版本 http://bbs.wuyou.net/forum.php?m ... page%3D1&page=3 (在28楼)

以上附件名可以看出,这是一个引导修复系列,相关的还有:
引导修复_Win_BIOS  ----重建windows bios引导
引导修复_Win_UEFI  ----重建windows uefi引导
引导修复_EFI     ---------重建硬盘uefi引导

点评

大大再搞一个G4D引导修复吧!  发表于 2023-7-11 16:03

评分

参与人数 2无忧币 +6 收起 理由
879792799 + 5 很给力!
qinghong0811 + 1 很给力!

查看全部评分

2#
发表于 2019-7-5 16:39:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-7-5 17:37 编辑

      
@Echo Off
echo 将把mbr设置为wee
BOOTICEx64.exe /DEVICE=0 /mbr /install /type=wee /menu=wee.lst
echo 复制G4D引导文件
copy grldr d:\
copy run d:\

    不能简单地用这一句来设置wee.mbr,因为主引导硬盘不一定是hd0,可能是hd1,hd2,对于PE启动来说PE不知道倒底哪个应该是实际你想要写入的hd0,所以对于多硬盘的情况应该给出盘符选择。还有对于RAMOS的情况,hd0是内存盘,修改内存盘的MBR为wee,重启没有作用的,wee不会被引导。对于vhd系统,可能也存在类似的问题。
    另外,还应该考虑到grldr在不同分区存在多个副本的问题,比如C盘有个grldr,D盘也有个,一般来说优先引导的会是C盘的grldr,wee.mbr→c:\grldr,D盘的grldr→run模块不会被执行。那为什么一定要把grldr放在C盘呢?因为ntldr的boot.ini只能支持从C盘引导grldr。那么简单地再加一句copy grldr c:\行不行呢?不一定行,在PE里面C盘不一定是真正的启动盘。在RAMOS中C盘是内存盘,也不是真正的启动盘。还有在VHD系统启动的时候,C盘也不是真正的启动盘。这些情况都应当考虑。
    还有,你的run模块是sratlf版主的吧?他的run模块已经5年没有更新了,已经不能很好地搭配yaya最新版的g4d 0.46a了。还是原始菜单可靠!run模块只能作为个补充,grub4dos在yaya的带领下不断地在砥砺前行,修复了一个又一个bug,越来越稳健,功能越来越多,还是用新版的g4d 0.46a好。5大的siso似乎也调用的是sratlf的run模块。我碰到的情况是NVME SSD里面会出错,机械硬盘里面没问题。这个帖子讨论了很多:http://wuyou.net/forum.php?mod=r ... &fromuid=298214

评分

参与人数 2无忧币 +10 收起 理由
879792799 + 5 赞一个!
hilsonma + 5 感谢指导!

查看全部评分

回复

使用道具 举报

3#
发表于 2019-7-5 16:43:07 | 只看该作者
不是说BOOTICE内置的WEE菜单是错的吗

点评

已经用wee.lst 代替原来的内置菜单。 原内置菜单启动windows的第一行是 find --set-root --active command +1 没有指明find的对象直接引导扇区,可能因此出错。  详情 回复 发表于 2019-7-5 17:32
回复

使用道具 举报

4#
发表于 2019-7-5 17:23:17 | 只看该作者
再提几点建议。

1、引导是个安全性很强的问题,尽量要做到安全。此处安全主要是指,不能一不留神毁坏了用户的盘或文件。

就是说,即便在用户误用的情况下,也要保证,不会轻易损坏用户的东西。

比如说,用户的盘是不是 MBR 的格式?如果不是,你的软件应该提醒用户,而不是让用户自己瞎用,用完了,系统不能启动了,此时再来补救,那就晚了。就算能补救,也带来了麻烦。

2、最好能够在写入前事先自动备份用户的分区表或其他重要信息到另外一个盘上(比如 U 盘上)。用户现有的 MBR,它也不一定就可以随便覆盖。有些奇葩情况,需要照顾到,要考虑周到。比如,有些奇葩用户,他的 MBR 磁道直接用来作为分区数据,他把 MBR 上的 63 个扇区,都用于分区数据了。这种情况下,如果你不管三七二十一,直接写入 MBR 磁道,那你就彻底破坏了用户的第一分区的 BPB 表,那么,这个分区的数据也就完蛋了,是很难恢复的。

3、BootICE 是个很好的软件,可惜原作者的源代码丢失,重写起来不容易。BOOTICE 自带的 wee 菜单,不是最新的,但也能用。然而最好是采用 chenall 网站上的最新的 wee 菜单。目前我自己要使用 wee 的时候,还是用 BOOTICE 来安装的。

4、安全需要很多年的坚持和锤炼。就跟医生看病一样,越老的医生,看得越好。为什么?因为他锤炼了很多年,安全系数就比较高。

点评

多谢不点大师指点,安全是第一位的,学习了  发表于 2019-7-7 13:18

评分

参与人数 2无忧币 +8 收起 理由
879792799 + 3 赞一个!
hilsonma + 5 感谢指导!受教了。

查看全部评分

回复

使用道具 举报

5#
 楼主| 发表于 2019-7-5 17:32:33 | 只看该作者
指南针 发表于 2019-7-5 16:43
不是说BOOTICE内置的WEE菜单是错的吗

已经用wee.lst 代替原来的内置菜单。
原内置菜单启动windows的第一行是 find --set-root --active command +1 没有指明find的对象直接引导扇区,可能因此出错。
回复

使用道具 举报

6#
发表于 2019-7-5 17:39:34 | 只看该作者
本帖最后由 liuzhaoyzz 于 2019-7-5 17:41 编辑

     原来的wee的菜单, find --set-root --active command +1 这一条本意是查找活动分区并启动,但我感觉确实欠考虑,在一些情况下确实会出错。至少不是很健壮,还是自己写菜单好。   

点评

wee 后来有一次更新,就是更新菜单。代码没有更新。 我印象中,BootICE 里面的 wee 代码是最新的,但菜单不是最新的。 最后更新 wee 菜单的那个讨论,也是在本论坛上进行的。 最后敲定的那个 wee 菜单,应  详情 回复 发表于 2019-7-5 17:54
回复

使用道具 举报

7#
发表于 2019-7-5 17:54:45 | 只看该作者
liuzhaoyzz 发表于 2019-7-5 17:39
原来的wee的菜单, find --set-root --active command +1 这一条本意是查找活动分区并启动,但我感觉 ...

wee 后来有一次更新,就是更新菜单。代码没有更新。

我印象中,BootICE 里面的 wee 代码是最新的,但菜单不是最新的。

最后更新 wee 菜单的那个讨论,也是在本论坛上进行的。

最后敲定的那个 wee 菜单,应该比较完善,没有太多毛病了。但是仍有改进、完善、锤炼的余地。

点评

关于wee菜单的讨论,在Sysof时空论坛有,不过论坛已经挂了。我贴出来。 http://bbs.znpc.net/forum.php?mod=viewthread&tid=6063&extra=page%3D1 讨论一下什么样的 menu.wee 最合理。 目前,chenall 发  详情 回复 发表于 2019-7-8 08:21
回复

使用道具 举报

8#
发表于 2019-7-5 18:11:15 | 只看该作者
起初 wee 占用 63 扇区。后来发现,ghost(或某个别的软件)会写入末尾的那个扇区,毁掉了 wee 的一部分代码和菜单,造成 wee 的死机。

为了避免冲突,wee 的代码进行了精简。目前 wee 的代码和菜单,共占据 62 扇区。末尾的那个扇区,就留给 ghost(或某个别的软件)使用了。

如果用户修改了 wee 菜单,菜单太大的话,也可能会达到 63 扇区。那么,你得明白,位于末尾的那个扇区上的菜单,可能会被别的软件覆盖掉。

但 wee 的代码,经过精简以后,是控制在 62 个扇区以内的。加上随 wee 一起发布的那个菜单,两者合在一起,总共也控制在 62 个扇区以内。所以,即使被 ghost 毁掉末尾的扇区,wee 的代码也是安全的,不会死机了。

点评

大师研究透彻6666666666  发表于 2019-10-25 07:28
回复

使用道具 举报

9#
发表于 2019-7-8 08:21:52 | 只看该作者
不点 发表于 2019-7-5 17:54
wee 后来有一次更新,就是更新菜单。代码没有更新。

我印象中,BootICE 里面的 wee 代码是最新的,但 ...

        关于wee菜单的讨论,在Sysof时空论坛有,不过论坛已经挂了。我贴出来。
http://bbs.znpc.net/forum.php?mo ... &extra=page%3D1
讨论一下什么样的 menu.wee 最合理。

目前,chenall 发布的 weesetup 中的默认菜单是这样的:
复制内容到剪贴板
代码:
find --set-root /boot/grub/grldr
/boot/grub/grldr
timeout 1
default 0
title 1.GRUB4DOS
find --set-root /BOOT/GRUB/GRLDR
/BOOT/GRUB/GRLDR
find --set-root /BOOT/GRLDR
/BOOT/GRLDR
find --set-root /BOOT/GRUB.EXE
/BOOT/GRUB.EXE
find --set-root /grldr
/grldr

title 2.Windows
chainloader (hd0)1+1
find --set-root /bootmgr
/bootmgr
find --set-root /ntldr
/ntldr

title 3.Plop Boot Manager
find --set-root /BOOT/GRUB/PLPBT.BIN
/BOOT/GRUB/PLPBT.BIN

title 4.Vboot
find --set-root /vbootldr
/vbootldr

title 5.Burg
find --set-root /buldr
/buldr
大家讨论一下,怎么样才最好。就是说,希望用默认的菜单,即可满足大多数人的日常需要,无须更改了。

首先,我发现了 default 指向 grub4dos。这不适合大多数人。理由是,绝大多数人日常启动的是 Windows。所以,默认的项目应该是 Windows。

Windows 失败的时候,才会用到 grub4dos。

其次,对于 grub4dos 来说,应该首先搜索 grub.exe,然后才是 grldr。理由是,grldr 常被改名,有些文件虽然也叫做 grldr,但它却可能是别的某个软件。而 grub.exe 这个名字很少被别的软件使用。所以,搜索 grub.exe 更可靠。但也有一个问题:grub.exe 是 Linux 内核格式,它启动的时候,不像 grldr 那样有着“当前分区”的概念,所以,找相应的 menu.lst 是不行的,只好把 menu.lst 内置。不过,如果 wee 能够特别对待 grub.exe ,应该也能传递当前分区号。这在下一个 wee 版本中解决吧。

还有一个小小的问题,title 上的 1,2,3,4,5 序号,与第一个英文字母之间应该有一个空格,这样看着更舒服一些。

大家接着讨论还有什么别的问题,以及相应的改进措施。
我的WEE菜单是下面这样的,以WIN7为默认启动项,毕竟日常主要是用WIN系统。另外,我发觉WEE菜单可以忽略计算只有 title 一行而没有其他命令的,只显示不计算菜单项,这点很好;但是在GRUB4DOS中,则没有那么人性化,希望下次能够修改成一样——比如下面的菜单中,WEE里 default 2 可以正确指向title *     2. Find and boot Windows 7/Vista         *,而G4D会指向title *     0. Boot 1st Hard Ddisk                   *,如果菜单编了数字标号并按数字选择菜单的话,会乱。

default 2
timeout 3
title ************* Xianglang's Wee Menu *************
title *                                              *
title *     0. Boot 1st Hard Ddisk                   *
root (hd0,0)
+1
root (hd0,1)
+1
root (hd0,2)
+1
root (hd0,3)
+1
title *     1. Find and boot GRUB4DOS                *
find --set-root /GRLDR
/GRLDR
find --set-root /GRUB/GRLDR
/GRUB/GRLDR
find --set-root /BOOT/GRLDR
/BOOT/GRLDR
find --set-root /BOOT/GRUB/GRLDR
/BOOT/GRUB/GRLDR
find --set-root /GRUB/GRUB.EXE
/GRUB/GRUB.EXE
find --set-root /BOOT/GRUB.EXE
/BOOT/GRUB.EXE
find --set-root /BOOT/GRUB/GRUB.EXE
/BOOT/GRUB/GRUB.EXE
title *     2. Find and boot Windows 7/Vista         *
find --set-root /GRUB/SLIC
/GRUB/SLIC /GRUB/OEM.BIN
find --set-root /BOOTMGR
/BOOTMGR
title *     3. Find and boot Windows 2003/XP         *
find --set-root /NTLDR
/NTLDR
title *                                              *
title ********* http://xianglang.blog.163.com ********
发现我的菜单有一个错误。。。
title 2.Windows
chainloader (hd0)1+1

另外,我说一下我的WEE菜单作用。
1.如果没有任何按键的情况下,首先查找并直接启动/boot/grub/grldr(尽快让GRUB4DOS接管控制)
2.有按键(启动时能守寡快速按c键进入WEE命令行)就有可能进入WEE的菜单项选择启动。
3.WEE只是作为一个辅助的启动工具,一般人不需要理会它的菜单,除非有必要。

至于默认启动WINDOWS可以由GRUB4DOS来控制,必竟修改GRUB4DOS的菜单文件很方便。

我在GRUB4DOS接管控制之后再通过PRELOAD.BAT来控制启动项目,默认直接启动备份的MBR或第一个激活的主分区。

可以在指定时间内通过按不同的热键来实现不同的操作。

比如我自己用的设定。
按F9进入QGHO快速备份还原。
按F10进入MODBOOT,等等。
通过在启动时按不同的热键进入不同的系统。

并且通过PRELOAD.BAT,我们可以在WINDOWS或其它系统中通过修改PRELOAD.BAT控制下一次启动时默认的启动操作

比如,还是以QGHO为例。
通过PRELOAD.BAT
可以让系统在下一次重启时自动进入QGHO进行备份或还原操作(一次性的,再下一次启动时恢复默认)。

这样子我觉得比默认直接启动WINDOWS系统方便多了,启动初期我们可以全程控制。
缺省菜单是不是改为:

find --set-root /boot/grldr
/boot/grldr
timeout 1
default 1
title 1. GRUB4DOS
find --set-root /BOOT/GRUB/GRLDR
/BOOT/GRUB/GRLDR
find --set-root /BOOT/GRLDR
/BOOT/GRLDR
find --set-root /BOOT/GRUB.EXE
/BOOT/GRUB.EXE
find --set-root /grldr
/grldr

title 2. Windows
find --set-root /bootmgr
/bootmgr
find --set-root /ntldr
/ntldr
3月4日上载的 grub4dos 和 wee 版本,开始支持在启动 Linux kernel ----- grub.exe 的时候,把当前 grub4dos 的 root 设备传递给 grub.exe 作为它的默认 boot 设备。

我没有测试,但如果一切正常的话,grub4dos 的 kernel 命令以及 wee 下启动 grub.exe,都会把当前 root 设备传递给 grub.exe 作为 grub.exe 的启动设备。

例如,wee 之下执行 grub.exe,那么,grub.exe 接管控制后,会把原先的 wee 环境中的 root 设备当作 grub.exe 的启动设备。因此,在没有其他命令行参数的情况下,grub.exe 启动之后会在启动设备(也就是在 grub.exe 启动之前的 wee 的 root 设备)的根目录("/")之下寻找 menu.lst 文件。

需要说明的是,grub4dos下实际执行传递的时机是在 boot 命令执行时。因此,传递给 grub.exe 的启动设备,实际上是在 boot 命令之前最后设置的当前 root 设备。

补充:以上讨论当然只是在未修改 grub.exe 的预置菜单的情况下成立。如果用户已经定制了(即改动了)预置菜单,当然 grub.exe 就不一定会寻找根目录下的 menu.lst 文件了。
引用:
原帖由 xianglang 于 2011-3-1 01:26 发表
我发觉WEE菜单可以忽略计算只有 title 一行而没有其他命令的,只显示不计算菜单项,这点很好;但是在GRUB4DOS中,则没有那么人性化,希望下次能够修改成一样。
以前 Roy 也提出过这个建议,但我当时给出了否定的回答。

现在想来,也许有改进的余地。多个连续的 title 行,在 grub legacy 中的处理,是完全删除掉了其他的,只保留其中最后一项。因此,实际上没人会设置多余的 title 行。如果我们重新对待多余的 title 行,让它能够显示出来,这应该也不会造成太大的兼容性问题。

然而 grub4dos 已经有现成的显示“非执行性”菜单项的方案,所以,这个问题又不存在了。用户只需要在那些不希望执行的 title 之后插入一条 clear 之类的命令便可。这样做,与原先的 grub legacy 是 100% 兼容的。这样做的缺点是,“非执行性”的title也占用了一个title的项目,被计算在总的title数目之中。如果执意认定这是一个毛病,那也确实无可辩驳。所以,要想改进的话,也确实是可以做的。只是我个人觉得,这不会带来太大的好处,相反,弄不好再制造出点新的什么问题,影响了软件的稳定性,那就不值得了。

grub4dos 是 grub4dos,wee 是 wee,两者可以不同,互相不影响。各自都有自己的一套法则。
说一下我的一些分析和理解。

在大量的普通使用环境下,系统中总是有个 NTLDR 或者 BOOTMGR 的。无论是 GHOST 前,还是 GHOST 后,都有这么一个 NTLDR(BOOTMGR)。因此,启动微软的引导软件,基本上是有保障总是成功的。

而启动 grub4dos,则不一定总是成功。当然了,如果在 GHOST 之前事先把 GRUB4DOS 的文件放在 D: 盘,也是总能成功。然而,grub4dos 启动成功之后,主要还是为了启动微软的系统。因此,从 Wee 拐弯经由 grub4dos 来启动 Windows,似乎还是有点迟滞,虽然只是一眨眼的工夫。

更进一步分析,如果考虑到有些用户不明白 D: 盘之下的 grub4dos 文件都有什么用处,因而他可能会想当然地删掉 grub4dos 的文件,甚至也有可能把 C: 盘上的 grub4dos 也删掉,结果,wee 默认启动 grub4dos 就要失败了。而那些用户可能连简单的紧急应对措施都没有,这样实际上就给这些用户带来了麻烦。实际上,我们经常发现用户删掉启动文件(包括 NTLDR 和 BOOTMGR)造成启动失败,这原因是他们的系统被病毒折磨得厉害,他们企图手动“删除”病毒,胡乱折腾(有病乱投医),就把系统搞死了。如果他们看到grub4dos 的文件,他们更可能怀疑这是病毒,因为他们不了解这些文件有什么用处。在普通人的眼里,grub4dos 的地位,一定比 Windows 低,这点还是得承认的。

开发人员应该尽可能考虑周全,尽量避免给用户带来任何可能的不舒服的体验。

NTLDR 和 BOOTMGR 毕竟是微软的东西,熟悉它们的人是大量的,我们姑且假定没有人去删除微软的文件。

因此,综合考虑,我个人还是感觉让 wee 默认启动 Windows 较好。
新的版本准备改成如下默认菜单
1、首先尝试启动/boot/grub/grldr。
2、失败了就直接启动默认的WINDOWS菜单。

现在的问题是:
1.有没有必要显示WEE的菜单?
2.windows菜单
  ntldr优先还是bootmgr优先?
  还是备份的MBR优先。
按下面的WINDOWS菜单我觉得应该可行,不知还有没有其它情况。。

find --set-root /boot/grub/grldr
/boot/grub/grldr
timeout 0
default 0

title 1. Windows
find --set-root /bootmgr
/bootmgr
find --set-root /ntldr
/ntldr
(hd0)1+1

title 2. GRUB4DOS
find --set-root /BOOT/GRUB/GRLDR
/BOOT/GRUB/GRLDR
find --set-root /BOOT/GRUB.EXE
/BOOT/GRUB.EXE
find --set-root /BOOT/GRLDR
/BOOT/GRLDR
find --set-root /grldr
/grldr

title 3. Plop Boot Manager
find --set-root /BOOT/GRUB/PLPBT.BIN
/BOOT/GRUB/PLPBT.BIN

title 4. Vboot
find --set-root /vbootldr
/vbootldr

title 5. Burg
find --set-root /buldr
/buldr

想了想,觉得优先启动备份的MBR也许会比较好(但也有可能会因为备份的MBR是错误的,造成启动失败)。
wee有没有办法不通过MBR来启动第一个激活的分区?这样也许比较好。
grub4dos可以通过makeactive --status来确定。

我觉得应该是BOOTMGR优先,因为BOOTMGR是未来的趋势,况且BOOTMGR也可以认出BOOT.INI里面的启动项进而可以去启动2003/XP。我又修改了下自己的WEE菜单如下,默认还是WIN7优先,有菜单等1-3秒,可以方便正常启动和维护时要进入G4D——我觉得自己的菜单还是比较适合最广泛的使用和维护要求的:

default 1
timeout 3
title ************* Xianglang's Wee Menu *************
title *                                              *
title *     0. Find and boot GRUB4DOS                *
find --set-root /GRLDR
/GRLDR
find --set-root /GRUB/GRLDR
/GRUB/GRLDR
find --set-root /BOOT/GRLDR
/BOOT/GRLDR
find --set-root /BOOT/GRUB/GRLDR
/BOOT/GRUB/GRLDR
find --set-root /GRUB/GRUB.EXE
/GRUB/GRUB.EXE
find --set-root /BOOT/GRUB.EXE
/BOOT/GRUB.EXE
find --set-root /BOOT/GRUB/GRUB.EXE
/BOOT/GRUB/GRUB.EXE
title *     1. Find and boot Windows 7/Vista/2003/XP *
find --set-root /BOOTMGR
/BOOTMGR
find --set-root /NTLDR
/NTLDR
title *     2. Boot 1st Hard Disk                    *
root (hd0,0)
+1
root (hd0,1)
+1
root (hd0,2)
+1
root (hd0,3)
+1
title *                                              *
title ********* http://xianglang.blog.163.com ********
关于启动的顺序,这个改进比较合理。

timeout 为 0 ,似乎 wee 目前的处理是直接跳过键盘,这样就不能事先敲入箭头键来选择菜单了。

个人感觉,似乎 timeout 为 1 给一个选择的机会比较好。

一秒种的菜单显示,也提醒用户有菜单存在,可以有机会选择启动。否则,如果完全没有菜单,用户可能根本意识不到有菜单存在,也就不会想到失败的时候有挽救的方法了。

如果 /boot/grub/grldr 存在,则根本不会等待,直接执行 grldr 了。所以,设置 timeout 为 1 没有什么坏处。

关于 bootmgr 优先还是 ntldr 优先的问题,我觉得大家还可以讨论。

我曾经遇到一例,用户的 win7 出现故障无法使用了。但用户说这个 win7 是正版的,不能删去,所以,分区还得保留。用户已经完全使用 XP 了,win7 实际上永远也不会进入了。但 bootmgr 仍然存在。如果 bootmgr 接管控制,它并不能正常引导 XP,因为它里面的 XP 的设置没弄好。在这种情况下,进入 bootmgr 就等于进入了死胡同。只有进入 ntldr 才能启动 XP。当然了,高手可以通过设置 bootmgr 的配置文件来成功启动 XP,但有许多人不愿意掌握这个技术,认为很复杂。

http://bbs.znpc.net/forum.php?mo ... muid=12697#pid47350
正常情况下使用我前面的菜单启动WINDOWS是没有什么问题。

但是也有特殊情况。比如多系统多个主分区时。会导致问题。

所以能不能修改一下WEE的find命令,加一个参数,让它可以查找活动分区。这样就可以适应所有的情况了
直接用FIND定位活动分区,然后加载该分区的引导扇区。不管它是BOOTMGR/NTLDR都没有什么影响。
这个应该不难,我一会看一下。

试了一下比较容易。
不过这个参数要如何命名呢?先用--actived,不点看一下怎么样比较好。
复制内容到剪贴板
代码:
Index: builtins.c
===================================================================
--- builtins.c        (revision 57)
+++ builtins.c        (working copy)
@@ -1468,6 +1468,7 @@
//  unsigned long ignore_cd = 0;
   unsigned long ignore_floppies = 0;
   unsigned long ignore_oem = 0;
+  unsigned long actived = 0;
   //char *in_drives = NULL;        /* search in drive list */
   char root_found[16];
   
@@ -1495,6 +1496,10 @@
       {
        ignore_oem = 1;
       }
+      else if (grub_memcmp(arg,"--actived", 9) == 0)
+      {
+              actived = 1;
+      }
     else
        break;
     arg = skip_to (arg);
@@ -1576,6 +1581,10 @@
                next_partition_buf                = mbr,
                next_partition ())) */
        {
+          if (actived && pi.boot_indicator != 0x80)
+          {
+                  continue;
+          }
          type = pi.part_type;
          if (type != PC_SLICE_TYPE_NONE
                  && ! (ignore_oem == 1 && (type & ~PC_SLICE_TYPE_HIDDEN_FLAG) == 0x02)
                  行啊,这个问题没什么要紧的。对于 wee 来说,空间的节约比较紧迫。而名称什么的,都靠边站了,不太重要。

不过,active 本身就是形容词,而actived 好像不是一个正确的单词。所以,还是用 active 比较好。

另外,在 --active 的时候,要求有 0x80 引导指示符,所以,扩展分区中的逻辑分区,就可以跳过了。只需查找主分区。
引用:
原帖由 不点 于 2011-3-5 18:15 发表
行啊,这个问题没什么要紧的。对于 wee 来说,空间的节约比较紧迫。而名称什么的,都靠边站了,不太重要。

不过,active 本身就是形容词,而actived 好像不是一个正确的单词。所以,还是用 active 比较好。

另外,在 --active 的时候 ...
嗯.
另外看了新版
          if (active && (pi.part_num > 3 || pi.boot_indicator != 0x80))
                continue;
我觉得改成如下会好一些
if (active)
{
  if (pi.part_num > 3)
      break;
  else if (pi.boot_indicator != 0x80)
      continue;
}

贴个目前wee默认的菜单。wee-2011-06-27
find --set-root /boot/grub/grldr /boot/grub/grldr
timeout 1
default 0

title 1. Windows
find --set-root --active command +1
find --set-root /bootmgr /bootmgr
find --set-root /ntldr /ntldr

title 2. Grub4dos
find --set-root /boot/grub/grldr /boot/grub/grldr
find --set-root /boot/grub.exe /boot/grub.exe
find --set-root /boot/grldr /boot/grldr
find --set-root /grub.exe /grub.exe
find --set-root /grldr /grldr

title 3. Plop Boot Manager
find --set-root /boot/grub/plpbt.bin /boot/grub/plpbt.bin

title 4. Vboot
find --set-root /vbootldr /vbootldr

title 5. Burg
find --set-root /buldr /buldr

点评

您真细心,居然收藏 sysoft 的旧文章。 最新的 wee 菜单,是 2015 年 7 月在“无忧启动论坛”讨论的: menu.wee 的一点微调,chenall 留意一下 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=369968  详情 回复 发表于 2019-7-8 09:36
回复

使用道具 举报

10#
发表于 2019-7-8 09:36:43 | 只看该作者
liuzhaoyzz 发表于 2019-7-8 08:21
关于wee菜单的讨论,在Sysof时空论坛有,不过论坛已经挂了。我贴出来。
http://bbs.znpc.net/fo ...

您真细心,居然收藏 sysoft 的旧文章。

最新的 wee 菜单,是 2015 年 7 月在“无忧启动论坛”讨论的:

menu.wee 的一点微调,chenall 留意一下
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=369968

chenall 网站上 wee 的菜单是这个:
https://github.com/chenall/grubutils/blob/master/grubutils/wee/preset_menu_used


  1. find --set-root /boot/grub/grldr
  2. /boot/grub/grldr
  3. timeout 1
  4. default 0

  5. title 1. DOS/Windows
  6.     find --set-root --active /boot/BCD /bootmgr
  7.     find --set-root --active /boot.ini /ntldr
  8.     find --set-root --active /command.com /io.sys
  9.     find --set-root --active /command.com /kernel.sys
  10.     find --set-root /boot/BCD /bootmgr
  11.     find --set-root /boot.ini /ntldr
  12.     find --set-root /command.com /io.sys
  13.     find --set-root /command.com /kernel.sys

  14. title 2. GRUB4DOS
  15.     find --set-root /boot/grub/grldr /boot/grub/grldr
  16.     find --set-root /boot/grub.exe /boot/grub.exe
  17.     find --set-root /boot/grldr /boot/grldr
  18.     find --set-root /grldr /grldr

  19. title 3. Plop Boot Manager
  20.     find --set-root /boot/grub/plpbt.bin /boot/grub/plpbt.bin

  21. title 4. Vboot
  22.     find --set-root /vbootldr /vbootldr

  23. title 5. Burg
  24.     find --set-root /buldr /buldr

  25. title 6. Previous MBR
  26.     (hd0)1+1

  27. title 7. Command Line
  28.     exit
复制代码



大家如果还能改进菜单,请在原帖《menu.wee 的一点微调,chenall 留意一下》里面接着讨论,不要在这里讨论。
回复

使用道具 举报

11#
发表于 2019-7-8 09:46:16 | 只看该作者
        grub4dos有很多知识点,一不小心就忘了,刚开始学习grub4dos使用的时候,论坛知识太多了不好查找,于是我就把一些知识点拷贝粘贴到txt文件中备用,没想到Sysoft时空论坛挂了,这些txt还保存了下来,就这样子。
回复

使用道具 举报

12#
发表于 2019-7-18 15:33:31 | 只看该作者
另外,我发觉WEE菜单可以忽略计算只有 title 一行而没有其他命令的,只显示不计算菜单项,这点很好;但是在GRUB4DOS中,则没有那么人性化,希望下次能够修改成一样

现在的版本已经是这样了。
我随便抽查了一个 grub4dos-0.4.5c-2017-3-31,也已经是这样了。
回复

使用道具 举报

13#
发表于 2019-7-18 17:20:43 | 只看该作者
    我贴的帖子是好多年前不点讨论wee菜单的帖子,现在的grub4dos应该已经修改过了。   
回复

使用道具 举报

14#
发表于 2019-10-25 07:24:25 | 只看该作者
附件wee默认引导grldr (grub4dos). 找不到grldr就引导bootmgr,bootmgr也找不到就引导ntldr,ntldr再找不到就进入wee命令行。

那不就通用绝大多数的引导了吗??!!!是不是啊大大

点评

是的。 视乎你的硬盘可能安装的系统,你可以添加可能的引导 附上chenall的默认菜单 find --set-root /boot/grub/grldr /boot/grub/grldr timeout 1 default 0 title 1. DOS/Windows find --set-root  详情 回复 发表于 2019-10-25 07:43
回复

使用道具 举报

15#
 楼主| 发表于 2019-10-25 07:43:47 | 只看该作者
879792799 发表于 2019-10-25 07:24
附件wee默认引导grldr (grub4dos). 找不到grldr就引导bootmgr,bootmgr也找不到就引导ntldr,ntldr再找不到 ...

是的。
视乎你的硬盘可能安装的系统,你可以添加可能的引导

附上chenall的默认菜单
find --set-root /boot/grub/grldr
/boot/grub/grldr
timeout 1
default 0

title 1. DOS/Windows
    find --set-root --active /boot/BCD /bootmgr
    find --set-root --active /boot.ini /ntldr
    find --set-root --active /command.com /io.sys
    find --set-root --active /command.com /kernel.sys
    find --set-root /boot/BCD /bootmgr
    find --set-root /boot.ini /ntldr
    find --set-root /command.com /io.sys
    find --set-root /command.com /kernel.sys

title 2. GRUB4DOS
    find --set-root /boot/grub/grldr /boot/grub/grldr
    find --set-root /boot/grub.exe /boot/grub.exe
    find --set-root /boot/grldr /boot/grldr
    find --set-root /grldr /grldr

title 3. Plop Boot Manager
    find --set-root /boot/grub/plpbt.bin /boot/grub/plpbt.bin

title 4. Vboot
    find --set-root /vbootldr /vbootldr

title 5. Burg
    find --set-root /buldr /buldr

title 6. Previous MBR
    (hd0)1+1

title 7. Command Line
    exit

你可以使用其中的引导语句来设置自己硬盘的引导功能。例如:
find --set-root /grldr /grldr
find --set-root --active /boot/BCD /bootmgr
find --set-root --active /boot.ini /ntldr
find --set-root /boot/grub/grldr /boot/grub/grldr
find --set-root /boot/grub.exe /boot/grub.exe
find --set-root /boot/grldr /boot/grldr
find --set-root --active /command.com /io.sys
find --set-root --active /command.com /kernel.sys
find --set-root /boot/BCD /bootmgr
find --set-root /boot.ini /ntldr
find --set-root /command.com /io.sys
find --set-root /command.com /kernel.sys
find --set-root /boot/grub/plpbt.bin /boot/grub/plpbt.bin
find --set-root /vbootldr /vbootldr
find --set-root /buldr /buldr
(hd0)1+1
exit

以上,wee会逐项尝试直至启动成功,如果最后都不成功就会进入wee命令行。

如果想显示wee菜单,也可以直接使用chenall的默认菜单修改成自己的。

wee是我所知道的bios平台下最强大的硬盘主引导

点评

这个真的好 谢谢大大指点!  详情 回复 发表于 2019-10-25 09:48
回复

使用道具 举报

16#
发表于 2019-10-25 09:48:43 | 只看该作者
hilsonma 发表于 2019-10-25 07:43
是的。
视乎你的硬盘可能安装的系统,你可以添加可能的引导

这个真的好 谢谢大大指点!
回复

使用道具 举报

17#
 楼主| 发表于 2019-10-29 13:32:17 | 只看该作者
本帖最后由 hilsonma 于 2019-11-8 22:37 编辑

20191029更新:
安装程序改用weesetup.exe http://bbs.wuyou.net/forum.php?m ... p;extra=&page=2  (在18楼)
wee63.mbr使用 求道者 编译的版本 http://bbs.wuyou.net/forum.php?m ... page%3D1&page=3 (在28楼)
回复

使用道具 举报

18#
发表于 2019-10-31 20:47:58 | 只看该作者
本帖最后由 liaoyin 于 2019-10-31 20:50 编辑

title *     2. Find and boot Windows 7/Vista         * find --set-root /GRUB/SLIC /GRUB/SLIC /GRUB/OEM.BIN find --set-root /BOOTMGR /BOOTMGR
楼主:请问这一段是用oem.bin软激活Win7吗?

点评

我不知道,这是别人的菜单。 如果你有oem.bin,你想用,你可以自己亲自试一试,wee不行再用grldr试,都不行就别用,改用其他办法。 我现在不用win7,以前我用win7的时候是用chew-wga激活的,同时支持bios 和 uef  详情 回复 发表于 2019-11-1 01:25
回复

使用道具 举报

19#
 楼主| 发表于 2019-11-1 01:25:50 | 只看该作者
本帖最后由 hilsonma 于 2019-11-1 01:48 编辑
liaoyin 发表于 2019-10-31 20:47
title *     2. Find and boot Windows 7/Vista         * find --set-root /GRUB/SLIC /GRUB/SLIC /GRUB/O ...


我不知道,这是别人的菜单。
如果你有oem.bin,你想用,你可以自己亲自试一试,wee不行再用grldr试,都不行就别用,改用其他办法。

我现在不用win7,以前我用win7的时候是用chew-wga激活的,同时支持bios 和 uefi.

wee菜单我现在只用三行就够了,假如不够就参考官方菜单
find --set-root /grldr /grldr
find --set-root /bootmgr /bootmgr
exit

grldr引导windows我这样
title Windows
    find --set-root --devices=h /bootmgr
    map () (hd0)
    map (hd0) ()
    map --rehook
    find --set-root --devices=h /bootmgr
    chainloader /bootmgr

其实引导windows只要最后两句就行了,加上3条map语句是因为我这菜单是通用到u盘上的,这u盘用来维护电脑的时候,有可能windows分区不识别为hd0,这时就要用到这3条map语句。

点评

谢谢!我明白了。  详情 回复 发表于 2019-11-1 18:31
回复

使用道具 举报

20#
发表于 2019-11-1 18:31:05 | 只看该作者
hilsonma 发表于 2019-11-1 01:25
我不知道,这是别人的菜单。
如果你有oem.bin,你想用,你可以自己亲自试一试,wee不行再用grldr试, ...

谢谢!我明白了。
回复

使用道具 举报

21#
发表于 2019-11-1 18:37:10 | 只看该作者
谢谢分享
回复

使用道具 举报

22#
发表于 2021-4-12 08:56:21 | 只看该作者
下载附件要什么权限呀,wee都开源,没想到卡在论坛这儿了,就好比厂家给的优惠挺好的,没想到被二道贩子捞了一把
回复

使用道具 举报

23#
发表于 2021-4-12 08:58:23 | 只看该作者
下载附件要什么权限呀?wee都开源,没想到卡在这儿了,就好比厂家给的优惠挺好,没想到被二道贩子捞了一把
回复

使用道具 举报

24#
发表于 2021-4-12 18:54:40 | 只看该作者
楼上的朋友,wee 和论坛没关系。论坛上的附件,需要一定的会员权限才能下载。但开源的 wee,是在项目空间上,你可以随便找到并自由下载。

这个论坛,我感觉还比较满意。没有“弹窗注册”、“故意遮挡网页内容”之类乱七八糟的骚扰。
回复

使用道具 举报

25#
发表于 2021-5-11 14:28:40 | 只看该作者
(hd0,1)+1
我的wee菜单
办公基本在(hd0,1)的linux系统上,需要使用(hd0,0)上的windows时手动切换;
回复

使用道具 举报

26#
发表于 2023-2-19 17:32:07 | 只看该作者
固态硬盘MBR分区,安装了win7 U版系统,默认能OEM激活。但安装了贵WEE修复引导后,就无法激活了。要从哪个文件入手修改呢?

点评

看到启动盘(系统盘)C盘下有一个NVBUL的文件,大小406.1KB,使用BOOTICEx64.exe 修改grldr 的内置菜单修改为如下: graphicsmode -1 640 480 24:32 || graphicsmode -1 -1 -1 24:32 default 0 timeout 1 fallba  详情 回复 发表于 2023-2-20 16:55
回复

使用道具 举报

27#
发表于 2023-2-20 16:55:22 | 只看该作者
adslceo 发表于 2023-2-19 17:32
固态硬盘MBR分区,安装了win7 U版系统,默认能OEM激活。但安装了贵WEE修复引导后,就无法激活了。要从哪个 ...

看到启动盘(系统盘)C盘下有一个NVBUL的文件,大小406.1KB,使用BOOTICEx64.exe 修改grldr 的内置菜单修改为如下,与原来一样激活了:
graphicsmode -1 640 480 24:32 || graphicsmode -1 -1 -1 24:32
default 0
timeout 1
fallback 2
title Windows
find --set-root /NVBUL
chainloader /NVBUL
title WinPE
    command SISO boot.wim="/pe/pe.wim"
title File menu
    command SISO RUN=--loadfont --automenu-all /pe/
title reboot
    reboot
title halt
    halt
回复

使用道具 举报

28#
发表于 2023-4-19 10:44:04 | 只看该作者
看一些评论很有启发
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 04:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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