Ubuntu更换硬盘

0x00

背景:

  • 目前ubuntu用的是一个80g的硬盘( 一开始没买硬盘,直接拆了一个老老老老的机子来用),系统16.04, 只有一个/分区 ( /dev/sdb1 ) 。
  • 新的硬盘是一块256G的SSD,新装了一个系统,除了2G的swap,其他都归 / 目录了( /dev/sda1 )。

0x01

一些有用的命令:
fdisk -l  # 查看分区

du -lh  # 查看文件目录大小
> 使用参数--max-depth=指定深入 
du -h --max-depth=1 []

# 用管理员权限打开文件夹,在终端输入
sudo nautilus

# 载挂
sudo mount /dev/sda1 /mnt

0x02

下面开始正式操作(终端):

# 在原硬盘
# 切换到root用户
sudo -s
cd /
# 打包除了这几个(原文没有"--exclude=/boot",但我因为/boot/gurb吃了不少苦头,没必要覆盖)
tar cvpzf Ubuntu.tgz --exclude=/proc --exclude=/lost+found --exclude=/Ubuntu.tgz --exclude=/mnt --exclude=/sys  --exclude=/boot / 
# 备份完成后,在文件系统的根目录将生成一个名为“Ubuntu.tgz”的文件,它的尺寸有可能非常大,该文件就可以移动,本文中直接挂载新硬盘复制了。(所以在此之前需要确保还有空间剩余,tgz能压缩到50%一下,仅作参考。)

# 挂载新硬盘, 拷贝文件
mount /dev/sda1 /mnt
cp /Ubuntu.tgz /mnt/Ubuntu.tgz
umount /mnt

# 恢复系统 ( 可以直接在旧系统处理了,直接拷贝文件,第一次做还是小心谨慎一些)
sudo -s 
cd /
tar xvpfz Ubuntu.tgz -C /
# -C 参数是指定tar程序解压缩到的目录。( 在本例中是/ )

如果说这样没有问题的话,那就OK了。

如果不,我只能说说我出现的问题,可做参考:

我是在旧系统的时候解压的,而且覆盖了 /boot/grub,开不了机。

【图】

因此需要修复grub

# 挂载新硬盘
# 先看看 /etc/fstab 里面的UUID是否正确
vim /etc/fstab 
# 使用 lsblk 命令可以清晰的获取全局的块设备布局
# 使用blkid命令可以获取设备的UUID
# fstab文件修改正确

# 重安装grub
# 之前看一下 /mnt/boot/ 下如果有grub文件夹,考虑先把它重命名一下,防止后面的命令失效:
sudo mv /mnt/boot/grub /mnt/boot/grub_bak
sudo grub-install --boot-directory=/mnt/boot /dev/sda
sudo update-grub

如果重启还是没有成功,而是进入新系统进入grub界面。

则:

grub> exit

进入advanced options of ubuntu..

sudo update-grub  # got the grub.cfg

参考: