无忧启动论坛

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

[求助] 问些wee菜单很怪的问题。

    [复制链接]
跳转到指定楼层
1#
发表于 2019-10-24 21:39:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 求道者 于 2019-10-24 21:44 编辑

今天我打算调试PE
然后在虚拟机两个虚拟机里创建了共享的虚拟磁盘
因为要引导bootmgr而且位置不在根目录
所以用了wee
怪事就发生了
这是wee菜单
只有两行
  1. find --set-root /boot/bootmgr
  2. /boot/bootmgr
复制代码

用BOOTICE安装
结果

这是什么鬼东西?
于是找了别的安装程序
chenall写的grub4dos批处理
http://chenall.net/post/grub4dos_instwee/
我还改了 不改用不了
18行的这个
  1. (hd%2)+1,0x1b0
复制代码
删了
  1. ,0x1b0
复制代码
改后能用……

但也一样,不能正常引导

下意识看了一下hex
发现7830位置成这样了


这也……
难道
我改成

保存
重启虚拟机
能用了……
………………
所以wee的配置文件到底是在从哪个地址开始的?
7840?
还是有什么标记字符?

还有就是grub4dos_instwee为何不能用?
grub4dos批处理又大改了吗?
2#
发表于 2019-10-25 05:00:35 | 只看该作者
本帖最后由 hilsonma 于 2019-10-25 06:04 编辑

用bootice v1.3.3.2版本安装wee63.mbr,将默认菜单修改一下就可以了。

使用bootice v1.3.4 (x86)版本安装wee就会出现类似楼主所讲的问题。
这个问题只要用bootice v1.3.3.2版本修改wee菜单就可以解决。
在wee命令行下输入正确的菜单命令也可以启动。

例如:find --set-root /boot/bootmgr /boot/bootmgr
只要存在 \boot\bootmgr 就可以引导 \boot\bootmgr
然后bootmgr会使用\boot\bcd配置启动
只要存在\boot\bcd 且bcd设置正确就可以成功启动。

使用bootice v1.3.3.2内置的wee63.mbr (2013-08-28) 则wee菜单从7830开始
使用wee63.mbr (2016-01-30) 则wee菜单从7850开始
而楼主的图应是从7850开始的,所以前图 -sefind ...... 出错,后图 find ...... 正确。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 专家啊 厉害

查看全部评分

回复

使用道具 举报

3#
发表于 2019-10-25 14:28:19 | 只看该作者
hilsonma 说得对。bootice 的某个版本(1.3.4) 好像有问题。用之前的版本(1.3.3.2)似乎正常。

bootice 的有问题的版本,似乎计算错了菜单的开始位置,导致启动失常。

不过,也有 workaround:

把菜单最开头的一句,重复写 2 遍,或写 3 遍,可能就躲过 bootice 的 bug 了。


回复

使用道具 举报

4#
发表于 2019-10-25 15:12:13 | 只看该作者
使用chenall的weesetup (2013-09-25)的话,如果带-w参数使用外部 wee63.mbr (2016-01-30) 也会产生楼主所说的问题,如果使用weesetup内部自带wee63.mbr则没有问题。

点评

这么说来,有可能这是根本原因。猜测,假如 BOOTICE 的内部采用的是 weesetup ,那么,两者可能出现同样的毛病。  详情 回复 发表于 2019-10-25 15:30
回复

使用道具 举报

5#
发表于 2019-10-25 15:30:41 | 只看该作者
hilsonma 发表于 2019-10-25 15:12
使用chenall的weesetup (2013-09-25)的话,如果带-w参数使用外部 wee63.mbr (2016-01-30) 也会产生楼主所说 ...

这么说来,有可能这是根本原因。猜测,假如 BOOTICE 的内部采用的是 weesetup ,那么,两者可能出现同样的毛病。
回复

使用道具 举报

6#
发表于 2019-10-25 16:59:12 | 只看该作者
本帖最后由 hilsonma 于 2019-10-25 17:00 编辑

建议使用bootice v1.3.3.2 来安装其内置的wee63.mbr (2013-08-28) 到硬盘mbr.
并修改其内置的菜单为适合自己的内容。

起码其中这句 find --set-root --active command +1 要改掉。

因为此句有歧义
歧义一:
find --set-root --active
command +1
歧义二:
find --set-root --active command
+1
应该原本是要一,结果可能是二,所以可能会出错。

点评

较早的 BOOTICE 版本,其内置的 wee63.mbr 中的程序代码,有可能不是最新的。 大家可以考虑下述方案是否可行: 用最新版的 BOOTICE 1.3.4 来安装,菜单采用默认的,不更动它(这是因为 bootice 有可能把你想定  详情 回复 发表于 2019-10-25 17:37
回复

使用道具 举报

7#
发表于 2019-10-25 17:37:04 | 只看该作者
hilsonma 发表于 2019-10-25 16:59
建议使用bootice v1.3.3.2 来安装其内置的wee63.mbr (2013-08-28) 到硬盘mbr.
并修改其内置的菜单为适合自 ...

较早的 BOOTICE 版本,其内置的 wee63.mbr 中的程序代码,有可能不是最新的。

大家可以考虑下述方案是否可行:

用最新版的 BOOTICE 1.3.4 来安装,菜单采用默认的,不更动它(这是因为 bootice 有可能把你想定制的菜单内容,放在错误的偏移地址处,造成问题)。然后手动用 WinHex 之类的扇区编辑工具来编辑尾部的菜单,编辑成最新的菜单即可,也就是,chenall 网站上的那个 preset_menu_used。

点评

这就很怪了…… 用BOOTICE1.3.4安装 看起来就会多一点字节 我尝试过从7830开始填0 再者说 我当然用过WIMBOOT 但我只是用来提速 还原功能,我当没有 还原之后还是百八十年前的老系统 还要更新 有意思?  详情 回复 发表于 2019-10-25 18:50
回复

使用道具 举报

8#
 楼主| 发表于 2019-10-25 18:50:56 | 只看该作者
本帖最后由 求道者 于 2019-10-25 19:47 编辑
不点 发表于 2019-10-25 17:37
较早的 BOOTICE 版本,其内置的 wee63.mbr 中的程序代码,有可能不是最新的。

大家可以考虑下述方案是 ...

这就很怪了……
用BOOTICE1.3.4安装
看起来就会多一点字节
我尝试过从7830开始填0
然后在7830写入配置
wee似乎就不工作了
但2楼贴出来的图片
似乎表明7810开始就没数据了
清空7830应该没问题啊
果然wee版本变了吗?
最新版本从7850开始写数据?
但BOOTICE1.3.4用默认菜单
似乎是从7840开始写配置
-e似乎是配置开始段的标记


不点你不记得wee这个查找配置是怎么工作的了吗?
用BOOTICE1.3.3写入外部wee(2016-01-31)会得到这个
这应该是正确的吧



chenall还在活动吗?
能修BUG吗?
回复

使用道具 举报

9#
发表于 2019-10-25 20:00:12 | 只看该作者
你用 hex 编辑器打开 wee63.mbr,看看尾部的菜单起始于何处,就全清楚了。

点评

[attachimg]403712[/attachimg] 似乎wee63.mbr菜单以2D 65 20开头和结尾 似乎不用2D 65 20结尾也行 所以这个是标记开始?  详情 回复 发表于 2019-10-25 20:25
回复

使用道具 举报

10#
 楼主| 发表于 2019-10-25 20:25:49 | 只看该作者
本帖最后由 求道者 于 2019-10-25 20:36 编辑
不点 发表于 2019-10-25 20:00
你用 hex 编辑器打开 wee63.mbr,看看尾部的菜单起始于何处,就全清楚了。


似乎wee63.mbr菜单以2D 65 20开头和结尾
似乎不用2D 65 20结尾也行
所以这个是标记开始?

我删了菜单开头的2D 65 20似乎也能启动……
我进一步从7848写入了菜单
然后

从784A开始写菜单就OK

回复

使用道具 举报

11#
发表于 2019-10-25 20:43:20 | 只看该作者
这三个字节应该是个错误,应该删除。前后共有 6 个字节应该删除。

可能是由于编译环境不是 bash 而是其它shell 造成的。

当初发布的 wee63.mbr 应该没有这三个字节的。

点评

是不是其他的地方也有这种垃圾字节? 汇编程序这样不应该……  详情 回复 发表于 2019-10-25 20:44
回复

使用道具 举报

12#
 楼主| 发表于 2019-10-25 20:44:58 | 只看该作者
不点 发表于 2019-10-25 20:43
这三个字节应该是个错误,应该删除。前后共有 6 个字节应该删除。

可能是由于编译环境不是 bash 而是其 ...

是不是其他的地方也有这种垃圾字节?
汇编程序这样不应该……
回复

使用道具 举报

13#
发表于 2019-10-25 20:46:24 | 只看该作者
有没有谁在 Linux 下编译一下看看?

点评

怎么弄? 我make一下试试 不一定有编译环境  详情 回复 发表于 2019-10-25 20:49
回复

使用道具 举报

14#
 楼主| 发表于 2019-10-25 20:49:46 | 只看该作者
本帖最后由 求道者 于 2019-10-25 20:54 编辑
不点 发表于 2019-10-25 20:46
有没有谁在 Linux 下编译一下看看?

怎么弄?
我make一下试试
不一定有编译环境

  1. make
  2. gcc -m32 -mno-sse -g  -c asm.S -o ./asm.o
  3. gcc -m32 -mno-sse -g -Os -fno-stack-protector -fno-builtin -mpreferred-stack-boundary=2 -fno-strict-aliasing -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables -nostdinc -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -Wundef  -c builtins.c -o ./builtins.o
  4. builtins.c: In function ‘map_func’:
  5. builtins.c:1210:8: warning: variable ‘p’ set but not used [-Wunused-but-set-variable]
  6.   char *p;
  7.         ^
  8. In file included from builtins.c:25:
  9. builtins.c: At top level:
  10. shared.h:389:29: warning: inline function ‘log2_tmp’ declared but never defined
  11. extern inline unsigned long log2_tmp (unsigned long word);
  12.                              ^~~~~~~~
  13. gcc -m32 -mno-sse -g -Os -fno-stack-protector -fno-builtin -mpreferred-stack-boundary=2 -fno-strict-aliasing -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables -nostdinc -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -Wundef  -c disk_io.c -o ./disk_io.o
  14. In file included from disk_io.c:23:
  15. shared.h:389:29: warning: inline function ‘log2_tmp’ declared but never defined
  16. extern inline unsigned long log2_tmp (unsigned long word);
  17.                              ^~~~~~~~
  18. gcc -m32 -mno-sse -g -Os -fno-stack-protector -fno-builtin -mpreferred-stack-boundary=2 -fno-strict-aliasing -fomit-frame-pointer -fno-exceptions -fno-asynchronous-unwind-tables -fno-unwind-tables -nostdinc -Wall -Wmissing-prototypes -Wunused -Wshadow -Wpointer-arith -Wundef  -c fsys_ext2fs.c -o ./fsys_ext2fs.o
  19. fsys_ext2fs.c:38:1: error: static declaration of ‘log2_tmp’ follows non-static declaration
  20. log2_tmp (unsigned long word)
  21. ^~~~~~~~
  22. In file included from fsys_ext2fs.c:33:
  23. shared.h:389:29: note: previous declaration of ‘log2_tmp’ was here
  24. extern inline unsigned long log2_tmp (unsigned long word);
  25.                              ^~~~~~~~
  26. shared.h:389:29: warning: inline function ‘log2_tmp’ declared but never defined
  27. make: *** [Makefile:62:fsys_ext2fs.o] 错误 1
复制代码
报错
看起来是GCC版本问题
但README没写用哪个版本……
不点知道吗?
回复

使用道具 举报

15#
发表于 2019-10-25 20:55:02 | 只看该作者
求道者 发表于 2019-10-25 20:44
是不是其他的地方也有这种垃圾字节?
汇编程序这样不应该……

汇编程序不会有这些垃圾字节。

菜单是 shell 处理后附加在尾部的。编译的时候,如果发行版的 shell 不是 bash,就可能出现这个错误。

要强制把 /bin/sh 弄成指向 bash 才行。

点评

Makefile写死了 恐怕不是这样  详情 回复 发表于 2019-10-25 20:56
回复

使用道具 举报

16#
 楼主| 发表于 2019-10-25 20:56:53 | 只看该作者
不点 发表于 2019-10-25 20:55
汇编程序不会有这些垃圾字节。

菜单是 shell 处理后附加在尾部的。编译的时候,如果发行版的 shell 不 ...
  1. SHELL=/bin/bash
  2. SRC_C := builtins.c disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ntfs.c
  3. SRC_S := asm.S wee63start.S
  4. BUILDROOT := .
  5. LDFLAGS :=
复制代码

Makefile写死了
恐怕不是这样
回复

使用道具 举报

17#
发表于 2019-10-25 20:59:47 | 只看该作者
求道者 发表于 2019-10-25 20:49
怎么弄?
我make一下试试
不一定有编译环境

这些错误,你应该可以帮忙排除。你自己写 c 程序,有错了,不是一样需要排除吗?

点评

这不是等于把wee的编译环境迁移到新版的gcc吗?  详情 回复 发表于 2019-10-25 21:08
回复

使用道具 举报

18#
发表于 2019-10-25 21:08:20 | 只看该作者
求道者 发表于 2019-10-25 20:56
Makefile写死了
恐怕不是这样

那应该不会出现垃圾字节。

你给出的编译结果可能比较早,那时还没有添加

SHELL=/bin/bash

点评

[分享] 自己动手,在WINDOWS系统中搭建GRUB4DOS编译环境[2014-06-25] chenall一直是在WINDOWS下编译的? 会出问题不奇怪  详情 回复 发表于 2019-10-25 21:16
回复

使用道具 举报

19#
 楼主| 发表于 2019-10-25 21:08:40 | 只看该作者
本帖最后由 求道者 于 2019-10-25 21:11 编辑
不点 发表于 2019-10-25 20:59
这些错误,你应该可以帮忙排除。你自己写 c 程序,有错了,不是一样需要排除吗?


这不是等于把wee的编译环境迁移到新版的gcc吗?
这工作量有点大
回复

使用道具 举报

20#
 楼主| 发表于 2019-10-25 21:16:35 | 只看该作者
不点 发表于 2019-10-25 21:08
那应该不会出现垃圾字节。

你给出的编译结果可能比较早,那时还没有添加

[分享] 自己动手,在WINDOWS系统中搭建GRUB4DOS编译环境[2014-06-25]
chenall一直是在WINDOWS下编译的?
会出问题不奇怪
回复

使用道具 举报

21#
发表于 2019-10-25 21:18:49 | 只看该作者
工作量应该不大。新版 gcc 检查严格罢了。都是无关紧要的错误。

点评

大概有一处报错 主要是警告 错误:对‘log2_tmp’的静态声明出现在非静态声明之后 说不定能搞好吧 先找个ubuntu的容器部署gcc4.5编译看看  详情 回复 发表于 2019-10-25 21:21
回复

使用道具 举报

22#
 楼主| 发表于 2019-10-25 21:21:45 | 只看该作者
不点 发表于 2019-10-25 21:18
工作量应该不大。新版 gcc 检查严格罢了。都是无关紧要的错误。

大概有一处报错
主要是警告
错误:对‘log2_tmp’的静态声明出现在非静态声明之后
说不定能搞好吧
先找个ubuntu的容器部署gcc4.5编译看看
回复

使用道具 举报

23#
发表于 2019-10-25 21:25:32 | 只看该作者
求道者 发表于 2019-10-25 21:16
[分享] 自己动手,在WINDOWS系统中搭建GRUB4DOS编译环境[2014-06-25]
chenall一直是在WINDOWS下编译的? ...

wee 的编译,不像 grub4dos 那样难。

wee 最好在 Linux 下编译。

点评

应该就是了 估计是编译环境引起的垃圾字节 或者gcc版本的问题…… [attachimg]403726[/attachimg] 这就没有 如果编译的能用 我就上传二进制文件吧  详情 回复 发表于 2019-10-25 21:59
总之出货了 gcc4.8下还是可以编译的 我用的archlinux貌似没有非常旧的gcclib 只有gcc4.5本身  详情 回复 发表于 2019-10-25 21:47
回复

使用道具 举报

24#
 楼主| 发表于 2019-10-25 21:47:32 | 只看该作者
不点 发表于 2019-10-25 21:25
wee 的编译,不像 grub4dos 那样难。

wee 最好在 Linux 下编译。

总之出货了
gcc4.8下还是可以编译的
我用的archlinux貌似没有非常旧的gcclib
只有gcc4.5本身
回复

使用道具 举报

25#
 楼主| 发表于 2019-10-25 21:59:42 | 只看该作者
不点 发表于 2019-10-25 21:25
wee 的编译,不像 grub4dos 那样难。

wee 最好在 Linux 下编译。

应该就是了
估计是编译环境引起的垃圾字节
或者gcc版本的问题……

这就没有
如果编译的能用
我就上传二进制文件吧

回复

使用道具 举报

26#
发表于 2019-10-25 22:02:42 | 只看该作者
好的,你上传,让大家都试试。

点评

下载后校验sha512值(大概7z不损坏的话不会有问题,建议以防万一)  详情 回复 发表于 2019-10-25 22:21
回复

使用道具 举报

27#
发表于 2019-10-25 22:07:28 | 只看该作者
你编译的,好像比以前编译的体积大了几十个字节。不如以前编译的好。还是用以前编译的吧。只需把 6 个垃圾字节去掉便可。

点评

其实不是大了 是反而小了 [attachimg]403820[/attachimg] 如你所见我用4.8编译的二进制文件 菜单部分是从7828开始的16年C佬编译的菜单部分是从784A开始的 至于最后为什么体积反而大些 那显然是因为“preset_me  详情 回复 发表于 2019-10-27 03:11
也许是gcc4.8的问题 貌似提过一嘴 某些版本的gcc编译出来文件会变大…… Ubuntu 16.04貌似才有gcc4.5  详情 回复 发表于 2019-10-25 22:27
回复

使用道具 举报

28#
 楼主| 发表于 2019-10-25 22:21:36 | 只看该作者
不点 发表于 2019-10-25 22:02
好的,你上传,让大家都试试。

wee.7z (35.57 KB, 下载次数: 99)
下载后校验sha512值(大概7z不损坏的话不会有问题,建议以防万一)

  1. b8d2772c49cc62d878688bb69407abf34e6a1c4ae0de1beed223a7037bb84ed6894c25d3c4bea38f85a6da29905b8a47a637350d85ef9fa3ef255a1ccd07d193  wee127.mbr
  2. b93014b26ac6187ee7b1f3f26f6d93e1cb33c9efdb902e166604ad3d10eec1b1d73f3743b3d027a1befe36bf2e076e048f8b0db4ad4a2e3e00d72cd24a75211b  wee63.mbr
复制代码


回复

使用道具 举报

29#
 楼主| 发表于 2019-10-25 22:27:58 | 只看该作者
本帖最后由 求道者 于 2019-10-25 22:42 编辑
不点 发表于 2019-10-25 22:07
你编译的,好像比以前编译的体积大了几十个字节。不如以前编译的好。还是用以前编译的吧。只需把 6 个垃圾 ...

也许是gcc4.8的问题
貌似提过一嘴
wee需要在gcc 4.5的环境中编译,否则生成的文件太大超过了32KB。如果你不需要编译wee可以略过以下内容。


某些版本的gcc编译出来文件会变大……
Ubuntu 16.04貌似才有gcc4.5
按这个尿性来看
都不用迁移gcc……
怎么回事啊

哪天迁移到gcc9 试试?(兴许修复了体积过大的BUG)
说不定会更小
回复

使用道具 举报

30#
 楼主| 发表于 2019-10-27 03:11:18 | 只看该作者
不点 发表于 2019-10-25 22:07
你编译的,好像比以前编译的体积大了几十个字节。不如以前编译的好。还是用以前编译的吧。只需把 6 个垃圾 ...


其实不是大了
是反而小了

如你所见我用4.8编译的二进制文件
菜单部分是从7828开始的,16年C佬编译的菜单部分是从784A开始的
至于最后为什么体积反而大些
那显然是因为“preset_menu changed and fix Makefile issue”
更新菜单似乎就没编译……
不过虽然我浪费了挺长时间寻找合适的老系统安装gcc4.5
但也算有所收获
不知道是不是依赖环境的问题用gcc4.5编译后wee反而会大到7d2e
用gcc4.8编译体积更小可能是因为修复BUG 或者做了优化……
那么可以考虑迁移到gcc9了
感想就是gcc4.5实在太老了……
能裝的系统都够难找

Makefile还是不好,没弹性,换gcc版本还要用链接……
还有就是Docker救了我的命
最后发现了即开即用的gcc容器镜像
总算在现在搞完了……
明天试试gcc4.9或者gcc5 之类的编译wee
或者修了那个BUG 用gcc9

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-12-24 11:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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