Linux操作系统下如何删除Windows分区(1) 前言: 我在这篇文章里要讲解的是如何从HYPERLINK"http://www.xgdown.com/article/53/ArticleList53_1.htm"\o"Linux经验技巧"\t"_blank"Linux和Windows共存的机器中移除Windows系统,而且把空出来的空间留给Linux用。这篇文章的主要对象是给Linux的新手(也包括我自己)。 简介 安装完Linux两个月後的某一天,我突然想把Windows删掉。原因是我根本不想再用Windows了!我想许多的初学者可能也遇到和我同样的情况,所以我写了这篇文章来帮助他们(进阶者也可以读读,给我一些建议)。这种情况有两种解决办法: 第一种是从新安装Linux。这样的好处是即使你对Linux知道的不多,也可以在安装时做出很好的选择,尤其在处理磁碟分割(DiskPartitioning)的时侯。但缺点是你会丢掉硬碟上所有的东西。虽然你也可以把必要的档案先备份起来,但是还原的工作会花上很多的时间和心血。 第二种
是直接移除Windows(很简单),然後再把空出来的空间挪给Linux用。也就是说,「重新分割」(Repartition),这道手续有点困难,相关文件也不多。但好处是你的系统会和从前的一模一样,只是多了很多空间。而且如果你没有成功,你还是可以用第一种方法再试。以下我介绍我用的方法,但细节可能会和你的系统有一些出入。还有一点,如果你有一张空磁碟,你可以先把重要的档案备份到这张磁碟上,再重新安装。我想这是一种较安全的方法,且结果也比较理想。我是把档案备份到一张1.44Mb的磁片上。不管如何希望以下的方法对初学者能有所帮助。 准备工作 首先,备份所有重要的档案。尤其是设定档和你的文件档案。以下我不再重覆。 最重要的一步是了解你到底要怎麽做。本文对使用到的指令和档案只作一些解说。最好是用man读一读这些指令的
:fdisk,mk2ext,cp(蛮实用的指令),lilo,lilo.conf和fstab(此外还有一些设定档的man说明)。Lilo有些很详尽的说明放在/usr/doc/lilo-0.20/doc下(因系统而异),而且还有一篇长达46页的使用说明
。有关fdisk的完整说明则是放在/usr/doc/util-linux-2.7/README.fdisk。写这篇文章的时侯我还发现了一篇很有用的mini-HOWTO:硬碟升级MiniHow-To(HardDiskUpgradeMiniHow-To)。 第一步,底下是我的磁碟分割表(PartitionTable):[olivier@snoopyolivier]#/sbin/fdisk-l(用超级使用者su的身份) Disk/dev/hda:128heads,63sectors,788cylinders Units=cylindersof8064*512bytes DeviceBootBeginStartEndBlocksIdSystem /dev/hda1*113971600672+cUnknown /dev/hda239839860182252883Linuxnative /dev/hda360260262710483282Linuxswap /dev/hda462862878864915283Linuxnative 我们可以看到Windows位在hda1上。fdisk通常都会把FAT32的分割区看成>(未知)。我的Linux核心(Kernel,2.0.34版)知道怎麽存取FAT32,但fdisk却不知道。底下是df指令的输出,可以发现/dev/hda1的确可以被Linux使用。[olivier@snoopyolivier]#df Filesystem1024-blocksUsedAvailableCapacityMountedon <>/dev/hda279606550699224794767%/ /dev/hda462835122636636952838%/home /dev/hda1159445685042074403653%/mnt/dos 你得修改两个设定档/etc/fstab和/etc/lilo.conf,它们看起来有点像底下的输出。[olivier@snoopyolivier]less/etc/fstab /dev/hda2/ext2defaults11 /dev/hda4/homeext2defaults12 /dev/hda3swapswapdefaults00 /dev/fd0/mnt/floppyext2user,noauto00 /dev/cdrom/mnt/cdromiso9660user,noauto,ro00 noneprocprocdefaults00 /dev/hda1/mnt/dosmsdosuser,noauto00 [olivier@snoopyolivier]less/etc/lilo.conf boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=500 image=/boot/vmlinuz-2.0.34-1 label=linux root=/dev/hda2 read-only other=/dev/hda1 label=dos table=/dev/hda 重新建立Windows的硬碟分割区 从现在起你一定得用root的身份操作。我尤其建议你用root登入(别用su)。如果你用的是vi编辑器,你可能要下w!指令才能存档。建议你在每回存档完後,检查是否修改过的档案真的被存起来了。(离开编辑器用less指令来查看) 你现在要用fdisk和mke2fs两个指令。这些可以在硬碟或是其它储存媒体上用。在使用前最好是不要连接(mount)要修改的那一个分割区。请看底下的三个步骤: 1、如果你要的分割区已经被连接上了,用umount指令来分离,如:umount/mnt/dos 2、启动fdisk。更换hda1的分割区类别(SystemId)。我们现在告诉fdisk这个分割区要改成为Linux自有的分割区(LinuxNativePartition)。用t指令(t,1,83)来修改。再用p指令来查看。唯一不同的地方是Unkown现在变成了linuxnative还有SystemId现在变成了83。最後,用w指令储存和离开。用fdisk-l指令再看一次。离开时我遇到以下的错误讯息:Thepartitiontablehasbeenaltered! Callingioctl()tore-readpartitiontable. Syncingdisks. Re-readtablefailedwitherror16:Deviceorresourcebusy. Rebootyoursystemtoensurethepartitiontableisupdated. 但我不理会它所以没有重新开机。 3、格式化(Format):mke2fs/dev/hda1。你会先看见很多数字在跳动,然後就再也见不到Windows了!你也可以在mke2fs後加上-c的参数,这样可以顺便检查硬碟有没有损坏的地方。 好啦!Windows没啦!其实我并不是很排斥Win98(但讨厌Microsoft),只是很喜欢Linux... 使用新的分割区 好了,现在我有一个1.5Gb的空白分割区,我打算把600Mb拿来做/home,800Mb做/和100Mb做交换区(Swappartition)。我把/home/myaccount里100Mb的资料移到/usr/local,把/usr/local留在hda2上再把/移到hda1上:<>Filesystem1024-blocksUsedAvailableCapacityMountedon /dev/hda11600672465000113067229%/ /dev/hda279606511000069606513%/usr/local /dev/hda4628351407395876126%/home 足够我用好几年了.... 照我上面的
,我得先把hda1连接起来才行。一般就连接到/mnt即可。在/mnt底下再建一个tmp的次目录(sub-directory)。来连接hda1:mkdir/mnt/tmp.连接hda1到/mnt/tmp:mount-text2/dev/hda1/mnt/tmp(-text2指定档案系统的种类)。复制/到/mnt/tmp/但保留目录结构:cp-ax//mnt/tmp/。-a参数在man说明里解释为:>请自行参考cp的man说明。-x参数指定不要把和现在所在位置不同的分割区也包括进来。以我为例,这样就不会把/home一起复制了。整个复制过程在我的AMDK6266上花了15分钟。所以你可以先去喝杯咖啡或威士忌再回来。但这样做还是有一些地方不完整,因为-x参数的关系有两个目录没有被复制进来,/home和/proc。所以现在我们要在新的分割区上建立这两个目录:mkdir/mnt/tmp/home然後mkdir/mnt/tmp/proc这两个目录一定不可漏掉,这样/home(在hda3上)和/proc以後才可以被连接上。 现在更复杂的是我们得修改fstab和lilo.conf档案,重新开机後Lilo和Linux本身才知道/在哪里。注意,我们必须修改/mnt/tmp/etc/下的fstab而不是/etc下的。因为新的系统在/mnt/tmp下。但是在重新开机前我们必须重新安装Lilo(如果你有用Lilo的话)。现在必须修改/etc/下的lilo.conf因为我们现在就要执行lilo指令来重新安装Lilo。然後再把/etc/lilo.conf复制到新的分割区/mnt/tmp/etc。或者你可以直接修改/mnt/tmp/etc/lilo.conf然後在执行lilo的时候加上-C的参数告诉lilo你的设定档不是在/etc/lilo.conf而是在/mnt/tmp/etc/lilo.conf中。我示□的是第二种方法。/mnt/tmp/etc/fstab.这个档案指示系统在启使的时侯如何连接不同的分割区。我们现在想把/连接到hda1上,所以要如下修改。但我们不可以有两个/连接点!所以我把/dev/hda2改为连接到/mnt/tmp。其它地方则没变。/dev/hda1/ext2defaults11 /dev/hda2/mnt/tmpext2defaults12 /dev/hda4/homeext2defaults13 /dev/hda3swapswapdefaults00 /dev/fd0/mnt/floppyext2user,noauto00 /dev/cdrom/mnt/cdromiso9660user,noauto,ro00 none/procprocdefaults00 -/mnt/tmp/etc/lilo.conf. lilo.conf是lilo的设定档,lilo是位在MBR(启动磁区)的开机管理程式。我不想浪费篇幅说明MBR。如果有人还在用Loadlin或用软碟开机,我强烈建议换成lilo,因为我们的系统上loadlin已经没用,而且这年头谁还用软碟片来开机呢?我们告诉liloLinux的核心(Kernel)现在是在hda1上(原本是hda2)还有我们得删除所有有关Windows的设定。boot=/dev/hda map=/boot/map install=/boot/boot.b prompt <>timeout=500 image=/boot/vmlinuz-2.0.34-1 label=linux root=/dev/hda1 read-only 执行lilo:/sbin/lilo-v-C/mnt/tmp/etc/lilo.conf.-v告诉lilo给予详尽的输出。这时应该没有任何的错误讯息,因为我们要重新启动所以一定不能犯错。lilo的讯息如下:LILOversion20,Copyright1992-1997WernerAlmesberger Readingbootsectorfrom/dev/hda Mergingwith/boot/boot.b Bootimage:/boot/vmlinuz-2.0.34 Addedlinux* /boot/boot.0300exists-nobackupcopymade. Writingbootsector. 重新开机,再做一些小测试(df,fdisk-l)看看档案系统是不是和我们指定的符合。把/mnt/tmp底下(hda2)所有的东西删除掉:(在/mnt/tmp下)rm-rf*按照先前的安排,我们再用cd切换到/usr/local下,复制所有档案到/usr/tmp:cp-a*/mnt/tmp验证是否一切顺利,再删除/usr/local:(在/usr/local下)rm-rf*,注意不可以删除/usr/local这个名字。再编辑/etc/fstab,修改第二行:/dev/hda2/usr/localext2defaults12 重新开机,再测试。 大功告成!告诉你我当时非常的满意,尤其是所有的程式後来都能正常的工作! 问
事实上我在实作时遇到了一些问题。但我建议你去了解这些步骤,所以在你遇到问题的时候你可以试著自行解决。OlivierTharan建议我重新启动到单人模式中(Single-usermode)但我偷懒而跳过这一节。最好能在重新启动前准备一张开机磁片(但我不知道怎麽弄)。 底下是我遭遇到的问题。在第一次重新开机後,我的/home和/proc没有被连接进来,但幸好登入系统不成问题,所以我赶快用:[root@snoopyroot]$df Filesystem1024-blocksUsedAvailableCapacityMountedon /dev/hda1154853550697796152535%/ /dev/hda279606550699224794767%/mnt/tmp /home没有被连接进来,所以我试著用mount/home,但mount却显示:>我才发觉我没了解什麽叫"连接点"(MountPoint)而漏了cp的-x的参数。所以我重新建立了/home和/proc两个连接点,结果才和前面所叙述的一样。 参考资料 man说明:fdisk,mk2ext,cp,mv,rm,lilo,lilo.conf,fstab /usr/doc/lilo-0.20/doc/User_Guide.ps /usr/doc/util-linux-2.7/README.fdisk HardDiskUpgradeMiniHow-To(硬碟升级MiniHow-To) 本文出处Commentsupprimerwindows.