作者 Olivier Chapuis
前言:
我在这篇文章里要讲解的是如何从 Linux 和 Windows 共存的机器中移除 Windows 系统而且把空出来的空间留给 Linux 用这篇文章的主要对象是给 Linux 的新手 (也包括我自己)
简介
安装完 Linux 两个月后的某一天我突然想把 Windows 删掉原因是我根本不想再用 Windows 了! 我想许多的初学者可能也遇到和我同样的情况所以我写了这篇文章来帮助他们 (进阶者也可以读读给我一些建议)这种情况有两种解决办法:
第一种是从新安装 Linux这样的好处是即使你对 Linux 知道的不多也可以在安装时做出很好的选择尤其在处理磁碟分割 (Disk Partitioning) 的时侯但缺点是你会丢掉硬碟上所有的东西虽然你也可以把必要的档案先备份起来但是还原的工作会花上很多的时间和心血
第二种方法是直接移除 Windows (很简单)然后再把空出来的空间挪给 Linux 用也就是说「重新分割」(Repartition)这道手续有点困难相关文件也不多但好处是你的系统会和从前的一模一样只是多了很多空间而且如果你没有成功你还是可以用第一种方法再试以下我介绍我用的方法但细节可能会和你的系统有一些出入还有一点如果你有一张空磁碟你可以先把重要的档案备份到这张磁碟上再重新安装我想这是一种较安全的方法且结果也比较理想我是把档案备份到一张 Mb 的磁片上不管如何希望以下的方法对初学者能有所帮助
我要感谢 Olivier Tharan 在 lmoderated 上的回信那封信算是本文的第负一版还有 Finn bo Jorgensen 和 Chomouel boudjnah 他们的回信
主要步骤
准备工作: 备份且记下重要的档案读完整篇文章再继续(请参照第三节)
移除 Windows (请参照第四节)
重新分割较难的步骤(请参照第五节)
准备工作
首先备份所有重要的档案尤其是设定档和你的文件档案以下我不再重覆
最重要的一步是了解你到底要怎麽做本文对使用到的指令和档案只作一些解说最好是用 man 读一读这些指令的说明: fdisk mkext cp (蛮实用的指令) lilo nf 和 fstab (此外还有一些设定档的 man 说明) Lilo 有些很详尽的说明放在 /usr/doc/lilo/doc 下(因系统而异)而且还有一篇长达 页的使用说明书有关 fdisk 的完整说明则是放在 /usr/doc/utillinux/READMEfdisk写这篇文章的时侯我还发现了一篇很有用的 miniHOWTO: 硬碟升级 Mini HowTo (Hard Disk Upgrade Mini HowTo)
第一步底下是我的磁碟分割表 (Partition Table):
[olivier@snoopy olivier]# /sbin/fdisk l (用超级使用者 su 的身份)
Disk /dev/hda: heads sectors cylinders
Units = cylinders of * bytes
Device Boot Begin Start End Blocks Id System
/dev/hda * + c Unknown
/dev/hda Linux native
/dev/hda Linux swap
/dev/hda Linux native
我们可以看到 Windows 位在 hda 上fdisk 通常都会把 FAT 的分割区看成 <> (未知)我的 Linux 核心 (Kernel 版) 知道怎麽存取 FAT但 fdisk 却不知道底下是 df 指令的输出可以发现 /dev/hda 的确可以被 Linux 使用
[olivier@snoopy olivier]# df
Filesystem blocks Used Available Capacity Mounted on
/dev/hda % /
/dev/hda % /home
/dev/hda % /mnt/dos
你得修改两个设定档 /etc/fstab 和 /etc/nf 它们看起来有点像底下的输出
[olivier@snoopy olivier] less /etc/fstab
/dev/hda / ext defaults
/dev/hda /home ext defaults
/dev/hda swap swap defaults
/dev/fd /mnt/floppy ext usernoauto
/dev/cdrom /mnt/cdrom iso usernoautoro
none proc proc defaults
/dev/hda /mnt/dos msdos usernoauto
[olivier@snoopy olivier] less /etc/nf
boot=/dev/hda
map=/boot/map
install=/boot/bootb
prompt
timeout=
image=/boot/vmlinuz
label=linux
root=/dev/hda
readonly
other=/dev/hda
label=dos
table=/dev/hda
重新建立 Windows 的硬碟分割区
从现在起你一定得用 root 的身份操作我尤其建议你用 root 登入(别用 su)如果你用的是 vi 编辑器你可能要下 w! 指令才能存档建议你在每回存档完后检查是否修改过的档案真的被存起来了 (离开编辑器用 less 指令来查看)
你现在要用 fdisk 和 mkefs 两个指令这些可以在硬碟或是其它储存媒体上用在使用前最好是不要连接 (mount) 要修改的那一个分割区请看底下的三个步骤:
如果你要的分割区已经被连接上了用 umount 指令来分离如: umount /mnt/dos
启动 fdisk更换 hda 的分割区类别 (System Id)我们现在告诉 fdisk 这个分割区要改成为 Linux 自有的分割区 (Linux Native Partition)用 t 指令 (t )来修改再用 p 指令来查看唯一不同的地方是 Unkown 现在变成了 linux native 还有 System Id 现在变成了 最后用 w 指令储存和离开用 fdisk l 指令再看一次离开时我遇到以下的错误讯息:
The partition table has been altered!
Calling ioctl() to reread partition table
Syncing disks
Reread table failed with error : Device or resource busy
Reboot your system to ensure the partition table is updated
但我不理会它所以没有重新开机
格式化 (Format): mkefs /dev/hda你会先看见很多数字在跳动然后就再也见不到 Windows 了! 你也可以在 mkefs 后加上 c 的参数这样可以顺便检查硬碟有没有损坏的地方
好啦! Windows 没啦! 其实我并不是很排斥 Win (但讨厌 Microsoft)只是很喜欢 Linux
使用新的分割区
好了现在我有一个 Gb 的空白分割区我打算把 Mb 拿来做 /home Mb 做 / 和 Mb 做交换区 (Swap partition)我把 /home/myaccount 里 Mb 的资料移到 /usr/local 把 /usr/local 留在 hda 上再把 / 移到 hda 上:
Filesystem blocks Used Available Capacity Mounted on
/dev/hda % /
/dev/hda % /usr/local
/dev/hda % /home
足够我用好几年了
照我上面的计划我得先把 hda 连接起来才行一般就连接到 /mnt 即可
在 /mnt 底下再建一个 tmp 的次目录 (subdirectory) 来连接 hda: mkdir/mnt/tmp
连接 hda 到 /mnt/tmp : mount t ext /dev/hda /mnt/tmp (t ext 指定档案系统的种类)
复制 / 到 /mnt/tmp/ 但保留目录结构: cp ax / /mnt/tmp/a 参数在 man 说明里解释为: <> 请自行参考 cp 的 man 说明x 参数指定不要把和现在所在位置不同的分割区也包括进来以我为例这样就不会把 /home 一起复制了整个复制过程在我的 AMD K 上花了 分钟所以你可以先去喝杯咖啡或威士忌再回来
但这样做还是有一些地方不完整因为 x 参数的关系有两个目录没有被复制进来 /home 和 /proc所以现在我们要在新的分割区上建立这两个目录: mkdir /mnt/tmp/home 然后 mkdir /mnt/tmp/proc 这两个目录一定不可漏掉这样 /home (在 hda 上) 和 /proc 以后才可以被连接上
现在更复杂的是我们得修改 fstab 和 nf 档案重新开机后 Lilo 和 Linux 本身才知道 / 在哪里注意我们必须修改 /mnt/tmp/etc/ 下的 fstab 而不是 /etc 下的因为新的系统在 /mnt/tmp