Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1749663
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 17:53:56


  作者: Olivier Chapuis
  
  前言:
  
  我在这篇文章里要讲解的是如何从 Linux 和 共存的机器中移除 系统,而且把空出来的空间留给 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--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
  
   Filesystem 1024-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 defaults 1 1
   /dev/hda4 /home ext2 defaults 1 2
   /dev/hda3 swap 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
   /dev/hda1 /mnt/dos msdos user,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=
   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/hda1 1600672 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
【责编:admin】

--------------------next---------------------

阅读(191) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~