无忧启动论坛

标题: 需要某个功能,但不知道GRUB4DOS里怎么实现 [打印本页]

作者: 2011qf020124    时间: 2011-9-14 22:53
标题: 需要某个功能,但不知道GRUB4DOS里怎么实现
某个主分区,原来是活动分区,现在想设置为非活动分区,但也不想设置其他分区为活动分区(也就是不想在该硬盘上有活动分区),该如何在GRUB4DOS里实现?

以后是不是可以在makeactive里增加个参数,实现该功能?
作者: 2011qf020124    时间: 2011-9-16 19:10
标题: 自己顶一顶!
是我问的太白菜了还是真的无解?
作者: 不点    时间: 2011-9-16 21:21
还有一种可能性:没人关心,或者没人感兴趣。

另外你也没有提到,究竟具体什么样的环境,使得你需要这个功能。换言之,没这个功能为什么不行?

你没有展示你的理由,那么这也可能就不能吸引到别人的注意力。

GNU GRUB 从诞生至今,发展了许多年了。没有一个人提出你这样的要求。这至少说明,绝大多数人不需要这个功能。

当然,你提的问题本身是一个合理的问题。解决的方法(即所谓的 workaround)肯定有,因为 grub4dos 有很多写盘的命令。你自己可以研究出一种方法,分享给大家。
作者: xiaoy    时间: 2011-9-16 22:43
0柱0面1扇区,那是一张16进制表,在最后的66的字节,除掉最后的两个字节不算,分区表就是64个字节了,每16个字节为1个分区记录。如果你的活动分区为第一分区(在dos下是C盘),那么第一的字节是80,只要把80改为00,活动分区的标志就去除了
作者: pseudo    时间: 2011-9-16 23:06
0PE里使用了
makeactive (hd0,1)
其中hd0为仿真盘,只有(hd0,0)一个分区。
作者: wannaknow    时间: 2011-9-17 01:29
标题: 回复 #1 2011qf020124 的帖子
你可以用dd命令把你那个硬盘读到内存里,比如
dd if=(hd17)+1 of=(md)0x3000+1
(你自己改(hd17)为你的硬盘号去)

然后用calc命令把0x6001be   0x6001ce   0x6001de   0x6001ee   的字节(即1byte)改为0x00

calc *0x6001be=*0x6001be&0xFFFFFF00

calc *0x6001ce=*0x6001ce&0xFFFFFF00

calc *0x6001de=*0x6001de&0xFFFFFF00

calc *0x6001ee=*0x6001ee&0xFFFFFF00

然后再用dd命令写回去

dd if=(md)0x3000+1 of=(hd17)+1
(你自己改(hd17)为你的硬盘号去)


以上所说,未经测试,不保证安全,你试试再用。

话说你为啥要这功能?
作者: 2011qf020124    时间: 2011-9-17 09:02
标题: 回复 #6 wannaknow 的帖子
话说前几天想用Virtual PC 2007搭个简单的grub4dos学习环境(单位里的老机子,不敢在虚拟机中装windows,眼泪哗哗的)
大致是MBR ->分区引导记录->ntldr->grub4dos


硬盘文件是固实vhd,100M,用diskgenius分区的,然后用imdisk加载分区放入ntldr等文件


结果启动不起来,就查找原因,测试时需要判断到底是MBR 问题还是分区引导记录问题,就想到了这个功能!(后来用diskgenius实现的)

现在判断下来可能是因为diskgenius 和 Virtual PC 2007对硬盘镜像不同的处理方式造成的,diskgenius把每磁道假设为了63扇区,而Virtual PC 2007对小硬盘会假设为每磁道17扇区!(本人的研究结果,若不对,请指正!)





欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3