profileName: update2wp
postId: "56"
postType: post
categories:
- 7UBUNTU server系统迁移
tag: linux, ubuntu
家里的NAS系统盘已经工作了19000+多个小时了,很担心它有一天会突然罢工。趁SSD便宜,入了一块。但原来的NAS上设置了很多东西:seafile, aria2,amule,还有一些备份脚本,如果重装系统,重新部署这么多软件也着实麻烦。所以想着还是把系统整体迁移吧。
原系统分区情况,设备为sdb:
/dev/sdb1 EFI 启动分区
/dev/sdb2 / 根分区
/dev/sdb3 /var 分区
/dev/sdb4 /home 分区
/dev/sdb5 swap分区
新硬盘的分区情况,设备为sda:
新硬盘为sda
/dev/sda1 0-512M: EFI分区 格式化为vfat
/dev/sda2 512M-4G SWAP分区 格式化为swap
/dev/sda3 4G-END / 根分区
新的硬盘是120G的,全部用来安装新系统。所以需要将原来的/var和/home分区中的东西全部拷到现在的/var和/home目录下。分区和格式化的过程略了。这里要注意的一点是,新的EFI分区,我们需要用disk工具将分区标记为0xef00。
用fdisk也可以修改,在fdisk命令中,输入t
If you want to change the type, press
lto get a list of partition types and then presstto change the type.
我将之前的系统数据使用tar全部打包在sysbackup.tar.gz中。下面是将sda设备在/mnt恢复。
cd /mnt
mkdir sda3
mount /dev/sda3 /mnt/sda3
将所有的数据放到sda3上
解压数据到sda3
把原本var 分区的数据放到/mnt/sda3/var, 把原本home分区的数据放到/mnt/sda3/home/
挂载/dev/sda1 到/mnt/sda3/boot/efi
然后把原本EFI分区的数据放到/mnt/sda3/boot/efi,这部分数据实际是放在了/dev/sda1上。
最后的数据是这样的:
编辑/mnt/sda3/etc/fstab,修改UUID,可以使用blkid来得到分区的UUID
修改后只有3个分区,所以只要保留三个分区的信息就行。
这一步是花费我时间最多的一个步骤。由于对grub的工作原理理解不到位,对UEFI也不太熟悉,期间走了很多弯路。建议各位如果有这方面的疑问,可以看看ARCH上的wiki。
1,首先需要挂载三个目录,
mount -o bind /dev /mnt/sda3/dev
mount -o bind /proc /mnt/sda3/proc
moutn -o bind /sys /mnt/sda3/sys
2 ,切换根目录到/mnt/sda3
chroot /mnt/sda3 下面几步的操作都是在chroot下完成的。
3 , 安装grub到设备/dev/sda
grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda (这里注意要把/dev/sda1 mount到/boot/efi, 这里的/boot/efi就是/mnt/sda3/efi)。
4, 最后更新一下grub
update-grub
更新grub。
U盘启动要从UEFI启动,否则在grub-install时可能会报错:
EFI variables are not supported on this system
20190301