无忧启动论坛

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

wee的help文件

    [复制链接]
跳转到指定楼层
#
发表于 2011-7-7 06:41:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
写在前面的话
经过多次修改,我所能找到的错误基本上已经都修正了。为了方便大家纠错,本文已经发到wiki百科上,地址是zh.wikipedia.org/wee。wiki百科是人人都可以修改的,有人发现了错误可能直接修改,而不回来本帖通知,因此, wiki百科可能更正确,更权威。建议大家直接去wiki百科。

wee最新版的下载地址是:
http://code.google.com/p/grubutils/downloads/list

————————正文开始————————
asm
asm命令用来提供与dos里debug相类似的功能。
语法:
asm [地址] db [字节] [字节] ...
asm [地址] go
1. asm [地址] db [字节] [字节] ...
“地址” 和 “字节”都是整数。
如果存在“地址”参数,则从“地址”处开始汇编。如果不存在“地址”参数,则从当前汇编地址开始汇编。系统初始的默认汇编地址是在地址 16M 处。每执行汇编一条指令,当前汇编地址指针会随着发生变动。
“字节”参数主要意图是用来编写机器指令,只有最低的字节起作用,其余的高位字节都被忽略。
2. asm [地址] go
如果存在“地址”参数,则从“地址”开始运行汇编程序。如果不存在“地址”参数,则从地址 16M 处开始运行汇编程序。
==============
asm 命令只实现了必要的 db 和 go 子命令。真正的汇编指令,一个也没有实现。其实,由于 wee 的空间紧张,也确实无法实现了。需要等以后腾出空间了再实现。
db 伪指令可以实现机器码的编程。这对于熟悉机器码的人是有用的。
==============
注:
1. 汇编默认的地址正好是外部命令运行时的代码空间。如果运行外部命令,就毁掉了你的汇编程序。所以,汇编期间,不要执行外部命令。
2. 在执行 go 之前,应该用 hexdump 命令检查汇编代码是否正常。否则,盲目地执行 go,有可能发生死机。
3. 你的程序应该保护所有的寄存器,最后用一条 ret 指令返回到 wee 的环境下。
4. 尤其要注意堆栈,不可有丝毫差错,否则就要死机。
5. 作为 asm 命令的应用,你可以调用 wee 的 API。不过,目前你得自己用 db 来写机器码,而且要熟悉各个 API 的调用格式。
http://bbs.znpc.net/viewthread.php?tid=6107
示例:
asm 0x1000000 db 0xC3
asm go
#这个程序很简单,只有一个 ret 指令( C3 就是 ret),什么也不做,立即返回。
————————————————————————————————
command
command命令用来执行外部可执行文件。
语法:
command [FILE [ARGS]]
wee不再需要 chainloader 和 kernel 命令了,取而代之的是用 command 本身的功能。command 命令把可以引导的文件(示例如单扇区文件、NTLDR、IO.SYS、vmlinuz 等)都当作可执行文件来对待了。单单在命令行之下敲入 ntldr、 io.sys或者 vmlinuz 等,就可以启动相应的文件了,它们已经是wee的可执行程序了。这就是说,启动那些不同的格式,有了统一的调用方式,不再像以前那样分为 chainloader 和 kernel 两个不同的类别了。
http://bbs.znpc.net/viewthread.php?tid=5838&page=7&fromuid=12697#pid44230
注:
1. command 命令不支持 --set-path 参数。默认时,使用当前当前目录作为命令文件的路径。如果未找到,将提示 wee 17>。
2. 菜单文件不是可执行文件。
3. 在wee中也没有boot命令,command命令将立即执行,不再需要附加boot命令了。
4. wee支持 FAT、NTFS,EXT2/3/4文件系统。
示例1:
#启动linux
command (hd0,0)/vmlinuz (hd0,0)/initrd.img root=UUID=XXXXXXXXXXXXX ro quiet splash acpi=noirq
#注意,由于这不是 chainloader 启动的,所以,你需要在 vmlinuz 之后紧跟一个 initrd.img,然后才是命令行的其他参数。
#command 命令将同时加载两个文件到内存,一个是 vmlinuz,一个是 initrd.img。加载成功以后,把控制交给 vmlinuz。
http://bbs.znpc.net/viewthread.php?tid=5838&page=7&fromuid=12697#pid44101
示例2:
#启动mbr
(hd0)+1
示例3:
#启动dbr
(hd0,0)+1
————————————————————————————————
default
default命令用来设置默认启动的菜单项
default NUM
设置默认启动的菜单项为 NUM 号菜单。
注:
第一项菜单是0号菜单。
————————————————————————————————
exit
exit将立即终止当前命令的运行,将控制返回给调用者。
语法:
exit
当一个外部命令调用内部的命令处理器进入命令行手动输入命令的时候,如果没有 exit 命令,则永远无法退回到外部命令中。有了 exit 命令,当前的命令处理就可以结束了,控制可以回到调用者。
在wee和grub4dos中,每个命令都会返回一个ERRNUM。成功返回 0,如果返回一个非 0 值,通常情况下都会被认为是一个错误码,每个ERRNUM值都有特定的含义,详情请参阅grub4dos.h c/c++或bash的相关文档。一个编写良好的命令,程序,和工具都应当返回一个 0 来表示成功。
将来,wee可能会提供脚本功能。脚本中的函数和脚本本身都会返回ERRNUM。在脚本或者是脚本中的函数中执行的最后的命令会决定ERRNUM。
注:
在wee命令行中,提示符wee和>之间的数字就是上一个命令的错误码。
示例:
wee 0>echo
#echo是外部命令,如果当前目录下不存在echo,那么提示符将是:
wee 17>
————————————————————————————————
find
本命令用来查找符合条件的文件或分区。
语法:
find [--set-root] [--active] [FILENAME] [CONDITION]
1. 参数 --set-root,找到第一个匹配后马上停止,并且把该设备设为根设备。
2. 参数 --active,查找激活的主分区。grub4dos的find没有此参数。
3. CONDITION 是一个返回值是 true 或者 false 的命令。
注:
违反直觉的是,0代表true,非0代表false,但是却符合脚本语言的内部逻辑,大多数脚本也都是这么规定的。
示例 1:
find
这会列举所有的硬盘分区,软驱和 (cd) 等。
示例 2:
find +1
这会列举文件系统已知的所有设备。
————————————————————————————————
hexdump
本命令用来显示内存数据。
语法:
hexdump [地址] [长度]
地址和长度都是整数,以字节计算。
如果在一个命令行的开头按下 Delete 键,则此时也会执行 hexdump 命令。因此,可以认为 Delete 键是 hexdump 的快捷键。
————————————————————————————————
map
本命令是一个简单的设备映射命令
语法:
map (FROM_DRIVE) (TO_DRIVE) [--hook] [--unhook]
1. --hook 参数表示仿真立即生效,即使是在命令行模式中。
2. --unhook 参数仅仅是断开 INT13 的挂钩(在中断矢量表中),它不会影响到驱动器映射表。
map命令不支持--rehook,建议使用--unhook参数,并自行恢复驱动器映射表.
另外,127扇区版的wee127.mbr 之中所实现的 map 命令,几乎与 grub4dos 里面的 map 完全一样只有两点差别:
1. 不支持加载到 4G 以上。
2. 不支持加载压缩的映像(gz,lzma)格式。
注:
wee不支持从 iso9660 光盘文件系统中启动,因此,wee不能用作 ISO 的启动引导程序。
http://bbs.znpc.net/viewthread.php?tid=5838&page=19&fromuid=12697#pid47891
示例1:
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
示例2:
map --unhook
map (hd0) (hd0)
map (hd1) (hd1)
map --hook
————————————————————————————————
pause

暂停,按任意键后继续。
语法:
pause [MESSAGE]
暂停,按任意键后继续。如果有MESSAGE,则把它输出到屏幕上
注:
pause命令不支持--wait参数。
示例1:
pause This is a test。
This is a test。
#按任意键后继续
————————————————————————————————
root
设置并加载根设备。
语法:
root [DEVICE_OR_PATH]
将指定设备(DEVICE_OR_PATH)设置为根设备,然后尝试挂接该分区以得到分区大小。
注:
根设备和根目录是两个容易混肴,但是实际上不同的两个概念。
示例:
root (hd0,0)/boot/grub
#这条命令执行之后,根设备是(hd0,0)/boot/grub,而根目录是(hd0,0)/boot/grub/,两者相似但是还是有一些细微的差别。
————————————————————————————————
rootnoverify
设置但不加载根设备。
rootnoverify [DEVICE]
类似 'root' 指令, 但不试图安装该设备。这用于有些系统装在 wee 不能访问的磁盘分区之上, 但仍需要设置正确的根分区的情况。有些需要安装分区才能确定的参数可能会有问题。
————————————————————————————————
timeout
timeout SEC
设置在自动启动缺省菜单前所等待的秒数。超时后,将启动默认菜单项。在菜单头部使用,不能用于菜单项中。
————————————————————————————————
title
title [NAME]
菜单标题,即加载菜单后菜单项的标题。
目前最多只支持 20 个有效的 title 行。
当存在连续的 title 时,仅仅把最后一个 title 作为有效的 title 来计算,其余的只显示出来而已,并且不能用箭头键来访问。这是一种添加注释的方法,这样,用户想怎么添加注释都很随意了。
这是与grub4dos不同的地方,grub4dos不支持此功能。
示例:
title
title Wee Boot Menu
title =============
title  GRLDR
http://bbs.znpc.net/viewthread.php?tid=5838&page=13&fromuid=12697#pid46877

——————————————————————————————————
本文写作的过程中参考了grub4dos-help-2011-05-27、ABS_Guide(高级 Bash 脚本编程指南)、grub2入门基础教程修订版、批处理阶段教程奥运最终版[英雄出品]以及系统时空和无忧启动论坛的相关帖子,并得到了不点等人的帮助,在此一并致谢。

[ 本帖最后由 2011_dihuo0 于 2011-8-22 09:15 编辑 ]

点评

辛苦了  发表于 2024-5-11 18:39

评分

参与人数 4无忧币 +14 收起 理由
yyz2191958 + 2 赞一个!
mountainbear + 2 很给力!
不知 + 5 很给力!
2012xiefi + 5 很给力!多重启动非常实用

查看全部评分

推荐
 楼主| 发表于 2011-7-7 06:43:24 | 只看该作者
=== 名字的由来 ===
http://bbs.znpc.net/viewthread.p ... muid=12697#pid45404
wee:很少的,微小的,极小的,很早的。
有很多词汇都曾经被用于小的操作系统,比如 mini,tiny,nano,micro 等等,这类常用词都被用光了。
所以就找到这个无人问津的 wee 了。如果将来真的成为了一个操作系统,中文名字可以叫做“微”,与英文语音相近,词义也相近。
起初找这个 wee 不是想把它当作一个操作系统的名字,而是想把它当作一个后缀(wee是三个字母,作为后缀很合适,也很难得;其他的同义词都要超过三个字母):grldr.wee 以区别于 grldr.mbr。但是,后来,grldr 的开头 16 扇区不能存在了,精简为 2 扇区了,这样,就不能再用 grldr 作为主要名字了。所以,我就想,干脆就把主要名字叫做 wee 得了。
目前,第一扇区中代码启动失败时的提示字符串就是 “Urr! wee...”。
————
http://bbs.znpc.net/viewthread.p ... muid=12697#pid45408
grldr.wee 不好,因为将来不利于区分 63 扇区和 128 扇区的版本。也不容易区分 ROM 版和 MBR 版。
grldrwee 也存在一样的问题:
grldrwee63.mbr、grldrwee63.rom 显然超过了 8.3 文件名的要求,不美观。
这个 wee,如果看成是一个独立的操作系统的话,它是从 grub4dos 发展而来的,或者说,是基于 grub4dos 的。一个东西基于另一个,新的不一定非得在名称上与旧的有牵连。ubuntu 基于 debian,但在名称上从未体现出 debian 字样。

=== 近况 ===
http://bbs.znpc.net/viewthread.p ... muid=12697#pid43940
按照我目前的想法,微型grub有一套API,而grub4dos也有一套API。可以肯定的是,微型grub的API数量很少。这样就有两种情况:
1。grub4dos 的API 严格与微型grub的API一一对应,都是少量的几个。这样,少量的API只提供系统中极其特别的几个功能接口。
2。grub4dos 的API多于微型grub的API。这就有了两者共有的 API 以及grub4dos专有的API之分。那么应用程序肯定也得考虑两种不同情况。将来我们会公布究竟哪些API是共有的,而哪些是grub4dos专有的。这样一来,应用程序的编写者就能决定是否同时支持两者以及如何在两种情况下都能运行。
注意我们仅仅涉及的是内核提供的API,不讨论由其他扩展模块所提供的API。API就是系统调用。grub内核代码和变量是高度透明的,这些API函数就是内核本身必不可少的函数。把这些变量、函数和数据结构的地址放在固定的内存位置,就等于向外部程序提供了访问的手段。内核用了多少个函数,外部程序也就能够用多少个函数。因此,内核的代码是充分地被利用了。你不可能做到,让内核中没有的函数,也作为API供外部程序使用。内核中所有的函数都可以被外部程序(作为API)来调用,这一点,不就是最好的代码重用吗?这已经达到最大化(100%),你不可能做到更高的代码重用率了。我们的内核(代码和数据)没有丝毫的保留,全都贡献出来,供外部程序使用。这就是core-lib。所谓的core-lib,就是内核所提供的系统调用罢了。但是我们不同于Linux的系统调用的方面在于,我们是把内核中全部的代码和数据都提供给外部程序了,这一点,Linux是不会这么做的。Linux是一个操作系统,注重安全,所以,它不会像我们那样去做。而我们就像DOS那样,没有安全机制,所以,我们就可以把内核完全暴露在光天化日之下,你可以调用它,你也可以破坏它,那都是你的自由。
至于说将来的扩展(内核模块和TSR程序),也都可以提供API,那是比较遥远的事情了,我们现在去讨论,还不是时候,因为就连现在我们都处于摸索阶段。应该一步一步来。如果一步还没走稳,下一步就不容易看得清楚。我们是“摸着石头过河”。
=== 发展目标 ===
== 主要用途 ==
http://bbs.znpc.net/viewthread.p ... muid=12697#pid46840
wee 本来就是为硬盘设计的。它的主要用途就是在硬盘上,防止因丢失分区上的引导文件而死机。这是 wee 目前最大的用处。将来可以被主板生产商用在 ROM 上那是另外一个话题。
当你去给客户或朋友修理机器的时候,通常他的机器还没彻底死掉,这时候,你首先把 wee 安装在 MBR 上,这样就放心了。即使后来折腾坏了,只要 MBR 上的 wee 还在,启动不至于死机,于是就还能尝试挽救。如果 MBR 上没有 wee,那么启动失败之后,你必须用 U 盘或者光盘或者 PXE 等手段了,而对于具体的情况来说,那些手段不一定行得通,比如说,机器没有光驱,不支持 U 盘启动,也不支持 PXE 启动。那就得拆卸硬盘了,很不爽吧。wee 的最大用处就是方便对付这类问题的。
每个软件都有其用途、目的。wee 的主要用途应该是为电脑修理人员提供方便的。它不可以代替 grub4dos。它也不可以代替 pt 的 63 扇区引导软件。
http://bbs.znpc.net/viewthread.p ... muid=12697#pid31282
这些裁剪掉的内容,将来有可能再添加上,如果确有必要的话(同时也得在我们有相应的开发能力的情况下)。mini grub 的裁剪将很多,最后,保证软件大小在 30K 以内(也可以同时推出30K和60K两个版本)。mini grub 的用途大概是在 MBR 上以及 ROM 扩展卡上。
对于 30K 的 mini grub,我们到时候可以考虑融合 grub.exe 和 grldr 了。因为 grub.exe 就可以变成 grub.com 了,这样,它就有可能与 grldr 合并了。到那时,它们统一称作 grub.com。
————
http://bbs.znpc.net/viewthread.p ... muid=12697#pid45316
精简版的主要目的,就是应用于硬盘的 MBR,使得查找 grldr 失败时,能够进入命令行,而不是 Ctrl+Alt+Del。
命令行之下能够运行外部命令,使得精简版就像一个微型的操作系统。这是这个精简版的另外一个特色。
如此小的操作系统,目前还不多见。

[ 本帖最后由 2011_dihuo0 于 2011-8-3 10:33 编辑 ]
回复

使用道具 举报

推荐
发表于 2015-5-13 01:21:44 | 只看该作者
百年不遇的好帖子,不得不顶











交友:我是个小女生,21岁,独生子女,还没谈过恋爱,长相较好,反正带出去不会给你丢脸,身高165cm,体重50kg,现在是一家公司的文员。希望找个比我大几岁的男生,不需要你有非常好的条件,但一定要有上进心,会体贴女生,不花心。因为我是第一次恋爱,所以希望找的就是那种能结婚的。如果你是我说的那个他,那就加我微信吧:pndrwx

评分

参与人数 1无忧币 -5 收起 理由
wintoflash -5

查看全部评分

回复

使用道具 举报

推荐
发表于 2011-7-7 11:05:07 | 只看该作者
调用 bios 属于执行实模式代码。用 realmode_run 函数(C 语言函数)即可。不需要 asm 之类的手段。

realmode_run 函数在 wee 和 grub4dos 下都存在。用 google 搜 realmode_run 看看能否找到相关说明。
回复

使用道具 举报

推荐
发表于 2011-7-7 09:15:57 | 只看该作者
asm,可以调用bios中断么?要注意什么?grldr有类似功能么?
回复

使用道具 举报

推荐
发表于 2011-7-7 06:48:32 | 只看该作者
看来占位后的沙发让我抢到了。
回复

使用道具 举报

64#
发表于 2024-11-5 08:55:32 | 只看该作者
感谢分享
回复

使用道具 举报

63#
发表于 2024-11-4 21:32:44 | 只看该作者
赞赞
回复

使用道具 举报

62#
发表于 2024-7-7 08:50:16 | 只看该作者
wangziqiang 发表于 2011-7-10 21:25
我来晚了  辛苦了楼主啊啊

回复

使用道具 举报

61#
发表于 2024-7-7 08:50:01 | 只看该作者
devilma 发表于 2011-7-13 04:09
辛苦,多谢整理,很不错,方便阅读,希望早日完善

回复

使用道具 举报

60#
发表于 2024-7-7 08:44:28 | 只看该作者
回复

使用道具 举报

59#
发表于 2024-5-6 15:44:34 来自手机 | 只看该作者
谢谢分享,支持原创,楼主不易,了表赞赏。
回复

使用道具 举报

58#
发表于 2023-12-14 10:55:51 | 只看该作者
谢谢分享
回复

使用道具 举报

57#
发表于 2023-5-17 05:26:27 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

56#
发表于 2023-3-30 13:52:22 来自手机 | 只看该作者
支持一下
回复

使用道具 举报

55#
发表于 2023-3-18 21:40:16 来自手机 | 只看该作者
学习一下
回复

使用道具 举报

54#
发表于 2022-10-21 20:03:51 | 只看该作者
感谢分享,收藏备用。
回复

使用道具 举报

53#
发表于 2022-10-13 14:11:02 来自手机 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

52#
发表于 2022-9-26 18:10:06 | 只看该作者
最新版,怎么下载。
回复

使用道具 举报

51#
发表于 2020-7-2 08:23:44 | 只看该作者
学习了
回复

使用道具 举报

50#
发表于 2020-6-28 12:32:36 | 只看该作者
学习了
回复

使用道具 举报

49#
发表于 2020-2-28 15:54:43 | 只看该作者
本帖最后由 hilsonma 于 2020-2-28 16:06 编辑

今天在wee命令行下偶然输入find ntldr结果直接引导成功了
于是把wee菜单改成:
find grldr
find bootmgr
find ntldr
exit
可以成功引导

当然,如果不是使用windows系统,或者windows系统不在第一主分区,或者活动分区不是第一主分区,这些情况下,就不要用这样简单的菜单,建议还是用回 官方菜单
回复

使用道具 举报

48#
发表于 2019-12-17 13:48:03 | 只看该作者
我最大的失误就是把ZNPC论坛给废了!
后悔!
岁月蹉跎!
回复

使用道具 举报

47#
发表于 2019-10-12 17:03:14 | 只看该作者
最新版本的,还能有地方下到吗?
回复

使用道具 举报

46#
发表于 2017-5-13 18:01:31 | 只看该作者
感觉英文,甚至德文、俄文、法文、意大利文、西版牙文?等等,都比中文维基重要,无论从推广角度还是其它角度。
回复

使用道具 举报

45#
发表于 2016-1-29 19:52:06 | 只看该作者
看看吧....
回复

使用道具 举报

44#
发表于 2015-3-8 23:33:11 | 只看该作者
bootice是一款非常了不起的软件!
回复

使用道具 举报

43#
发表于 2014-12-30 20:31:27 | 只看该作者
有没有和grub.exe 一样的wee.exe
回复

使用道具 举报

42#
发表于 2014-4-28 14:54:36 | 只看该作者
楼上不是已经说过了吗?没办法,除非修改源代码。
回复

使用道具 举报

41#
发表于 2014-4-28 13:19:45 | 只看该作者
请教大师, 怎么关闭回显。
command  (hd0,0)/grldr
command  (hd0,0)/grub.exe
command  (hd0,0)/bootmgr
command  (hd0,0)/ntldr


结果屏幕上 回显 一堆的东西。
我就像 让它自动执行这段内置菜单, 什么也不显示。
回复

使用道具 举报

40#
发表于 2014-4-20 19:22:35 | 只看该作者
没有编写屏蔽回显的代码。你自己可以把源代码拿过来改造。
回复

使用道具 举报

39#
发表于 2014-4-20 19:18:10 | 只看该作者
怎么让 wee 不显示 回显。
很不雅观的。
启动一个菜单, 冒出一段文字, 不雅观。

希望 能静悄悄的执行菜单文件,不显示。
回复

使用道具 举报

38#
发表于 2013-12-1 00:24:49 | 只看该作者
wiki上的帮助被删除了
回复

使用道具 举报

37#
发表于 2013-11-13 10:25:15 | 只看该作者
原来 WEE的作者也在这里呀.
无忧能人辈出呀
回复

使用道具 举报

36#
发表于 2013-10-22 22:31:20 来自手机 | 只看该作者
感谢各位大师开发辛苦了。从来看帖子不曾如此激动,心潮澎湃。2011_dihuo0 大师道出了开发grub4dos,wee的理念和历史。你们坚定信念,卓绝人品让人钦佩。菜菜的我只能心底为你们祝福,好人一生平安!!!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 18:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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