电脑技术学习

Linux下如何删除Windows分区

dn001
前言:;

我在这篇文章里要讲解的是如何从;Linux;和;Windows;共存的机器中移除;Windows;系统,而且把空出来的空间留给;Linux;用。这篇文章的主要对象是给;Linux;的新手;(也包括我自己)。;


--------------------------------------------------------------------------------


简介
安装完;Linux;两个月後的某一天,我突然想把;Windows;删掉。原因是我根本不想再用;Windows;了!;我想许多的初学者可能也遇到和我同样的情况,所以我写了这篇文章来帮助他们;(进阶者也可以读读,给我一些建议)。这种情况有两种解决办法:

第一种是从新安装;Linux。这样的好处是即使你对;Linux;知道的不多,也可以在安装时做出很好的选择,尤其在处理磁碟分割;(Disk;Partitioning);的时侯。但缺点是你会丢掉硬碟上所有的东西。虽然你也可以把必要的档案先备份起来,但是还原的工作会花上很多的时间和心血。;

第二种方法是直接移除;Windows;(很简单),然後再把空出来的空间挪给;Linux;用。也就是说,「重新分割」(Repartition),这道手续有点困难,相关文件也不多。但好处是你的系统会和从前的一模一样,只是多了很多空间。而且如果你没有成功,你还是可以用第一种方法再试。以下我介绍我用的方法,但细节可能会和你的系统有一些出入。还有一点,如果你有一张空磁碟,你可以先把重要的档案备份到这张磁碟上,再重新安装。我想这是一种较安全的方法,且结果也比较理想。我是把档案备份到一张;1.44;Mb;的磁片上。不管如何希望以下的方法对初学者能有所帮助。

我要感谢;Olivier;Tharan;在;fr.col.moderated;上的回信,那封信算是本文的第"负一"版。还有;Finn;bo;Jorgensen;和;Chomouel;boudjnah;他们的回信。


主要步骤
-;准备工作:;备份且记下重要的档案。读完整篇文章再继续。(请参照第三节)

-;移除;Windows;。(请参照第四节)

-;重新分割,较难的步骤。(请参照第五节)


准备工作
首先,备份所有重要的档案。尤其是设定档和你的文件档案。以下我不再重覆。

最重要的一步是了解你到底要怎麽做。本文对使用到的指令和档案只作一些解说。最好是用;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:;硬碟升级;Mini;How-To;(Hard;Disk;Upgrade;Mini;How-To)。

第一步,底下是我的磁碟分割表;(Partition;Table):

[olivier@snoopy;;olivier]#;/sbin/fdisk;-l;(用超级使用者;su;的身份)

Disk;/dev/hda:;128;heads,;63;sectors,;788;cylinders
Units;=;cylinders;of;8064;*;512;bytes

Device;Boot;;Begin;;;Start;;;;;End;;Blocks;;Id;System
/dev/hda1;;;*;;;;;;;1;;;;;;;1;;;;;397;1600672+;;c;Unknown
/dev/hda2;398;;;;;398;;;;;601;;822528;;83;Linux;native
/dev/hda3;602;;;;;602;;;;;627;;104832;;82;Linux;swap
/dev/hda4;628;;;;;628;;;;;788;;649152;;83;Linux;native




我们可以看到;Windows;位在;hda1;上。fdisk;通常都会把;FAT32;的分割区看成;<>;(未知)。我的;Linux;核心;(Kernel,;2.0.34;版);知道怎麽存取;FAT32,但;fdisk;却不知道。底下是;df;指令的输出,可以发现;/dev/hda1;的确可以被;Linux;使用。;

[olivier@snoopy;olivier]#;df

Filesystem1024-blocks;;;;Used;;;Available;;Capacity;;Mounted;on
/dev/hda2;;;;796065;;;;506992;;;;;;247947;;;;;67%;;;;/
/dev/hda4;;;;628351;;;;226366;;;;;;369528;;;;;38%;;;;/home
/dev/hda1;;;1594456;;;;850420;;;;;;744036;;;;;53%;;;;/mnt/dos




你得修改两个设定档;/etc/fstab;和;/etc/lilo.conf;,它们看起来有点像底下的输出。;

[olivier@snoopy;olivier];less;/etc/fstab

/dev/hda2;;/;ext2;defaults1;1
/dev/hda4;;/home;;;;;ext2;defaults1;2
/dev/hda3;;swap;;;;;;swap;defaults0;0
/dev/fd0;;;/mnt/floppy;;;;;;;ext2;user,noauto;;;;;0;0
/dev/cdrom;/mnt/cdromiso9660;;;;;;user,noauto,ro;;0;0
none;;;;;;;proc;;;;;;proc;defaults0;0
/dev/hda1;;/mnt/dos;;msdosuser,noauto;;;;;0;0


[olivier@snoopy;olivier];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);要修改的那一个分割区。请看底下的三个步骤:;

-;如果你要的分割区已经被连接上了,用;umount;指令来分离,如:;umount;/mnt/dos;

-;启动;fdisk。更换;hda1;的分割区类别;(System;Id)。我们现在告诉;fdisk;这个分割区要改成为;Linux;自有的分割区;(Linux;Native;Partition)。用;t;指令;(t,;1,;83)来修改。再用;p;指令来查看。唯一不同的地方是;Unkown;现在变成了;linux;native;还有;System;Id;现在变成了;83。最後,用;w;指令储存和离开。用;fdisk;-l;指令再看一次。离开时我遇到以下的错误讯息:;

The;partition;table;has;been;altered!
Calling;ioctl();to;re-read;partition;table.
Syncing;disks.
Re-read;table;failed;with;error;16:;Device;or;resource;busy.
Reboot;your;system;to;ensure;the;partition;table;is;updated.




但我不理会它所以没有重新开机。

-;格式化;(Format):;mke2fs;/dev/hda1。你会先看见很多数字在跳动,然後就再也见不到;Windows;了!;你也可以在;mke2fs;後加上;-c;的参数,这样可以顺便检查硬碟有没有损坏的地方。;

好啦!;Windows;没啦!;其实我并不是很排斥;Win98;(但讨厌;Microsoft),只是很喜欢;Linux...;


使用新的分割区
好了,现在我有一个;1.5;Gb;的空白分割区,我打算把;600;Mb;拿来做;/home;,;800;Mb;做;/;和;100;Mb;做交换区;(Swap;partition)。我把;/home/myaccount;里;100Mb;的资料移到;/usr/local;,把;/usr/local;留在;hda2;上再把;/;移到;hda1;上:

Filesystem;;;;;;1024-blocks;;Used;;;Available;Capacity;Mounted;on
/dev/hda11600672;;;;465000;;;1130672;;;;;29%;;;;/
/dev/hda2;796065;;;;110000;;;;696065;;;;;13%;;;;/usr/local;
/dev/hda4;628351;;;;;40739;;;;587612;;;;;;6%;;;;/home




足够我用好几年了....

照我上面的计划,我得先把;hda1;连接起来才行。一般就连接到;/mnt;即可。;

-;在;/mnt;底下再建一个;tmp;的次目录;(sub-directory);。来连接;hda1:;mkdir/mnt/tmp.;

-;连接;hda1;到;/mnt/tmp;:;mount;-t;ext2;/dev/hda1;/mnt/tmp;(-t;ext2;指定档案系统的种类)。;

-;复制;/;到;/mnt/tmp/;但保留目录结构:;cp;-ax;/;/mnt/tmp/。-a;参数在;man;说明里解释为:;<>;请自行参考;cp;的;man;说明。-x;参数指定不要把和现在所在位置不同的分割区也包括进来。以我为例,这样就不会把;/home;一起复制了。整个复制过程在我的;AMD;K6;266;上花了;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/ext2;;;;;defaults;1;1
/dev/hda2/mnt/tmp;ext2;;;;;defaults;1;2
/dev/hda4/home;;;;ext2;;;;;defaults;1;3
/dev/hda3swap;;;;;swap;;;;;defaults;0;0
/dev/fd0;/mnt/floppy;;;;;;ext2;;;;;user,noauto;;;;;;0;0
/dev/cdrom;;;;;;;/mnt/cdrom;;;;;;;iso9660;;user,noauto,ro;;;0;0
none;;;;;/proc;;;;proc;;;;;defaults;0;0




-;/mnt/tmp/etc/lilo.conf.;

lilo.conf;是;lilo;的设定档,lilo;是位在;MBR;(启动磁区);的开机管理程式。我不想浪费篇幅说明;MBR。如果有人还在用;Loadlin;或用软碟开机,我强烈建议换成;lilo;,因为我们的系统上;loadlin;已经没用,而且这年头谁还用软碟片来开机呢?;我们告诉;lilo;Linux;的核心;(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;的讯息如下:;

LILO;version;20,;Copyright;1992-1997;Werner;Almesberger
Reading;boot;sector;from;/dev/hda
Merging;with;/boot/boot.b
Boot;image:;/boot/vmlinuz-2.0.34
Added;linux;*
/boot/boot.0300;exists;-;no;backup;copy;made.
Writing;boot;sector.




-;重新开机,再做一些小测试;(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/local;;ext2;;;;defaults;;;;;;;1;2




-;重新开机,再测试。;

大功告成!;告诉你我当时非常的满意,尤其是所有的程式後来都能正常的工作!


问题
事实上我在实作时遇到了一些问题。但我建议你去了解这些步骤,所以在你遇到问题的时候你可以试著自行解决。Olivier;Tharan;建议我重新启动到单人模式中;(Single-user;mode);但我偷懒而跳过这一节。最好能在重新启动前准备一张开机磁片;(但我不知道怎麽弄)。;

底下是我遭遇到的问题。在第一次重新开机後,我的;/home;和;/proc;没有被连接进来,但幸好登入系统不成问题,所以我赶快用:;

[root@snoopy;root]$;df
Filesystem;;;;;;1024-blocks;;;;Used;;;Available;;Capacity;;Mounted;on
/dev/hda1;;1548535;;;506977;;;;961525;;;;;35%;;;;;;;/
/dev/hda2;;;796065;;;506992;;;;247947;;;;;67%;;;;;;;/mnt/tmp




/home;没有被连接进来,所以我试著用;mount;/home;,但;mount;却显示:;<>;我才发觉我没了解什麽叫"连接点";(Mount;Point);而漏了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;
Hard;Disk;Upgrade;Mini;How-To;(硬碟升级;Mini;How-To);
本文出处;Comment;supprimer;windows.;
原文以法文写成,英文翻译;Paul;Kienzle,中文翻译;郭予廷;

标签: linux