无忧启动论坛

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

[求助] 需要某个功能,但不知道GRUB4DOS里怎么实现

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-14 22:53:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
某个主分区,原来是活动分区,现在想设置为非活动分区,但也不想设置其他分区为活动分区(也就是不想在该硬盘上有活动分区),该如何在GRUB4DOS里实现?

以后是不是可以在makeactive里增加个参数,实现该功能?
7#
 楼主| 发表于 2011-9-17 09:02:19 | 只看该作者

回复 #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扇区!(本人的研究结果,若不对,请指正!)
回复

使用道具 举报

6#
发表于 2011-9-17 01:29:39 | 只看该作者

回复 #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)为你的硬盘号去)


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

话说你为啥要这功能?
回复

使用道具 举报

5#
发表于 2011-9-16 23:06:09 | 只看该作者
0PE里使用了
makeactive (hd0,1)
其中hd0为仿真盘,只有(hd0,0)一个分区。
回复

使用道具 举报

4#
发表于 2011-9-16 22:43:08 | 只看该作者
0柱0面1扇区,那是一张16进制表,在最后的66的字节,除掉最后的两个字节不算,分区表就是64个字节了,每16个字节为1个分区记录。如果你的活动分区为第一分区(在dos下是C盘),那么第一的字节是80,只要把80改为00,活动分区的标志就去除了
回复

使用道具 举报

3#
发表于 2011-9-16 21:21:30 | 只看该作者
还有一种可能性:没人关心,或者没人感兴趣。

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

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

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

当然,你提的问题本身是一个合理的问题。解决的方法(即所谓的 workaround)肯定有,因为 grub4dos 有很多写盘的命令。你自己可以研究出一种方法,分享给大家。
回复

使用道具 举报

2#
 楼主| 发表于 2011-9-16 19:10:15 | 只看该作者

自己顶一顶!

是我问的太白菜了还是真的无解?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-3 02:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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