This only works if the boot partition identifies the location of the rootfs partition using some consistent method, such as by partition label.
(I know Ubuntu Mate uses this approach, which makes it impossible to have more than one instance of the OS on your storage devices.)
Normally the location of the rootfs is stored in /boot/cmdline.txt if it uses the RPi bootloader.
However, some later versions of Ubuntu use U-Boot for the boot loader, and U-Boot has several different methods to boot the OS, including using some boot.scr script files that are often compressed using gzip and cpio. Such OSes are more difficult to relocate to different partitions. Sometimes it is necessary to remove UBoot altogether and use the RPi bootloader instead.
PINN - NOOBS with the extras... https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=142574