LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1245|回复: 7

windows和linux并存,删除系统之windows手段解决途径

[复制链接]
发表于 2006-8-10 19:21:12 | 显示全部楼层 |阅读模式
以前还是个"菜鸟"的时候(其实现在也是,不过是会飞了.^-^),曾经大胆的在自己的硬盘里面安装了俩个操作系统xp与redhat.安装是完了,用一段时间,空间不够了,就打算删除linux.因为删除linux是很简单的事儿,就和删除windows系统原理差不多,就是把分区直接删除就行了.可万万想不到,删除后重新启动的时候,发现GRUB停了,然后报告错误,好像是说找不到stage1等等.原理大家都应该知道吧,就是因为grub启动的时候就要那几个在硬盘上面的文件.可是现在被偶删除了.到哪儿找啊.再说当时什么都不会.然后搞的整个硬盘都数据丢失了,当时可以心疼啊.那么好用的数据,辛苦精心培养了一年的硬盘就毁于一旦了,当时格了盘都不行.把盘符都删除了还是不行,我就纳闷了.后来在网上找了个命令才后悔莫及.用fdisk/mbr.就可以了.
所以经过惨痛的教训之后,给大家个意见.不用轻易在自己电脑上面作试验.除非没有什么重要数据,那就用虚拟机就行了.废话不多说.我操作的所有都是在虚拟机器里面实现了.(因为自己吸取教训了,哈哈.做试验前过个还原,做完后轻松还原就ok了.)
------------------------------------------------------------------------------------------------
偶的做试验是用的win2003+redhat9.0..其他几个系统的组合也都差不多大体上是一样的.
------------------------------------------------------------------------------------------------
删除windows没有什么故障,直接删除分区就可以了.没有什么故障
删除linux情况不同,结果也不同,那就看你的grub安装到那里了

1.如果grub安装到linux的boot分区里面,那没有什么问题,删除linux的分区就行了,方法可以直接在window2000版本以上的自己代的工具删除:
步骤:进入系统右击我的电脑->管理->磁盘管理 找到要删除的盘符,右击删除就可以了.
如果没有那个工具的的话,就用fdisk.这个工具应该知道怎么用麻?不知道?那就自己在网上找!搜索出来一大堆.
不过还没有完,因为既然是在grub在boot分区里面的,那系统默认的肯定是linux的盘符是被激活的,所以用fdisk(windows的,和linux的都可以.)激活windows 的那个分区.这个不用说吧?
就是用启动盘启动后,命令:fdisk,选择2.set active partition 然后选择就ok了.
---------------------------------------------------------------------------------------------------
2.如果grub安装到MBR区里面,就和我上面的经历一样,出来之后,就是那个样子,卡住了.什么都动不了.因为虽然盘符删除了,但是grub还在MRB里面,所以它还会找那几个文件在的linux的盘符里面,一旦找不见,即说明gurb启动失败.然后死机.
解决办法
主要任务是要删除mbr区里面的grub,怎么做呢?
首先用启动盘启动,用windows自带的那个fdisk工具,
命令就是fdisk /mbr.这个命令的作用是什么呢?就是删除mbr代码部分的内容,然后在次写入新的代码,也就是把grub写入的代码给删除了.mbr区由三个部分组成:代码区,分区表的信息,还有结束标记(一般是55AA).fdisk /mbr.只会重新写代码区,所以分区表是不会被动的.不会变,所以就达到我门的目的,即删除grub.
删除了gurb,然后就把windows分区设置成活动的就ok了.和上面做法一样.
这种删除办法,主要做的就是要删除mbr
说完了,给一个好的意见:
没有什么特殊需要,不要把grub安装到mbr区里面,因为那样,就像我说的那样,安装了,比较麻烦.要对mbr做一些设置,所以在安装的时候,安装在boot里面比较好.这是偶的建议而已.哈哈
发表于 2006-8-11 02:48:04 | 显示全部楼层
纠正一个错误。grub本来就装在mbr里面的,是不会变的,更不会装在boot里面。mbr叫做主引导区。
回忆一下我们的开机过程:开电源,机器启动bios自检,bios读mbr里的信息grub,决定启动哪个系统。至于你说的把grub装在boot里是不对的,是kernel装在boot里,grub只是告诉机器应该引导哪个扇区,至于谁去引导系统,linux下是加载kernel和init来引导系统的。

简单的说grub就像个指挥官,它只负责告诉机器不同系统的引导程序分别装在哪个扇区。不负责去执行。具体执行才是装在不同扇区引导程序的事。 很简单,清除了mbr不止是把grub删了,还把mbr里的所有记录都清空了。开机没有人告诉它去引导哪个扇区了,那它也不等闲着,它就按顺序一下分区一个分区找。至于为什么windows会启动,也很简单。一般情况我们机器也就2个系统,linux删了只剩下windows,那它没得选,只能找到window引导它。 但如果我们装了3个系统。linux删了,还剩下2个,这windows就没那么幸运了,假设windiws装在c盘,另一个系统装在d盘,windows肯定先启动。但如果相反呢,windows在d,那么它启动不了了,只能让另一个系统启动。

那为什么删了linux不去清mbr什么也启动不了呢,那是因为删了linux,grub的确被清除了,但是mbr执行顺序的默认值还在,默认值是找grub。机器不是人,它不会以为grub没了就不引导了,它还按照默认值继续找grub,死都找不到,没办法,只有停下来等了。清了mbr,执行的默认值也没了,它就不会找了。

大家可以试试,先装linux,再装windows,这时你会发现机器里只启动win,linux不会启动,怎么办??简单把linux里grub程序复制下来写进mbr,或者你足够厉害,重新写个grub程序给mbr区。(grub很好写哦)!  那么一切就ok了


欢迎来讨论
回复 支持 反对

使用道具 举报

发表于 2006-8-11 06:04:16 | 显示全部楼层
昨天晚上看见帖子不想回,但讨论没有意思,讨论下去最终只会变成吵架!

bootloader 该装到哪儿完全属於个人喜好,与及用户对操作系统的认识,你怎样能把系统用好就该怎样做,没有人去强迫你,我自己的电脑 bootloader 全装在 MBR,公司的电脑就装在 /boot,没啥不妥。
Post by happyairme
纠正一个错误。grub本来就装在mbr里面的,是不会变的,更不会装在boot里面。mbr叫做主引导区。
GRUB 其实是可以装到 /boot 里去的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-11 17:57:45 | 显示全部楼层

回复一下.解释一下子

Post by happyairme
纠正一个错误。grub本来就装在mbr里面的,是不会变的,更不会装在boot里面。mbr叫做主引导区。
回忆一下我们的开机过程:开电源,机器启动bios自检,bios读mbr里的信息grub,决定启动哪个系统。至于你说的把grub装在boot里是不对的,是kernel装在boot里,grub只是告诉机器应该引导哪个扇区,至于谁去引导系统,linux下是加载kernel和init来引导系统的。


呵呵,grub是个loader.可以安装在mbr和/boot里面的.在安装的时候你可以看到的,安装linux的时候,grub有个高级选项,里面会让你选择的,如果你没有找到配置高级,那默认的肯定是安装在mbr里面的.如果mbr没有grub.照样可以启动grub,因为mbr会去找"活动"主分区,设置linux的/boot分区为主活动分区,mbr会加载这个分区,然后grub也就可以启动了.
-------------------------------------------------------------------------------------------
Post by happyairme

简单的说grub就像个指挥官,它只负责告诉机器不同系统的引导程序分别装在哪个扇区。不负责去执行。具体执行才是装在不同扇区引导程序的事。 很简单,清除了mbr不止是把grub删了,还把mbr里的所有记录都清空了。开机没有人告诉它去引导哪个扇区了,那它也不等闲着,它就按顺序一下分区一个分区找。至于为什么windows会启动,也很简单。一般情况我们机器也就2个系统,linux删了只剩下windows,那它没得选,只能找到window引导它。 但如果我们装了3个系统。linux删了,还剩下2个,这windows就没那么幸运了,假设windiws装在c盘,另一个系统装在d盘,windows肯定先启动。但如果相反呢,windows在d,那么它启动不了了,只能让另一个系统启动。

mbr呢,不是一个一个找,它呢,只会去找主活动分区,如果没有的话,开机就停止了.所以清除了grub,没有设置windows分区是主分区的化,是没有反应的,这个我在虚拟机里面已经验证过了.
简单的说,就是mbr只会去找"活动分区",不相信的你试试,把c盘活动去掉,系统肯定启动不了.
Post by happyairme

那为什么删了linux不去清mbr什么也启动不了呢,那是因为删了linux,grub的确被清除了,但是mbr执行顺序的默认值还在,默认值是找grub。机器不是人,它不会以为grub没了就不引导了,它还按照默认值继续找grub,死都找不到,没办法,只有停下来等了。清了mbr,执行的默认值也没了,它就不会找了。

这个说的对,因为grub是安装在mbr里面,如果安装在/boot里面的话,mbr里面是没有grub程序的,但为什么启动的时候会死掉呢?就是上面说的.因为linux的/boot分区被设置为主分区了,所以当它被删除了呢?当然系统中就没有"活动分区"了,当然会死了
不知道我说的是否有道理?上面的老兄?呵呵
回复 支持 反对

使用道具 举报

发表于 2006-8-19 04:23:50 | 显示全部楼层
我的grub是安装在mbr里面,我也多次删除linux系统,怎么没一次见到你说的什么盘符丢失呢?哎,难道是我运气好?想不通!我至少这样干过2位数以上次了。我的方法:
[1]首先在WINDOWS下删除LINUX的BOOT分区,然后想怎么装系统都没问题,
或者是
[2]用WINDOWS的安装光盘的DOS工具彻底格式化C盘,然后安装系统都没有问题
回复 支持 反对

使用道具 举报

发表于 2006-8-19 11:21:44 | 显示全部楼层
假如存在双系统win+linux
grub的一些文件比如装在/boot/grub.
如果删除windows,需要把windows的所有文件删除了,然后修改grub文件menu.lst
如果删除linux需要删除linux所有的分区并且fdisk /mbr......(不知道是否需要用set active partition )
看看这样是否清楚一些了?
回复 支持 反对

使用道具 举报

发表于 2006-8-19 11:24:43 | 显示全部楼层
Post by maxzhao
我的grub是安装在mbr里面,我也多次删除linux系统,怎么没一次见到你说的什么盘符丢失呢?哎,难道是我运气好?想不通!我至少这样干过2位数以上次了。我的方法:
[1]首先在WINDOWS下删除LINUX的BOOT分区,然后想怎么装系统都没问题,
或者是
[2]用WINDOWS的安装光盘的DOS工具彻底格式化C盘,然后安装系统都没有问题

不是装系统,是delete一个系统的分区,但是保住另一个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-23 13:59:52 | 显示全部楼层
Post by huyongzs
假如存在双系统win+linux
grub的一些文件比如装在/boot/grub.
如果删除windows,需要把windows的所有文件删除了,然后修改grub文件menu.lst
如果删除linux需要删除linux所有的分区并且fdisk /mbr......(不知道是否需要用set active partition )
看看这样是否清楚一些了?

如果开始活动分区是安装在linux分区下面的,删除了linux之后就会没active分区了,所以要设置active.因为mbr默认会去找active分区的 。
回复 支持 反对

使用道具 举报

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

本版积分规则

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