无忧启动论坛

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

63S-GRUB:63个扇区的GRUB(可嵌入0磁道)【2010.06.18】

[复制链接]
31#
 楼主| 发表于 2010-3-9 08:52:52 | 显示全部楼层
恩,能不能详细说一下你所期望的“绝对扇区引导”是怎样的功能??用在什么情境??GRUB4DOS是不是已经有类似功能??
回复

使用道具 举报

32#
 楼主| 发表于 2010-3-9 08:53:39 | 显示全部楼层
原帖由 zjq20032006 于 2010-3-8 23:22 发表
可否考虑写入ROM去?


这个我就不懂了 :)
回复

使用道具 举报

33#
 楼主| 发表于 2010-3-9 09:41:35 | 显示全部楼层
原帖由 天涯海角1216 于 2010-3-9 09:23 发表

现在的GRUB已经有了这样的功能了,比如分区表损坏无法进入系统或PE,可以用此63S-GRUB加载存放在硬盘剩余扇区的PLOP.BIN(位置在123456扇区,大小占用88个扇区,用    chainloader (hd0)123456+88  )或启动本地硬盘上功能完善的GRLDR启动U盘(老电脑BISO中无USB选项)进行恢复分区表和系统了........


哦,明白了。回头看一下 grub4dos 的代码,试试能不能移植过来。
回复

使用道具 举报

34#
 楼主| 发表于 2010-3-9 12:23:06 | 显示全部楼层
原帖由 viptks 于 2010-3-9 10:25 发表
晕FIND命令为啥忽略FD啊= =

这个问题我也犹豫了很久。在电脑上没有接软驱、也没有接被认作fd的u盘,那么,搜索 fd 时会比较慢,如果主板 bios 比较 buggy ,还有可能挂死。

又考虑到 63s-grub 设计目标主要面向硬盘,以及空间限制(只有63个扇区),反复权衡,最终选择忽略fd。

欢迎大家发表看法,如果多数人认为不该忽略fd,那就加上它。
回复

使用道具 举报

35#
 楼主| 发表于 2010-3-9 12:23:54 | 显示全部楼层
原帖由 dpxqs 于 2010-3-9 11:52 发表
安装后怎样复原


直接安装其他引导器,覆盖掉即可。
回复

使用道具 举报

36#
 楼主| 发表于 2010-3-9 15:09:38 | 显示全部楼层

2010.03.09

上传了一个测试版,更新如下:

1. 加入 map 命令;
2. 调整命令行和 boot 执行后 字符的颜色;
3. checkkey() 和 getkey() 中加入 hlt 指令,以降低cpu使用率。

这次加入的 map 命令不是 grub4dos 的 map ,而只是 gnu grub 原带的、最基本的磁盘映射功能,只能用来交换硬盘序号,比如 hd0 和 hd1 互换。
回复

使用道具 举报

37#
 楼主| 发表于 2010-3-10 14:32:54 | 显示全部楼层

2010.03.10

放出 1.0 版和源码,祝大家玩的开心 :)

[ 本帖最后由 PTPTPTPTPTPT 于 2010-3-10 14:34 编辑 ]
回复

使用道具 举报

38#
 楼主| 发表于 2010-3-11 13:59:02 | 显示全部楼层
原帖由 gzdiky 于 2010-3-11 12:57 发表
我发现重装GHOST 系统也有时候会启动不了。连菜单都没了。太不稳定了。不敢用了。


“重装GHOST 系统”指的是用 ghost 恢复系统??恢复到分区还是整个硬盘?

启动不了的具体表现是什么??
回复

使用道具 举报

39#
 楼主| 发表于 2010-3-12 09:12:49 | 显示全部楼层
可否贴一下你的硬盘分区信息?最好用 diskgen 抓图。

我昨天亲自试了下,用 win32 版的 ghost 11.5 恢复xp系统到C盘,没有损坏 63s-grub 的引导啊。

你恢复的系统是不是 vista 或 win7 ?

顺便请教各位达人, ghost 恢复分区时会往0磁道写东西吗??
回复

使用道具 举报

40#
 楼主| 发表于 2010-3-12 12:39:07 | 显示全部楼层
原帖由 zjq20032006 于 2010-3-12 12:11 发表
map (hd0) (hd1)
map (hd1) (hd0)
启动 hd1 上的系统失败。


呵呵,还真有人遇到了。我昨天也刚刚发现,正在查找原因。
  1. 某些时候,用 63s-grub
  2. map (hd0) (hd1)
  3. map (hd1) (hd0)
  4. 之后,去启动 hd1 上的系统,会失败。

  5. 此时 map 操作其实已经成功,在 grub 里面可以看到,hd1 和 hd0 已经交换了,然而,chainloader +1
  6. 某些分区,却无法启动。
  7. 用 ubuntu 原版的 grub ,也有同样的问题。

  8. 然而在同样的条件下,用 grub4dos  map,或用 xorldr “从下一设备启动” ,都能启动成功。

  9. 看来这个问题源自 ubuntu 9.04 的 grub 。

  10. 这个过程中用到了 set_int13_handler (bios_drive_map) 。不知是由于 grub4dos
  11. 改进了set_int13_handler(),还是其他某些原因??
复制代码
现在的 map 代码完全取自 ubuntu 9.04 grub ,感觉好像 map 得不够彻底。但也不知道到底缺了什么。

zjq20032006 你的 hd1 分区情况如何?其中装的什么系统,什么引导器??最好用 diskgen 抓个图。

另外,还可以试试在
map (hd0) (hd1)
map (hd1) (hd0)
之后,加上一句 root (hd1,x) —— x是要启动的分区
然后再 chainloader (hd1,x)+1,或者直接 ntldr 其中的 ntldr/bootmgr ,看看结果如何??

我这里把(hd1)装上 nt5 的 mbr ,(hd1,0)装上xp,是可以启动的。

[ 本帖最后由 PTPTPTPTPTPT 于 2010-3-12 12:45 编辑 ]
回复

使用道具 举报

41#
 楼主| 发表于 2010-3-12 20:29:55 | 显示全部楼层
系统呢??win7?vista ?装在 (hd1,0) 吗?

(hd1,0) 的起始扇区是 0-1-1 还是 0-32-33 ?

启动失败的具体表现是什么?

[ 本帖最后由 PTPTPTPTPTPT 于 2010-3-12 20:31 编辑 ]
回复

使用道具 举报

42#
 楼主| 发表于 2010-3-13 00:22:11 | 显示全部楼层
除了 请按任意键继续 ,还有其它提示信息吗??
回复

使用道具 举报

43#
 楼主| 发表于 2010-3-15 00:04:07 | 显示全部楼层
原帖由 wenliangyu 于 2010-3-14 16:11 发表
请教,源码怎么下载?没搞懂下载方式。


安装 svn 客户端后,运行下面的命令就会自动下载
  1. svn checkout http://63s-grub.googlecode.com/svn/trunk/ 63s-grub
复制代码
回复

使用道具 举报

44#
 楼主| 发表于 2010-3-15 20:01:26 | 显示全部楼层
原帖由 zlgs 于 2010-3-13 01:33 发表
这个程序希望更新下去
小程序帮大忙


谢谢鼓励,我会尽力的 :)
回复

使用道具 举报

45#
 楼主| 发表于 2010-3-15 21:06:29 | 显示全部楼层
原帖由 tercel0624 于 2010-3-15 20:46 发表
若要用它启动USB-HDD应该怎么改?


什么意思??
回复

使用道具 举报

46#
 楼主| 发表于 2010-3-19 14:05:57 | 显示全部楼层
原帖由 135956 于 2010-3-19 13:49 发表
装入硬盘0磁道,不受重新分区和格式化的影响。
是不是说,这个东西是完全安装到mbr上的?
不过,重新分区和格式化似乎是会改写mbr的呀,windows的安装也过程也会改写mbr的。


重新分区会修改分区表,但不会影响 mbr 中的引导程序。(或许某些分区工具会向0磁道扇区写东西??)

重装 windows 就没办法了。不过此时只是第一扇区被覆盖,启动菜单、配置信息都还在,只要用 63sgrub_inst重新装一下(安装时保留菜单扇区内容)就行了。
回复

使用道具 举报

47#
 楼主| 发表于 2010-3-21 17:07:33 | 显示全部楼层
原帖由 jianliulin 于 2010-3-21 16:18 发表
报告bug ,当菜单有磁盘交换时
map (hd0) (hd1)
map (hd1) (hd0)
如果进入菜单失败(如hd1 不存在等)情况下,再次选择其他菜单会失败,如果进入命令行map(hd1) (hd0) 则回复正常


恩,谢谢报告,目前 map 命令确实有缺陷,因为涉及到一些底层的东西,个人能力有限,短期内难以解决,只能请大家在使用时小心一些,避开 bug 。

期望能有实模式汇编高手来帮忙解决一下。


原帖由 jianliulin 于 2010-3-21 16:18 发表
另外,中间如果有一项菜单为空,后面的菜单就都不显示了


呵呵,老兄用的很细致。确实有这个现象,不过这不是 bug ,就是这样设计的。因为0磁道空间有限,为了尽量节省空间,菜单处理函数就写的比较简单。
回复

使用道具 举报

48#
 楼主| 发表于 2010-3-22 19:09:44 | 显示全部楼层
呵呵,一开始是想做成那样的。后来觉得,既然是 grub ,应该接近 grub 的风格,就搞成现在这样了。

大家可以提出自己的意见,讨论确定一个令大部分人满意的界面。
回复

使用道具 举报

49#
 楼主| 发表于 2010-3-24 14:33:30 | 显示全部楼层

回复 #122 jianliulin 的帖子

“不知按F11进入bios选择启动磁盘的界面好不好”
呵呵,当然好,不过,要实现这个,需要先完善 map 命令。如 118 楼所说,难啊。。。


“用户可以定义方框的大小,和线条的颜色,以及整个屏幕的背景色“

你说的方框是指屏幕边缘的大框呢,还是启动菜单边缘的框??

这些虽然有可能实现,但会涉及到能否完整显示所有内容(包括提示信息和菜单),需要处理很多细节。“自定义整个屏幕的背景色”不好办,会造成选择启动项时屏幕闪烁。

这些要求对于一个只有63扇区并且包括了交互式命令行并且能自动补全的程序来讲,怕是有点要求过高了。。。

还是确定一个固定的样式吧
回复

使用道具 举报

50#
 楼主| 发表于 2010-3-25 16:47:03 | 显示全部楼层
颜色还是要有的。因为 选中项 与 其他项 得有所区别,才能看出选了哪个,这就必须要有设定颜色的函数。

颜色可以根据喜好自己设定。菜单可以设成黑白的。如果不想要顶部和底部的字,把标题的前景色和背景色都设为黑色即可。

不过 setcolor 命令将来肯定要去除。

NTLDR 和 CHAINLOADER 揉在一起的话,会增加编程的复杂性,也会增大体积。他俩分开,逻辑上也更清晰。
回复

使用道具 举报

51#
 楼主| 发表于 2010-3-25 19:00:34 | 显示全部楼层
原帖由 yichya 于 2010-3-25 18:38 发表
问一下LZ准备出64KB的BIOS模块版吗?


主要是俺不懂怎么搞  : (
回复

使用道具 举报

52#
 楼主| 发表于 2010-3-28 16:31:05 | 显示全部楼层

回复 #128 wenliangyu 的帖子

在 linux 下的话,是在终端里运行上述命令。

我没在 windows 下操作过。不过原理都是类似的。建议你先学习一下 svn 相关知识,再找 TortoiseSVN 的文档看看,应该就能明白

[ 本帖最后由 PTPTPTPTPTPT 于 2010-3-28 16:35 编辑 ]
回复

使用道具 举报

53#
 楼主| 发表于 2010-6-6 23:10:42 | 显示全部楼层
有 pre—stage2 就足够了,所有的功能都在它里面。stage2 的前 512 字节对于放在 bios 中的 grldr 无关紧要。
回复

使用道具 举报

54#
 楼主| 发表于 2010-6-7 13:11:39 | 显示全部楼层
原帖由 jianliulin 于 2010-6-7 09:27 发表
to  PTPTPTPTPTPT
最新版的63S-GRUB 是1.2版吗,还是还有别的版本


是的。1.2之后未发布过更新的二进制版本。

源代码有过更新,也再酝酿一些改进,但是,最大的问题 —— map 命令的 bug(详见见 101 楼)仍旧无法解决,其它改进也就没什么意思了。期待汇编高手帮忙解决。
回复

使用道具 举报

55#
 楼主| 发表于 2010-6-16 20:55:33 | 显示全部楼层
也来冒个泡。。呵呵

近期准备更新一下。首先是菜单扇区的格式:前 496 字节用于存放启动项;启动项条数不再固定,最多可容纳20条;最后16字节的前4个字节,以二进制码的形式存放四个整数(倒计时、默认启动项、前景色、背景色);后面的字节保留备用。

之前一直纠结于 map 的 bug ,难以解决,心灰意懒。不点兄最近的 mini grldr 给了我启发:干脆就不要map 命令,也没什么大碍。因为新一代的引导器 grub2 、bootmgr 都不再需要 map 了,只要设定一下 root 分区,不管是在第一块硬盘还是在第n硬盘,不管是逻辑分区还是主分区,bootmgr / grub2 (core.img) 都可以启动。

不过,要启动 grub2 (core.img) ,就需要有访问 ext2/3/4 分区的能力,因此要进一步精简代码,加入 etx2fs 支持。
回复

使用道具 举报

56#
 楼主| 发表于 2010-6-17 00:16:16 | 显示全部楼层
当初作这个 63S-GRUB ,主要是因为 不点兄一开始设计的 mini grldr 不能满足我的需求(比如 不能访问任意子目录),详细讨论见 http://bbs.znpc.net/viewthread.php?tid=5838  和 http://bbs.znpc.net/viewthread.php?tid=5840 。里面也谈到了各自的设计目标。

目前来看,mini grldr 仍旧不能满足我的需求:缺少菜单系统,命令行不支持自动补全,不支持 GPT 分区表。因此才继续做 63S-GRUB。如果将来某天 mini grldr 能够满足需求,63S-GRUB 也就没必要继续了。

63S-GRUB 的设计目标也是用在硬盘上,不过倒也没有刻意摒弃 CHS 。但到底能不能正常工作,还需要测试。我不知如何获得纯 CHS 环境。您如果有条件,可以试一下。
回复

使用道具 举报

57#
 楼主| 发表于 2010-6-17 00:18:20 | 显示全部楼层
原帖由 tdq868xin 于 2010-6-16 22:55 发表
63S-GRUB与 mini grldr的各自发展方向是什么 ?
不合并在一起开发吗?
“不点"大师提醒mini grldr“不要安装在 U 盘的 MBR 上”,“PT”大师的“63S-GRUB”也存在“只支持 LBA 模式,而完全不支持 CHS 模式” ...



当初作这个 63S-GRUB ,主要是因为 不点兄一开始设计的 mini grldr 不能满足我的需求(比如 不能访问任意子目录),详细讨论见 http://bbs.znpc.net/viewthread.php?tid=5838  和 http://bbs.znpc.net/viewthread.php?tid=5840 。里面也谈到了各自的设计目标。

目前来看,mini grldr 仍旧不能满足我的需求:缺少菜单系统,命令行不支持自动补全,不支持 GPT 分区表。因此才继续做 63S-GRUB。如果将来某天 mini grldr 能够满足需求,63S-GRUB 也就没必要继续了。

63S-GRUB 的设计目标也是用在硬盘上,不过倒也没有刻意摒弃 CHS 。但到底能不能正常工作,还需要测试。我不知如何获得纯 CHS 环境。您如果有条件,可以试一下。
回复

使用道具 举报

58#
 楼主| 发表于 2010-6-17 11:41:59 | 显示全部楼层

回复 #140 tdq868xin 的帖子

呵呵,请千万不要再称大师,实在不敢。直呼 pt 即可 :)

63S-GRUB 取的是 ubuntu 9.04 的 grub 源码,该版本 grub 支持 GPT ,因此这个特性就继承下来了。
回复

使用道具 举报

59#
 楼主| 发表于 2010-6-17 11:44:44 | 显示全部楼层
原帖由 混合 于 2010-6-17 01:52 发表
希望能加强find功能,有支持&& 和 || 逻辑符号或者像微型grub一样:尝试启动..再尝试启动..失败进入命令行


恩,这个确实有用。有空时琢磨一下。
回复

使用道具 举报

60#
 楼主| 发表于 2010-6-17 15:54:08 | 显示全部楼层
今天编译的
63s-grub-2010-06-17.zip (18.85 KB, 下载次数: 57)

改进了菜单系统,最多可有20个启动项。菜单扇区格式发生了变化,如下:

前 496 字节用于存放启动项,最多可容纳20个;
启动项位置不再固定;
两个启动项之间用2个或2个以上的空字节("00")隔开;
一个启动项内的多条语句用一个空字节("00")间隔,第一条语句为标题;
最后16字节的前4个字节,以二进制码的形式存放四个整数(倒计时、默认启动项、头尾颜色、菜单颜色);后面的字节保留备用。


需要提醒诸位的是,pauly 大侠之前为 63S-GRUB 写的安装程序尚不能兼容新的菜单格式,各位不要误用。盼 pauly 大侠有空的时候 升级一下安装程序,不胜感激  : )
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 15:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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