无忧启动论坛

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

[已解决] 非常希望grub4dos的开发者增加对bios方式启动gpt分区系统的支持

  [复制链接]
跳转到指定楼层
1#
发表于 2014-8-15 09:13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qj_tzy 于 2014-8-23 10:25 编辑

非常希望grub4dos的开发者增加对bios方式启动gpt分区系统的支持

目前,我已在小于2TG的gpt分区单硬盘上,采用bios方式+xorboot+grub4dos,成功启动了安装在gpt分区的winxp、win7_x32、win7_x64、win8_x64系统,及该4系统存放在gpt分区的vhd/vhdx系统。其中,win7_x64、win8_x64及其VHD/vhdx系统,还能以uefi方式启动。但仍有以下问题未解决:

1.如何用grub4dos判断是gpt分区硬盘还是mbr分区硬盘,以根据判断结果采取不同的后续操作。

2.如何用grub4dos隐藏及显现gpt分区,以在启动某一gpt分区操作系统时,隐藏另一gpt分区操作系统所在分区。

3.win7/win8的原生VHD系统用grub4dos+ntboot按ntboot nt6=(hdx,y)/dir/xxx.vhd方式不能启动,提示读取BCD出错。于是制作了ima包启动成功,但此法是启动固定盘符、固定目录、固定VHD文件名的VHD系统,不具有通用性。

为此,希望:

1.提供一grub4dos安装工具,可将grub4dos的主启动代码,安装在gpt分区硬盘的0扇区,其余部分存放在esp分区的根目录或某一子目录下的grldr中。

2.增加一grub4dos命令,用于判断是gpt分区硬盘还是mbr分区硬盘。
3.可用hide、unhide、parttype或其他命令隐藏、显现gpt分区。
4.完善ntboot,使其能够启动存放在gpt分区的win7/win8原生VHD系统。

若如此,非常感谢!

注:
1.第2与第3个问题,已由chenall大等解决,详见《BIOS方式安装、引导GPT分区单硬盘中的win7和win8系统问题》1楼末尾的说明
http://bbs.wuyou.net/forum.php?m ... &fromuid=349593(出处: 无忧启动论坛)

2.第4个问题,chenall大已在帖子《用grub4dos+ntboot不能启动存放在gpt分区中的原生VHD系统的替代方法》9楼完善了,非常感谢C大!
http://bbs.wuyou.net/forum.php?m ... &fromuid=349593


推荐
 楼主| 发表于 2014-8-16 17:05:46 | 只看该作者
2012sillian 发表于 2014-8-16 12:15
楼主可否分享一下“bios方式+xorboot+grub4dos”启动GPT分区的具体方法?
非常期待!谢谢!

已发贴,请见:
《BIOS方式引导、安装GPT分区的XP系统用户经验汇总》
http://bbs.wuyou.net/forum.php?m ... &fromuid=349593
(出处: 无忧启动论坛)


《BIOS方式安装、引导GPT分区单硬盘中的win7和win8系统问题》
http://bbs.wuyou.net/forum.php?m ... &fromuid=349593
(出处: 无忧启动论坛)

点评

www.bxwx.la/b/0/1/ 极品修真强少  发表于 2014-9-4 15:15
回复

使用道具 举报

2#
发表于 2014-8-15 18:56:45 | 只看该作者
楼主真是MS系统引导高手,NTBOOT是C大的亲儿子,C大一定会完善对GPT的支持,让你随意引导GPT分区下的VHD/VHDX,就像你说的具有高度的灵活性.(这也是我喜欢NTBOOT的原因)
回复

使用道具 举报

3#
发表于 2014-8-16 12:15:04 | 只看该作者
楼主可否分享一下“bios方式+xorboot+grub4dos”启动GPT分区的具体方法?
非常期待!谢谢!

点评

已发贴,请见: 《BIOS方式引导、安装GPT分区的XP系统用户经验汇总》 http://bbs.wuyou.com/forum.php?mod=viewthread&tid=337386&fromuid=349593 (出处: 无忧启动论坛) 《BIOS方式安装、引导GPT分区单硬盘  详情 回复 发表于 2014-8-16 17:05
待整理一下我的安装和启动过程后,再贴出  详情 回复 发表于 2014-8-16 15:57
回复

使用道具 举报

4#
发表于 2014-8-16 12:44:31 | 只看该作者
新版 grldr  阴茎支持gpt。

问题是, XP-Loader,DOS及其Loader 等 不支持。
后续启动失败。
目前只能当个UD用。 grldr 将里面的IMG  map成磁盘。
再接着继续启动。

UD也是不能直接启动DOS、XP。必须MAP出来。



回复

使用道具 举报

5#
 楼主| 发表于 2014-8-16 15:57:49 | 只看该作者
2012sillian 发表于 2014-8-16 12:15
楼主可否分享一下“bios方式+xorboot+grub4dos”启动GPT分区的具体方法?
非常期待!谢谢!

待整理一下我的安装和启动过程后,再贴出
回复

使用道具 举报

7#
发表于 2014-8-17 14:34:25 | 只看该作者
2.判断的话可以用NTBOOT里面的方法
root (hdx,y)
checkrange 0xee read 0x8334 && echo gpt

3.新的版本已经 上传,应该可以正常显示隐藏gpt分区,我只用qemu测试了下.
有条件可以测试下,测试之前最好先备份好重要数据..

用hide/unhide命令.至于parttype对于gpt分区无效,新的版本已经禁止parttype对gpt分区的操作,以防止出错.



点评

经我测试,隐藏两个gpt分区,显现一个gpt,并启动该分区系统,但启动后该两个分区仍可见,我是用grub4dos4.5C-2014-8-17版的hide (hd0,3)、hide (hd0,4)、unhide (hd0,6)命令测试的。  详情 回复 发表于 2014-8-17 20:55
非常感谢,不知新版本在哪里下载,我下载测试后再反馈!  详情 回复 发表于 2014-8-17 14:46
回复

使用道具 举报

8#
 楼主| 发表于 2014-8-17 14:46:50 | 只看该作者
chenall 发表于 2014-8-17 14:34
2.判断的话可以用NTBOOT里面的方法
root (hdx,y)
checkrange 0xee read 0x8334 && echo gpt

非常感谢,不知新版本在哪里下载,我下载测试后再反馈!

点评

http://grub4dos.chenall.net/  发表于 2014-8-17 14:48
回复

使用道具 举报

9#
发表于 2014-8-17 18:41:58 | 只看该作者
谢谢!辛苦了!学习了。
回复

使用道具 举报

10#
 楼主| 发表于 2014-8-17 20:55:43 | 只看该作者
chenall 发表于 2014-8-17 14:34
2.判断的话可以用NTBOOT里面的方法
root (hdx,y)
checkrange 0xee read 0x8334 && echo gpt


经我测试,隐藏两个gpt分区,显现一个gpt分区,并启动该分区系统,但启动后该两个分区仍可见,我是用grub4dos4.5C-2014-8-17版的hide (hd0,3)、hide (hd0,4)、unhide (hd0,6)命令测试的。
回复

使用道具 举报

11#
发表于 2014-8-18 08:34:53 | 只看该作者
看来必须重新要计算GPT的两个CRC表才行了,这个就暂时先放着吧,改天有空再处理.

点评

感谢您的不懈努力,又推出grub4dos新版本。 我下载了grub4dos -0.45C-2014-8-19,对支持GPT分区隐藏的新修改情况进行了测试,结果如下: 系统启动后,用hide命令隐藏的两个gpt分区在系统中仍可见。用bootice的分  详情 回复 发表于 2014-8-21 13:17
回复

使用道具 举报

12#
 楼主| 发表于 2014-8-21 13:17:18 | 只看该作者
chenall 发表于 2014-8-18 08:34
看来必须重新要计算GPT的两个CRC表才行了,这个就暂时先放着吧,改天有空再处理.

感谢您的不懈努力,又推出grub4dos新版本。

我下载了grub4dos -0.45C-2014-8-19,对支持GPT分区隐藏的新修改情况进行了测试,结果如下:
系统启动后,用hide命令隐藏的两个gpt分区在系统中仍可见。用bootice的分区管理察看,不能列显gpt分区硬盘的分区信息了,我就进系统的磁盘管理修改gpt分区的盘符后,再进bootice的分区管理可列显盘符信息了,只见用hide命令隐藏的两个gpt分区上打上了隐藏标志"H",但该两个分区中的内容可见。

点评

目前对GPT的修改还不完善,只改了一个分区表, 经过我的测试,要实现该功能,需要改两个分区表(一个是备份的),然后还要修改对应GPT头的两个CRC校验才行的. 另外如果只修改了两个分区表没有修改CRC校验,则WINDOWS将  详情 回复 发表于 2014-8-21 13:35
回复

使用道具 举报

13#
发表于 2014-8-21 13:35:05 | 只看该作者
qj_tzy 发表于 2014-8-21 13:17
感谢您的不懈努力,又推出grub4dos新版本。

我下载了grub4dos -0.45C-2014-8-19,对支持GPT分区隐藏的 ...

目前对GPT的修改还不完善,只改了一个分区表,

经过我的测试,要实现该功能,需要改两个分区表(一个是备份的),然后还要修改对应GPT头的两个CRC校验才行的.

另外如果只修改了两个分区表没有修改CRC校验,则WINDOWS将无法识别该磁盘,提示未初使化.

改回来之后正常.

点评

谢谢您的指点,原来是这样啊。那我随时关注您发布的grub4dos新版本。  详情 回复 发表于 2014-8-21 14:34
回复

使用道具 举报

14#
 楼主| 发表于 2014-8-21 14:34:25 | 只看该作者
chenall 发表于 2014-8-21 13:35
目前对GPT的修改还不完善,只改了一个分区表,

经过我的测试,要实现该功能,需要改两个分区表(一个是备份 ...

谢谢您的指点,原来是这样啊。那我随时关注您发布的grub4dos新版本。
回复

使用道具 举报

15#
发表于 2014-8-21 23:28:35 | 只看该作者
本帖最后由 chenall 于 2014-8-22 10:47 编辑

上传一个测试版,

有可能会由于写入错误,导致硬盘数据丢失.

请先备份重数据,或者在没有重要内容的硬盘上测试.

该版本尝试完善对GPT分区unhide/hide的支持,

由于gpt的分区表安全性比较高,所以修改的话会比较麻烦,并且需要读取所有分区表重新计算对应CRC(需要读取至少66个扇区太概32KB数据),还要计算4个CRC值,

所以对于GPT分区的处理比如一个hide可能会有几秒的延迟,这是正常情况,并且暂时没有什么更好的办法提速.

另个呢,不建议经常修改分区表.

对于GPT分区,若要隐藏所有分区,最好的办法是直接修改CRC校验值,只要校验不通过,WINDOWS就识别不了.需要显示的时候再改回来就行了

点评

已下载测试,结果如下: 在bootice可见gpt分区信息及隐藏标志H了。但用windows系统的硬盘管理功能可添加被隐藏分区的盘符,添加后,即可见该GPT分区中的文件了。  详情 回复 发表于 2014-8-22 00:05
回复

使用道具 举报

16#
 楼主| 发表于 2014-8-22 00:05:27 | 只看该作者
chenall 发表于 2014-8-21 23:28
上传一个测试版,

有可能会由于写入错误,导致硬盘数据丢失.

已下载测试,结果如下:

在bootice可见gpt分区信息及隐藏标志H了。但用windows系统的硬盘管理功能可添加被隐藏分区的盘符,添加后,即可见该GPT分区中的文件了。

点评

再次完善了一下,新的隐藏会顺便加上OEM属性,也就是不能手动分配盘符. 另外parttype作用在GPT分区上时,直修修改分区属性.也就是说可以使用parttype修改分区属性,当然了对GPT不了解就不要使用parttype命令修改,因为  详情 回复 发表于 2014-8-22 10:54
回复

使用道具 举报

17#
发表于 2014-8-22 10:54:26 | 只看该作者
qj_tzy 发表于 2014-8-22 00:05
已下载测试,结果如下:

在bootice可见gpt分区信息及隐藏标志H了。但用windows系统的硬盘管理功能可添 ...

再次完善了一下,新的隐藏会顺便加上OEM属性,也就是不能手动分配盘符.

另外parttype作用在GPT分区上时,直修修改分区属性.也就是说可以使用parttype修改分区属性,当然了对GPT不了解就不要使用parttype命令修改,因为可能会导致分区无法访问.

grub4dos-0.4.5c-2014-08-22.7z

257.72 KB, 下载次数: 10, 下载积分: 无忧币 -2

点评

若您能在百忙之中对 grub4dos-0.4.6a-2014-08-19版 支持gpt分区 的隐藏 等功能完善后发布,就非常感谢了,因我非常需要 同时支持gpt分区功能和含碎片文件仿真功能的grub4dos。  详情 回复 发表于 2014-8-30 13:08
您在http://grub4dos.chenall.net/发布的grub4dos-0.4.5c-2014-08-22.7z,具有支持gpt分区隐藏、显现等功能,为我解决了大问题,我非常喜欢,感谢您的不断付出! 只是我想确认一下,这个版本是否支持含有碎片的文  详情 回复 发表于 2014-8-26 17:55
我下载17楼的grub4dos进行测试的结果如下: 我在gpt分区硬盘划分5个分区分别安装了winxp/w2003/win7_x32/win7_x64/win8_x64系统,启动某系统时,就用unhide显现该分区,用hide隐藏其他4个分区,结果winxp/w2003/w  详情 回复 发表于 2014-8-22 13:10
回复

使用道具 举报

18#
 楼主| 发表于 2014-8-22 13:10:25 | 只看该作者
chenall 发表于 2014-8-22 10:54
再次完善了一下,新的隐藏会顺便加上OEM属性,也就是不能手动分配盘符.

另外parttype作用在GPT分区上时, ...


我下载17楼的grub4dos进行测试的结果如下:

我在gpt分区硬盘划分5个分区分别安装了winxp/w2003/win7_x32/win7_x64/win8_x64系统,启动某系统时,就用unhide显现该分区,用hide隐藏其他4个分区,结果winxp/w2003/win7_x32系统中只有2个分区打上的H标志,且为oem方式,其他2个分区未打H标志,可在磁盘管理中添加盘符;置于(hd0,2)分区的win8_x64系统隐藏了3个分区;置于(hd0,1)分区的win7_x64系统隐藏了4个分区。不知为何。
回复

使用道具 举报

19#
发表于 2014-8-22 13:28:23 | 只看该作者
因为提供的资料太少没有办法判断原因.

估计和你的菜单什么的有关系吧.

建议你命令行测试试一下.

点评

我用命令行测试后完全正常了,非常感谢,在您的不懈努力下,gpt分区的隐藏与显现的问题已经实现。 不过,我还有一个希望,那就是,若您认为有必要的话,是否可解决一下我在1楼提的第1个问题,即: 提供一g  详情 回复 发表于 2014-8-22 19:01
晚上用命令行再测试一下,然后再反馈  详情 回复 发表于 2014-8-22 15:02
回复

使用道具 举报

20#
 楼主| 发表于 2014-8-22 15:02:38 | 只看该作者
chenall 发表于 2014-8-22 13:28
因为提供的资料太少没有办法判断原因.

估计和你的菜单什么的有关系吧.

晚上用命令行再测试一下,然后再反馈
回复

使用道具 举报

21#
 楼主| 发表于 2014-8-22 19:01:59 | 只看该作者
chenall 发表于 2014-8-22 13:28
因为提供的资料太少没有办法判断原因.

估计和你的菜单什么的有关系吧.


我用命令行测试后完全正常了,非常感谢,在您的不懈努力下,gpt分区的隐藏与显现的问题已经解决。

  不过,我还有一个希望,那就是,若您认为有必要的话,是否可解决一下我在1楼提的第1个问题,即:

  提供一grub4dos安装工具,可将grub4dos的主启动代码,安装在gpt分区硬盘的0扇区,其余部分存放在esp分区的根目录或某一子目录下的grldr中。

  若如此,grub4dos就完全可不再借助xorboot,而可直接安装在gpt分区硬盘中,启动gpt分区中的windows系统了。
回复

使用道具 举报

22#
发表于 2014-8-23 08:35:45 | 只看该作者
安装到GPT分区,这个以我的能力还做不到....

感觉直接修改wee会比较简单一些,不过我对汇编不熟,看不太懂,不知道该怎么改.只能等不点或其它人去做了.

点评

感谢chenall 、不点 两位大师的指点。 目前,有无直接将grub4dos启动代码写入gpt分区硬盘的工具,都不会影响grub4dos在gpt分区的使用,目前可用xorboot实现这点。以后pauly等大师也许会在不久将来对bootice进行完善  详情 回复 发表于 2014-8-23 10:14
回复

使用道具 举报

23#
发表于 2014-8-23 09:37:56 | 只看该作者
本帖最后由 不点 于 2014-8-23 09:41 编辑

我已经不适合再去学新知识了。我会在别的方面去学新知识,比如,数学啊,物理啊,历史啊,哲学啊,政治啊,等等,但不会是 EFI 啊,GPT 啊,这些。

大家知道,若干年前我写了 Linux 的 ext2 分区的 grldr 引导代码,只用一个扇区就做到了,并感到很兴奋。但是现在,我恐怕已经看不懂我写的代码了。yaya 在这方面比较强,对汇编语言比较熟练,能够填补由于我退出开发团队而造成的空缺。其实 chenall 也行,我当初的汇编基础与 chenall 完全一样,是从 0 开始学会的。还有一大批的人都可以,只是你们可能不愿意花时间去学罢了。从某种程度上说,汇编比 C 更容易学会。这是因为,汇编只需要学会一条一条的指令便可,而 C 语言的结构啊、概念啊,有一大堆,不太容易学会。顺便说,假如 chenall 遇到汇编语言的困难,我愿意提供帮助,只要我能力所及,我一定尽力。

点评

尝试编译了一个支持 GPT 分区的WEE, 修改了list_partitions的代码.尽量使用我自己了解的语句去写的. 测试发现可以正常访问GPT分区,但是有时候却不行,不知是什么原因. 测试,我是使用QEMU测试的,进入wee之后立  详情 回复 发表于 2014-8-28 17:53
回复

使用道具 举报

24#
 楼主| 发表于 2014-8-23 10:14:00 | 只看该作者
chenall 发表于 2014-8-23 08:35
安装到GPT分区,这个以我的能力还做不到....

感觉直接修改wee会比较简单一些,不过我对汇编不熟,看不太懂, ...

感谢chenall 、不点 两位大师的指点。
目前,有无直接将grub4dos启动代码写入gpt分区硬盘的工具,都不会影响grub4dos在gpt分区的使用,目前可用xorboot实现这点。以后pauly等大师也许会在不久将来对bootice进行完善后,就可将wee或grub4dos启动代码写入gpt硬盘进行启动了。

点评

这个应该比较简单,我之前给天涯海角也写过一段代码,从硬盘某个位置加载一定数量连续扇区的数据到内存某个位置,然后跳过去执行。 现在看来,这个代码还可以进行优化和通用化,就从硬盘某个位置加载一定数量的扇区  详情 回复 发表于 2014-8-23 10:26
回复

使用道具 举报

25#
发表于 2014-8-23 10:26:27 | 只看该作者
qj_tzy 发表于 2014-8-23 10:14
感谢chenall 、不点 两位大师的指点。
目前,有无直接将grub4dos启动代码写入gpt分区硬盘的工具,都不会 ...


这个应该比较简单,我之前给天涯海角也写过一段代码,从硬盘某个位置加载一定数量连续扇区的数据到内存某个位置,然后跳过去执行。
现在看来,这个代码还可以进行优化和通用化,就从硬盘某个位置加载一定数量的扇区数据到内存某个位置,然后跳转运行,这些参数可以由用户定制,从而启动 GRLDR,NTLDR,BOOTMGR 等等。这个引导程序必须小于 440 字节,有兴趣的朋友可以去实现它,但是目前看来,似乎 UEFI 才是方向

点评

嗯,太概就是这样的,谁去写一个呀, 其实就是类似于grub原版的grub_install功能.  详情 回复 发表于 2014-8-23 10:30
回复

使用道具 举报

26#
发表于 2014-8-23 10:30:19 | 只看该作者
Pauly 发表于 2014-8-23 10:26
这个应该比较简单,我之前给天涯海角也写过一段代码,从硬盘某个位置加载一定数量连续扇区的数据到内存 ...

嗯,太概就是这样的,谁去写一个呀,

其实就是类似于grub原版的grub_install功能.
回复

使用道具 举报

27#
 楼主| 发表于 2014-8-26 17:55:04 | 只看该作者
chenall 发表于 2014-8-22 10:54
再次完善了一下,新的隐藏会顺便加上OEM属性,也就是不能手动分配盘符.

另外parttype作用在GPT分区上时, ...

您在http://grub4dos.chenall.net/发布的grub4dos-0.4.5c-2014-08-22.7z,具有支持gpt分区隐藏、显现等功能,为我解决了大问题,我非常喜欢,感谢您的不断付出!

只是我想确认一下,这个版本是否支持含有碎片的文件仿真?我简单测试了一下,好像支持不好,我非常希望您能在该版本基础上完善一下这个方面的功能,谢谢!

点评

我已经在另外一个帖子反馈了map含碎片文件的问题,没有引起重视,我那个文件是9块碎片,grldr之前是可以map超过含9块碎片的文件的。  详情 回复 发表于 2014-8-26 18:29
回复

使用道具 举报

28#
发表于 2014-8-26 18:29:23 | 只看该作者
qj_tzy 发表于 2014-8-26 17:55
您在http://grub4dos.chenall.net/发布的grub4dos-0.4.5c-2014-08-22.7z,具有支持gpt分区隐藏、显现等功 ...

我已经在另外一个帖子反馈了map含碎片文件的问题,没有引起重视,我那个文件是9块碎片,grldr之前是可以map超过含9块碎片的文件的。
回复

使用道具 举报

29#
发表于 2014-8-26 19:09:12 | 只看该作者
0.4.5c从来就不支持碎片文件仿真的吧。请注意版本号。
0.4.6a 才有支持碎片

点评

谢谢答复,我明白了 那我想问一下,您在http://grub4dos.chenall.net/发布的grub4dos-0.4.6a-2014-08-19.7z版本是否已完善gpt分区的隐藏/显现功能,若已完善,那我需要的gpt分区隐藏/显现、碎片文件仿真这两方面  详情 回复 发表于 2014-8-26 21:40
回复

使用道具 举报

30#
 楼主| 发表于 2014-8-26 21:40:16 | 只看该作者
chenall 发表于 2014-8-26 19:09
0.4.5c从来就不支持碎片文件仿真的吧。请注意版本号。
0.4.6a 才有支持碎片

谢谢答复,我明白了

那我想问一下,您在http://grub4dos.chenall.net/发布的grub4dos-0.4.6a-2014-08-19.7z版本是否已完善gpt分区的隐藏/显现功能,若已完善,那我需要的gpt分区隐藏/显现、碎片文件仿真这两方面的功能都有了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-27 15:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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