1.起因
办公室的机器上现有一个80G硬盘, 安装了 Ubuntu 8.10 和 Windows Vista 双系统。随着时间的推移,现在快要充满了 ...要求换来了一个 Sg 320G的新硬盘。
2.目标
完整迁移80G硬盘上的 Vista 与 Ubuntu到 320G 硬盘上,正常使用这两个配置好的系统。
3.使用的工具
一个 8G 的kingmax 超棒(安装有 深山红叶V30 WinPE 和 Pyppy 4.1.1,还有一个存储数据的分区)
一个160G移动硬盘上的 Kubuntu 8.04.1 KDE4 系统
4.过程
A:新硬盘分区
使用 Puppy 或者 WinPE 中的 分区工具即可
Windows 系统使用主分区 sda1 (注意要设置 active), 数据区 sda5
Linux我自己一般分为 :
代码: 全选
sda6 : /boot
sda7: /usr
sda8 : /var
sda9 : /
sda10 : /swap
sda11 : /home
Windows 系统由于只在一个单独分区上,所以很简单,使用 WinPE 上的Ghost , 选择
Local / Partition to Partition ,从 原 sda1 到新的 sda1 即可。然后数据区也同样操作或
直接copy文件也可。
C:Ubuntu 8.10 迁移
由于 Linux 系统文件通常分布于多个分区,所以需要作的事情比较多一些了。我以前从来没弄过,只能试着来。
首先我对 ghost 比较熟悉,就用 ghost 来复制原有Linux分区内容到对应的新硬盘的分区,过程似乎很快,但 /usr ,/var , / 等似乎有问题,ghost操作表面上正常完成了,但怎么分区已使用的大小与原分区中的内容大小差很多啊?且在 Kubuntu8.04 无法正常挂载。看来这个 Windows 中的 ghost 11 对 Linux 分区的支持属于不可使用的了。
然后使用 puppy 启动,重新格式化新硬盘上的 ext3,swap 分区以后就是挂载这些对应分区,copy所有文件到新分区 。Copy完成,实际上这个 Ubuntu 8.10 在物理意义上已经迁移成功了,剩下的就是一些设置文件的修改(grub 的 menu.lst , etc/fstab)。
还需要注意的是新的 /home 分区上的用户家目录(及其中的子文件夹,文件)的所有者要改为原用户 id.
关闭计算机后,拔掉原来硬盘的电源和数据线,只连接新的硬盘。
由于新硬盘分区上的这些配置文件中的内容关于分区的uuid 还是原硬盘上的,所以首先需要获得新硬盘上的这些 ext3,swap分区的 uuid值,然后用新的 uuid 值替换配置文件中原分区的uuid值。
奇怪的是我在 Puppy 中的终端输入 “ls -la /dev/disk/by-uuid” ,提示没有这个文件夹,我就不知道还有其他什么命令可以查询分区的uuid了?只好重启,换用移动硬盘上的Kubuntu8.04了。
这回倒是获得了新硬盘上各分区的 uuid了...嗯?怎么没有 /swap 分区的uuid 啊?我这个/swap分区是用 gparted 先弄好的啊?
如何获得 /swap 上的 uuid ? Google 了一下, 获得了如下方法:
代码: 全选
sudo swapoff -a # 关闭swap
sudo mkswap /dev/sda10 # 重新创建 一个 swap 分区 ,完成后显示其 uuid
用编辑器修改 menu.lst 和 fstab , 替换所有原硬盘分区的 uuid值 为 对应新硬盘分区的 uuid值,保存退出。
最后安装 grub 到sda :
在 kubuntu 终端中 键入 sudo grub , 然后键入 :
代码: 全选
root (hd0,5)
setup (hd0)
正常的话,你应该看到你的新硬盘上的 grub启动菜单, Windows 和 Ubuntu8.10 都已经正常迁移成功了,都可以正常运行!