操作系统

Linux系统硬盘迁移

背景:

  1. 原硬盘为UEFI引导,存在EFI和ext4两个分区,Ubuntu系统
  2. 目的硬盘为UEFI引导,已经存在一个EFI和NTFS分区,以及一个Windows系统
  3. 目标:将原硬盘中的Ubuntu迁移至目的硬盘,组成双系统

 

首先在目的硬盘中压缩一块空间,格式化为ext4,用来放即将迁移过来的Ubuntu

首先通过U盘启动另一个Linux,插上两块硬盘,分别为/dev/sda,/dev/sdb。可以看到/dev/sda有两个分区,/dev/sdb有三个分区,其中/dev/sd*1为EFI系统。

使用gparted可以看到/dev/sd*1为FAT格式,带有boot标记。那么我们

> mkdir old_efi new_efi old_system new_system

> sudo mount /dev/sda1 old_efi    #Ubuntu的引导

> sudo mount /dev/sdb1 new_efi  #Windows的引导

> sudo mount /dev/sda2 old_system   #Ubuntu的系统

> sudo mount /dev/sdb3 new_system #存放Ubuntu系统的位置

> ls old_efi/EFI

ubuntu/

> ls new_efi/EFI

Microsoft/

> sudo cp -a old_efi/EFI/ubuntu new_efi/EFI #复制引导文件

> uuid=sudo lsblk –fs | grep sdb3 | awk ‘{print $3}’ #拿到新Ubuntu分区的uuid

> sudo vim new_efi/EFI/ubuntu/grub.cfg

> sudo vim new_system/etc/fstab

 将原来的uuid修改为新的uuid

> sudo cp -a old_system/* new_system/ #复制Ubuntu系统

 

以上完成后重启就应该能从新硬盘里看到Ubuntu引导了

如果没有成功只能再改grub了。进入新Ubuntu(用grub rescue或U盘引导并chroot),修改/boot/grub/grub.cfg对应的uuid

sudo vim new_system/boot/grub/grub.cfg

:%s/{old_uuid}/{new_uuid}/g       #替换所有uuid

sudo update-grub

sudo grub-install

sudo reboot now

Leave a Reply

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 / Change )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s