12

Can I move a working boot partition / root filesystem to another drive/partition and just boot from there?

Or will device names be changed and this cause the system to stop working?

1

3 Answers 3

11

Yes it is possible. Also its not easy. If you intent to move separated /boot partition and or / partition you should consider first of all changing the fstab entries.

If you are moving the files to new partition then don't forget to use cp -p while copying to preserve permissions. adjust then your /etc/fstab to the new UUID's of partitions that you will use. You can get the partition uuid by running blkid /dev/sdXn where X is name of the drive and n number of partition.

You can also use blkid to attach labels to your partitions and then mount via labels which is much easier read man blkid to learn more.

After you change the partitions and adjust /etc/fstab you should run the update-grub - available on Debian/Ubuntu script or grub-mkconfig -o /boot/grub/grub.cfg to generate a new config file and then reinstall grub into the first hdd that you bot from. grub-install --recheck /dev/sda

Of course do not forget that when copiying mount a new / or /boot partition on /mnt and after copying all of the files mount them as / and /boot chroot and only then run update of the grub if you want things to be done correctly.

2
  • Thanks, worked like a charm! Instead of copying file contents, I copied the whole /boot partition with dd and changed the new boot partition UUID using GParted. After that, I followed your instructions to change the /etc/fstab boot entry and do update-grub and grub-install.
    – Tijs Maas
    Commented Dec 25, 2019 at 1:47
  • please put here properly fstab record
    – ilw
    Commented Jan 10, 2023 at 12:29
2

If you use UUIDs in /etc/fstab (and other related files that may be relevant in your distro), like /dev/disk/by-uuid/57c59366-9196-4613-ba53-5ad24dcecfb9, and adjust your boot loader configuration if you move your kernel boot partition, then it should work.

2
  • uuid will not help if he is moving a whole partition content.
    – MarkoShiva
    Commented Aug 12, 2017 at 17:52
  • I meant if he is creating new partition and moving to that new partition content of /boot that new partition will have different UUID its easier to use labels as its easier to keep track of them.
    – MarkoShiva
    Commented Aug 12, 2017 at 18:01
2

I just like to mention what I did to move Debian Stretch installed in old MBR style disk which is near to dying and moved the OS to new disk with GPT, in my case ESP(EFI system partition) is present in old disk, so I was already booting using UEFI. I followed answer already given above by user in1t3r .

  1. Get gparted live in usb
  2. Boot with gparted live, select old drive select partition, copy partition
    Select new drive paste partition, save changes. Do this for root(& boot) and ESP(EFI system partition)
  3. Boot to OS in old drive as normal.
  4. Run sudo gdisk, go to new /dev/sdX check ESP partition, if incorrect set to type ef00. (use ? or 'help' command)
  5. Check the UUID of partiotions copied n new drive, use command sudo blkid, (blkid is part of the e2fsprogs package)
  6. If UUID is not different than OLD partition change UUID of new partition copied in new drive,
    Use command, tune2fs -U random /dev/sdXy
    if it ask to run, e2fsck -f /dev/sdbXy , run it then run tune2fs.
  7. Create mount point directory '/newpart' to mount new drive partition.
  8. Mount new drive OS root(and boot) partitions,
    a) root drv; sudo mount /dev/sdbXx /newpart
    b) ESP drv; sudo mount /dev/sdbXy /newpart/boot/efi
  9. We need to update and generate new grub, but for that we need to chroot to new partition as root
    mount dev,proc,sys on '/newpart' dev,proc,sys
    sudo mount --rbind /dev /newpart/dev
    sudo mount --rbind /proc /newpart/proc
    sudo mount --rbind /sys /newpart/sys
  10. Change /etc/fstab on both new OS part (/newpart/etc/fstab) and old to point root(/) and boot if exists to new UUID,
    UUID=[new-part-UUID] , comment the old one
  11. chroot to '/newpart', sudo chroot /newpart
  12. Run
    a) grub-install --recheck
    c) update-grub
    b) grub-install --recheck
    d) exit (to exit from chroot)
  13. Unmount dev,proc,sys (mount --make-rslave needed 1st for recursive umount)
    sudo mount --make-rslave /newpart/sys
    sudo mount --make-rslave /newpart/proc
    sudo mount --make-rslave /newpart/dev
    sudo umount -R /newpart/sys
    sudo umount -R /newpart/proc
    sudo umount -R /newpart/dev
    sudo umount /newpart
  14. Correct the old OS /etc/fstab to point root(/) and boot id exists as before, (NOTE don't change in new disk)
  15. Reboot,
  16. GO to UEFI-BIOS, chose new disk as boot priority
  17. ON rebooting with new drive ESP, Grub menu will appear, go to 1st menu wiz. OS on new drive .
    (Second menu is for OS in old drive)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .