迁移Ubuntu系统到新硬盘


笔记本硬盘是120G的,用了这么长的时间,积累了一些数据,硬盘空间有点不够用了。所以买了一块西数500G的硬盘,准备更换笔记本的硬盘。

操作系统版本:Ubuntu 9.10
文件系统类型:Ext4
Grub版本:Grub2

事前查了一些资料。大概的思路如下

  1. 用硬盘盒挂载新的硬盘,然后用gparted分区,创建好文件系统。
  2. 用live cd启动电脑,挂载新旧硬盘。
  3. 迁移数据。tar/dd/cp -a
  4. 安装grub,并修改grub配置文件中的uuid。
  5. 修改/etc/fstab中的uuid

思路清晰了就开始动手吧。

  1. 挂载新的硬盘,以及格式化都很顺利。
    提示:在创建分区表的时候使用默认的msdos格式就可以了。
  2. live cd启动电脑,使用fdisk –l查看硬盘的分区情况。(一下所有操作均已root身份执行,所以请先执行sudo -s获得一个带有root权限的shell环境,避免频繁敲入sudo)
    比如我的电脑分了四个区,其中三个是数据分区(/ /boot /home),一个是交换分区。
    数据分区对应关系是/ 对应/dev/sda6;/boot 对应/dev/sda1;/home对应/dev/sda7,新硬盘分区相同,不过显示为/dev/sdbX
  3. 在/mnt目录下分别创建对应硬盘分区的文件夹。
    $ sudo –s
    $ cd /mnt
    $ mkdir oldboot newboot oldroot newroot oldhome newhome
  4. 挂载相关的分区到/mnt目录下
    $ mount /dev/sda1 /mnt/oldboot
    $ mount /dev/sdb1 /mnt/newboot
    其他的分区使用类似的命令挂载
  5. 挂载完了之后就可以开始动手转移文件了。在Linux系统迁移的时候,要注意保持文件的所有者和权限不变,所以也查了不少资料,网上有说用tar的,也有说用dd的,当然还有说用cp –a 的,这三者都用过,绕了不少弯路,现在把一些心得写下来。
    tar——使用这个命令的时候需要注意的就是需要首先进入相应的目录,然后再执行,参数部分要包含-p,最终执行成功就是使用了这个命令。具体命令如下:
    $ cd /mnt/oldboot
    $ tar cpf – . | (cd /mnt/newboot; tar xpf –)

    不需要-v参数减少不必要的输出,另外在这个在迁移socket类型的文件时出错,不过在我的电脑上只出现在/tmp文件夹以及/home目录下adobe的设置文件中,而adobe我已不用,所以问题忽略。
    dd——在用这个进行COPY的时候,参考了一些网上的资料,命令为dd if=/dev/sda1 of=/dev/sdb1 conv=noerror,sync。复制完了之后,文件权限都对了。但是磁盘空间的容量不对了,变成了和老的硬盘一样大小的容量,不知道是不是conv参数的文件,看man文档,sync是填充数据,不足的部分使用空白替代。或许是这个问题,现在也不调查了。
    cp -a——COPY完了之后的文件权限不正确,放弃。
  6. 文件全部转移完了之后,确认文件数量是否一样,然后umount全部分区,并删除/mnt下创建的目录,关机,把新的硬盘安装到笔记本。
  7. 然后用live cd开机,挂载全部分区到/mnt,准备修复grub。挂载的时候需要注意,比如我有三个分区,需要首先挂载/分区,然后分别挂载/home和/boot。
    $ mount /dev/sda6 /mnt/
    $ mount /dev/sda7 /mnt/home
    $ mount /dev/sda1 /mnt/boot
  8. 然后挂载本机的一些设备。
    $ mount –bind /dev/ /mnt/dev
  9. 都挂载完了之后使用chroot命令进入我们自己的系统
    $ chroot /mnt
  10. 开始重新安装grub2。我的是直接安装到硬盘MBR中。
    $ grub-install /dev/sda
  11. 如果上面的安装没有提示error,使用下面的命令再次验证安装。
    $ grub-install –recheck /dev/sda
  12. 安装完成了之后,执行以下update-grub命令更新grub.cfg文件中的UUID。
    $ update-grub
  13. grub.cfg可以通过update-grub命令直接修改成功,/etc/fstab文件就没有那么幸运了,只能手动修改。先获取新硬盘UUID
    $ blkid > uuid
  14. 现在可以通过vim把刚刚获得的UUID一一设置到/etc/fstab文件中。
  15. 修改完了之后,退出chroot。按下键盘Ctrl + D。
  16. 卸载硬盘硬盘分区:
    $ sudo umount /mnt/home
    $ sudo umount /mnt/boot
    $ sudo umount /mnt/
  17. sudo reboot

至此,Ubuntu系统成功迁移到新的硬盘。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s