无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 25911|回复: 57
打印 上一主题 下一主题

wee63setup.exe wee63.mbr安装辅助工具(v1.1)

[复制链接]
跳转到指定楼层
1#
发表于 2011-1-26 22:42:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为安装WEE63.MBR目前还是挺麻烦的,没有一个顺手的工具.

主要是为了自己方便,可以使用批处理直接安装.方便使用.

直接使用这里的wee63setup.c源码修改了一下
http://code.google.com/p/grub4dos-chenall/issues/detail?id=3

修改内容:
1,内置NT6的MBR
2,修正原版无法正常使用的问题(应该使用二进制模式打开文件)
3.参数调整.

2011-01-28(重写90%代码)
    1.支持直接写磁盘,不再需要用其它工具了。
    2.内置了最新版的wee63.mbr文件。

2011-01-27
    1.添加了简单的GPT磁盘MBR检测,如果是GPT分区表不允许安装。
    2.为了方便DISKRW使用,输出的文件使用63个扇区的大小。

2011-01-26
最初的版本。。


wee 是一个微型的grub用于安装到硬盘mbr上.
可以用来代替之前的grldr.mbr方案。
可以访问的文件系统: FAT12/16/32/NTFS EXT2/3/4
weesetup是为了方便安装wee63.mbr而写的程序。支持自定义脚本。
注意: 如果你的主板不支持EBIOS请不要安装(一般情况下较新的电脑都会支持),具体原因请看下面的WEE说明。
   WEE access disk sectors only using EBIOS(int13/AH=42h), and never using
   CHS mode BIOS call(int13/AH=02h). So, if the BIOS does not support EBIOS
   on a drive, then WEE will not be able to access that drive.
   WEE supports FAT12/16/32, NTFS and ext2/3/4, and no other file systems are
   supported.
   WEE can boot up IO.SYS(Win9x), KERNEL.SYS(FreeDOS), VMLINUZ(Linux), NTLDR/
   BOOTMGR(Windows), GRLDR(grub4dos). And GRUB.EXE(grub4dos) is also bootable
   because it is of a valid Linux kernel format.
   Any single sector boot record file(with 55 AA at offset 0x1FE) can boot
   as well.
   Besides, WEE can run 32-bit programs written for it.
详细参数介绍:
weesetup v1.1.
Usage:
        weesetup [OPTIONS] DEVICE
OPTIONS:
        -i wee63.mbr            Use a custom wee63.mbr file.
        -o outfile              Export new wee63.mbr to outfile.
        -s scriptfile           Import script from scriptfile.
        -m mbrfile              Read mbr from mbrfile(must use with option -o).
        -f                      Force install.
        -u                      Update.
        -b                      Backup mbr to second sector(default is nt6mbr).
Report bugs to website:
        http://code.google.com/p/grubutils/issues
Thanks:
        wee63.mbr (minigrub for mbr by tinybit)
                http://bbs.znpc.net/viewthread.php?tid=5838
        wee63setup.c by SvOlli,xdio.c by bean
wee 安装程序v1.1
用法:
        weesetup [参数] 磁盘
参数:
        -i wee63.mbr            使用外置的wee63.mbr。
        -o outfile              导出新的WEE63.MBR文件到outfile.
        -s scriptfile           导入wee脚本文件.
        -m mbrfile              从mbrfile获取mbr信息(必须配合参数-o使用).
        -f                      强制安装.
        -u                     更新已安装的wee.
        -b                      备份旧的mbr到第二扇区(默认不备份,而是直接使用内置的nt6mbr).

请到以下网址报告BUG:
        http://code.google.com/p/grubutils/issues
感谢:
        wee63.mbr (minigrub for mbr by tinybit)
                http://bbs.znpc.net/viewthread.php?tid=5838
        wee63setup.c by SvOlli,xdio.c by bean
一些使用的例子:

  • 直接安装到第一硬盘上
    weesetup.exe (hd0)
  • 安装到第一硬盘并使用自定义的菜单文件menu.wee
    weesetup.exe -s menu.wee (hd0)
  • 修改指定wee63.mbr的默认内置菜单
    weesetup.exe -i wee63.mbr -o wee63.bin -s menu.wee
注:安装到硬盘上时会先备份原硬盘的MBR为backup.mbr。请自己备份好这个backup.mbr文件以防万一.
更多资料请访问我的搏客:
http://chenall.net/post/weesetup/

获取最新版本程序和源码
http://code.google.com/p/grubutils/downloads

附:内置的wee63.mbr默认脚本内容
find –set-root /boot/grub/grldr
/boot/grub/grldr
find –set-root /boot/grldr
/boot/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

若无特别注明,均属本站原创文章,转载请注明: 转载自:chenall's blog
本文链接地址: weesetup 微型grub安装工具


[ 本帖最后由 chenall 于 2011-1-29 10:45 编辑 ]
2#
发表于 2011-1-27 07:23:52 | 只看该作者
chenall 你好能说说它的功能吗
回复

使用道具 举报

3#
 楼主| 发表于 2011-1-27 08:32:29 | 只看该作者
一楼的说得够详细的了。。

拒绝水贴。。
回复

使用道具 举报

4#
发表于 2011-1-28 07:01:43 | 只看该作者
chenall不好意思我是说能加入wee的一些应用举例,让更多人了解它,我昨天把wee安装了试了一下真的很不错,是grub的微缩,就是不知道他的一些命令和参数,谢谢
这是启动效果


[ 本帖最后由 717758565 于 2011-1-28 07:04 编辑 ]
回复

使用道具 举报

5#
发表于 2011-1-28 08:40:37 | 只看该作者
wee的参数很少,主要就是find和chainloader以及root功能

title xp
find /ntldr
/ntldr

可以去grub区 天涯海角1216的一篇帖子  也是介绍wee的  那里有很多例子
回复

使用道具 举报

6#
 楼主| 发表于 2011-1-28 09:47:08 | 只看该作者
准备进行大改动(可能要重写90%的源码), 直接使用bean 的fbinst里面的xdio.c磁盘读写库。

可以直接读写磁盘。

顺便再内置WEE63.MBR。

以后安装不加任何参数的话最简单,只要指定磁盘号就可以了。
wee63setup.exe (hd0)

如果时间足够的话预计晚上之前会上传。
回复

使用道具 举报

7#
发表于 2011-1-28 10:39:37 | 只看该作者
xdio.c磁盘读写库,不知FAT命令是否能扩展?
回复

使用道具 举报

8#
 楼主| 发表于 2011-1-28 10:40:22 | 只看该作者
原帖由 zhaohj 于 2011-1-28 10:39 发表
xdio.c磁盘读写库,不知FAT命令是否能扩展?


???

FAT命令和这个没有什么关系啊。

FAT是GRUB4DOS的程序。这个是WINDOWS的。
回复

使用道具 举报

9#
 楼主| 发表于 2011-1-28 14:09:56 | 只看该作者
终于搞定了,,

自认为完美版。。

已经更新上传.
回复

使用道具 举报

10#
发表于 2011-1-28 17:13:51 | 只看该作者
wee 没有 chainloader 命令。必须省去 chainloader 而直接用 +1 或者 /ntldr 之类的,来启动操作系统。

关于写入 MBR 磁道,应该注意安全。干任何事,安全第一,不要忘记。

1。不要超过 63 扇区。严格检查,超过 63 扇区的 wee63.mbr 应该当作非法的文件。

2。有的分区,可能会起始于 0 ~ 63 扇区之间。在这种情况,也要避免写入,否则就毁坏了用户的分区。写入前,严格检查分区表,确保四个分区表项中没有一个分区起始于 0 ~ 63 扇区之间。然后才能安全地写入。

3。在写入前,读取分区表到临时内存,然后严格检查写入的分区表与原来的分区表完全一样。否则,拒绝写入,出错退出。分区表检查顺利通过之后,才真的执行写入操作。

4。为了减少对磁盘的损坏,要尽可能少地写入磁盘。那些未曾更动的扇区,就不要执行写入的操作了。比如,63 扇区中,有 20 个扇区有改动,那么仅仅对这 20 个扇区进行写入,其他扇区不再执行多余的写入动作。

补充:

5。非法的分区表,也不要写入。有的磁盘,其第一扇区是 FAT 的 BPB 扇区,没有合法的分区表。这种情况当然不能写入 wee63.mbr 了。如果分区表中有一个表项是非法的,则整个分区表就是非法的,应该拒绝写入。起始扇区和终止扇区号 S 就不能是 0。分区的长度也不能是 0。四个分区不能有交叉(即不能互相覆盖、重叠)。

6。分区表为空的,比如,四个表项都是 00 字节,表示分区表为空。一个分区表项为空,还可能是这个16字节全都一样,比如是十六进制的 F6 F6 ... 重复 16 次。这种情况也看成是该项是空的。如果四个项目全是空的,就视为非法,不要写入。比如,类似于下面的分区表就是空的:

  1. AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA
  2. 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80
  3. 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
  4. D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7 D7
复制代码

[ 本帖最后由 不点 于 2011-1-28 17:34 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2011-1-28 17:30:04 | 只看该作者
原帖由 不点 于 2011-1-28 17:13 发表
wee 没有 chainloader 命令。必须省去 chainloader 而直接用 +1 或者 /ntldr 之类的,来启动操作系统。

关于写入 MBR 磁道,应该注意安全。干任何事,安全第一,不要忘记。

1。不要超过 63 扇区。严格检查 ...


嗯,谢谢提醒。。

目前只是进行简单的检测,没有考虑太多,有限制了最多不能超过63扇区。

看来还得进一步处理尽量保证安全。
回复

使用道具 举报

12#
发表于 2011-1-28 18:47:11 | 只看该作者
谢谢chenall这个wee这个很不错,命令很全,学习了
回复

使用道具 举报

13#
发表于 2011-1-29 10:22:25 | 只看该作者
不点说的对。应该加强安全性。有些分区是不规则的。冒然写入可能导致用户数据的丢失,不管怎么说,这都是我们不想看到的结果。限制应该多加一些。
回复

使用道具 举报

14#
 楼主| 发表于 2011-1-29 10:43:42 | 只看该作者
OK,更新了,偷个懒,直接调用了grubinst里面的分区检测代码。
再加上简单GPT检测。

现在只写入有变动的扇区。没有改动的就不修改。。

新增参数-u  更新WEE。
原来的-f 作为强制安装(当MBR检测不通过的时候可以使用这个参数强制安装)
回复

使用道具 举报

15#
发表于 2011-1-29 11:14:17 | 只看该作者
英语是很麻烦的 -u 可能会被误解为 -uninstall。

由于用户的疏忽而造成的灾难也很常见。

虽然这不是软件开发者的责任,但软件开发者应该为用户着想,尽可能为用户考虑周到。

运用开发者的智慧,来减少灾难的发生,从这个意义上讲,开发者确实也有责任。


使用 weesetup 命令行的用户,一般是属于那些有一定水平的人。就是这样一群人,才容易发生危险。所谓“溺死的都是会游泳的”,就是相同的道理。

所以,真正会出问题的,八成都是“高级用户”。

错误发生在不经意之间。比如,他正在与别人说话,一边说话,一边操作,这样,就容易发生错误。或者他有别的事情占据了脑海,一心两用,也容易胡乱操作。由于注意力不集中,很容易把 -u 当作 uninstall,诸如此类。

[ 本帖最后由 不点 于 2011-1-29 11:36 编辑 ]
回复

使用道具 举报

16#
 楼主| 发表于 2011-1-29 11:21:38 | 只看该作者
汗,我倒是没有考虑这么多。。
算了,先这样子,放一段时间看看情况。

有必要的话再一起改动。

一般情况下-u参数只会改写放脚本的那些扇区。
回复

使用道具 举报

17#
发表于 2011-1-29 13:49:53 | 只看该作者
那麼 -r = reinstall 還是 remove 呢? :D
回复

使用道具 举报

18#
 楼主| 发表于 2011-1-29 14:45:08 | 只看该作者
原帖由 不点 于 2011-1-29 11:14 发表
错误发生在不经意之间。比如,他正在与别人说话,一边说话,一边操作,这样,就容易发生错误。或者他有别的事情占据了脑海,一心两用,也容易胡乱操作。由于注意力不集中,很容易把 -u 当作 uninstall,诸如此类。




呵呵,我就有碰到这样的事,一边说话,一边操作,然后就悲具了,,,

我在这里也有一个建议,对于这些操作,不管你多厉害也不要一心两用。
回复

使用道具 举报

19#
发表于 2011-1-29 16:59:19 | 只看该作者
呵呵,有些错误往往是不经意间发生的。在一些危险操作时一定要想好再做。一定要静下心来。
这几天,我就犯了一个大错。 一个HP的笔记本。开机按F11还可以从恢复分区启动,并可以还原系统,但还原完成重启时仍旧从恢复分区启动,查看分区表有问题,最前面有一个小的分区,后面是扩展,最后面是恢复分区,恢复操作时恢复到了第一逻辑分区,用DISKGEN把扩展分区转为主分区,并设为活动,开机表面为黑屏,特别郁闷。 试了N次之后,把除了恢复分区之外的分区全删掉,然后,只建一个主分区,把这个主分区设为活动,然后用G4D引导恢复分区的BOOTMGR,成功引导,开始恢复操作,但悲具就发生了,提示恢复操作错误,再次重启的时候,发现,恢复分区无法引导了,查看文件时发现,恢复到备份分区了,晕死。彻底玩完了。
回复

使用道具 举报

20#
发表于 2011-1-30 14:37:05 | 只看该作者
希望能有人出个修改WEE内置菜单的小程序,象修改G4D内置工作间的GRLDR_Editer那样,这样就方便了。
回复

使用道具 举报

21#
 楼主| 发表于 2011-1-30 15:08:00 | 只看该作者
原帖由 xianglang 于 2011-1-30 14:37 发表
希望能有人出个修改WEE内置菜单的小程序,象修改G4D内置工作间的GRLDR_Editer那样,这样就方便了。


目前的weesetup就有这样的功能啊,
修改你的wee63.mbr
weesetup -i wee63.mbr -s menu.lst -o wee63_new.mbr

weesetup -i wee63.mbr -s menu.lst -o wee63.mbr

直接使用内置的
weesetup -s menu.lst -o wee63.mbr
回复

使用道具 举报

22#
发表于 2011-1-31 10:52:51 | 只看该作者
原帖由 chenall 于 2011-1-30 15:08 发表


目前的weesetup就有这样的功能啊,
修改你的wee63.mbr
weesetup -i wee63.mbr -s menu.lst -o wee63_new.mbr

weesetup -i wee63.mbr -s menu.lst -o wee63.mbr

直接使用内置的
weesetup -s menu ...


呵呵……习惯了图形界面,命令行用起来很不方便啊,特别是要改不同目录下的,很烦的——如果WEESETUP有图形界面就更好了。
回复

使用道具 举报

23#
 楼主| 发表于 2011-2-17 20:35:18 | 只看该作者
更新了一下,内置最新版的WEE63.MBR

添加了 -l 参数用于列出磁盘列表。
回复

使用道具 举报

24#
发表于 2011-2-18 07:24:44 | 只看该作者
两个问题请教:1,如何知道主板是否支持EBIOS?2,WEE和GRUB相比区别和优点是什么?
回复

使用道具 举报

25#
发表于 2011-2-18 08:55:09 | 只看该作者
@chenall:
  

struct fb_mbr m;
   size = xd_size (xd);
   if (size == XD_INVALID_SIZE)
    goto quit;

   if (xd_read (xd, (char *) &m, 1))
    goto quit;


描红处似乎可以精简不要。

[ 本帖最后由 zxw 于 2011-2-18 09:00 编辑 ]
回复

使用道具 举报

26#
发表于 2011-2-18 11:03:49 | 只看该作者

回复 #24 wenliangyu 的帖子

>>> 1,如何知道主板是否支持EBIOS?

在 DOS 下执行 DEBUG 作个简单测试即可。用 int13h/ah=42h 读取硬盘MBR扇区,如果成功,就表明支持 EBIOS。也可以用 int13h/ah=41h 来测试是否支持 EBIOS,这个更简单一点(参见 Ralf Brown's Interrupt List)。进入 grub4dos 也能很容易知道某个磁盘是不是支持 EBIOS,用 geometry 命令即可。如果 geometry 命令显示出 CHS 字样,则表示不支持 EBIOS,而如果显示出 LBA 字样,则表示支持 EBIOS。

同一块主板对于不同的设备,采取不同的支持策略。比如,对于硬盘,肯定支持 EBIOS,否则无法访问超过 8.4G 的那些扇区,也就不能可靠地支持微软的操作系统的启动了。CHS 模式最大只能访问 8.4G 的扇区。而对于 U 盘,尤其是闪存盘,由于容量相对较小,所以,某些厂商的 BIOS 不支持 U 盘的 EBIOS。当然,此时在 BIOS 之下最大只能访问 8.4G了,甚至更少,因为 C/H/S 可能并非同时取得最大值 1024/255/63。

我测试过一些 DELL 的台式机,它们在 USB 上似乎大多数都支持 EBIOS。也测试过少数笔记本,印象中觉得笔记本大多都支持 U 盘的 EBIOS。

U 盘容量的不断增加,或许能够从某种程度上促使 BIOS 制造商逐渐支持 U 盘 EBIOS。

>>> 2,WEE和GRUB相比区别和优点是什么?

区别和优缺点分析:

--Wee 不支持 CHS,而 GRUB4DOS 支持 CHS。因此 Wee 目前不适合大范围应用于 U 盘。
--Wee 严格要求主板 BIOS 的 INT15 支持 EAX=E820h 的内存规范,而 grub4dos 并非严格要求这一点。
--Wee 的内核小,只有 63 扇区,可以全部嵌入 MBR。而 grub4dos 内核体积大,无法全部嵌入 MBR。
--与 grub4dos 相比,Wee 的功能少。比如,Wee 只支持 FAT/NTFS/EXT2/3/4 这几个文件系统,而grub4dos则支持许许多多 Linux 的文件系统。Wee 不支持 BSD 等内核的直接启动(但当然可以通过加载其引导扇区等众多的手段来间接启动),Wee 也不支持 multi-boot 格式内核的直接启动。对于非微软的系统来讲,Wee 只支持 Linux 内核的直接启动,其他的统统都不支持(比如,Wee 不支持 GRUB2 中的 Core.img 的启动)。Wee 不支持 BSD 的特殊分区设计,即 grub4dos 中形如 (hd0,0,a) 格式的分区(在 Windows 社区中呆了很多年,发现 Windows 用户通常接触不到像 (hd0,0,a) 这样的分区)。Wee 没有内置的 map 命令,但 Wee 可以调用 syslinux 中的 memdisk 来支持内存盘的仿真(这是 Roy 的发现,非常感谢)。Wee 也没有内置的 partnew 命令,甚至连 cat、dd、write 这样的内置命令也没有。希望将来有人能够以外部命令的方式来实现。
--特别提示,Wee 不支持 ISO9660 光盘文件系统,也不支持诸如 PXE 和 (ud)、(nd) 之类的文件系统,但支持 (md) 和 (rd) 设备。
--目前 Wee 不支持 GPT 分区格式。最新版的 grub4dos 已经开始支持 GPT 分区格式。
回复

使用道具 举报

27#
 楼主| 发表于 2011-2-18 15:39:15 | 只看该作者
原帖由 zxw 于 2011-2-18 08:55 发表
@chenall:
  

描红处似乎可以精简不要。


嗯,这个也可以删除。

这些都是直接抄fbinst的。。。
回复

使用道具 举报

28#
发表于 2011-2-26 16:14:30 | 只看该作者
刚才试了下用 weesetup -i wee63.mbr -s menu.lst -o wee63_new.mbr 将一个670字节的菜单文件导入到 wee63.mbr 中去,结果发觉其大小由30.9KB 增大到了31.5KB,用UE打开一看,新加入菜单的文件后面写入了一大段00,希望在下一个版本改进一下。
回复

使用道具 举报

29#
 楼主| 发表于 2011-2-26 18:08:26 | 只看该作者
这是固意的,刚好是63个扇区大小.
回复

使用道具 举报

30#
发表于 2011-2-26 22:26:17 | 只看该作者
原来是这样啊……………………
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-22 14:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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