I followed through with my original plan and I have to say it has worked out quite well. For those in a situation like mine, where the installed O.S. has a relatively small footprint (i.e., it is smaller than cheaply-available USB drives) and the hard drive where the O.S. is currently installed is the target drive for migrating the system to a new O.S., this method of migration should prove quite effective. It gives you a working copy of your current O.S., which can be booted to at any time, as well as a copy, accessible as a data partion once the migration is complete, of all files and folders located under the old O.S. It just involves getting a USB drive of the requisite size (I actually got by with a 32GB drive), formatting it ext2, making it bootable with syslinux, copying all data from the old O.S. (that's actually still running) to the USB drive, and finally rebooting the system using the USB drive. More detailed steps below (instructions for a legacy BIOS, non-uefi system).
What is needed: a USB drive of appropriate size, a system that has syslinux installed, and the rsync utility running from the soon-to-be-replaced O.S.
Acquire a USB drive of the requisite size, insert it into your system, create a partition, format it ext2, then set the boot flag for the partition (I used gparted for the last 3 steps).
Make the drive bootable using syslinux: from a system with syslinux installed, run
dd bs=440 count=1 if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdx ("x" being replaced by the drive letter of your inserted USB drive).
Mount the drive and copy needed files for syslinux, from the system syslinux was installed from, using the command
cp /usr/lib/syslinux/bios/*.c32 /syslinux-boot/syslinux/ (those files ultimately belong in the directory /boot/syslinux, but since that directory could get overwritten in step 4., we are temporarily renaming, at this stage, /boot to /syslinux-boot)
Copy all files from the running old O.S. to the USB drive using the command
rsync -aHAXx / /mount/point-of/USB-drive (/ is the root directory of your old O.S., from which you are running rsync, while /mount/point-of/USB-drive will be whatever point at which you mounted your USB drive). This process can take a very long time: on my system, with USB2.0 ports, it took over 12 hours; so be patient.
Once copying is complete, move the syslinux directory located in the /syslinux-boot directory on the USB drive into the /boot directory on the USB drive.
Edit or create a syslinux.cfg file within the /boot/syslinux directory on the USB drive. This can be a bit tricky as you will need to know the exact name and location of the kernel and initramfs you want to use when booting the USB drive. You will also need to stipulate the location of the root file system on the USB drive as it will be seen by your computer's BIOS. My syslinux.cfg file was appropriated straight from the Arch wiki, with just a bit of minor editing to tailor it to my system. It looks something like this:
APPEND root=/dev/sdc1 rw
(/dev/sdc1 is the location of the USB drive on my system)
- Reboot the computer, select in BIOS the newly-copied USB drive as the boot media, and it should boot pretty much as it always has. You can now take the current hard drive out of service and install your new O.S. to it, copying over such data as will be needed from the old installation once the new O.S. is installed and booting.
How long can an O.S. originally installed to a hard drive be run from a USB drive? I have no idea. I think it should be a relatively short period (perhaps a few days?) since, if running from flash media, special configurations are required in order to minimize read/write cycles. My plan is to run the old system from USB for no longer than about a week or two.
Making the drive bootable could probably could be done with GRUB. I favor syslinux over GRUB, so I didn't really investigate that avenue.
Not sure whether the vfat file system could be used in a scheme like this. I thought of using f2fs, which I find interesting for USB projects. Last I checked though, f2fs partitions cannot be booted from; such a variation on the present solution would thus probably require putting 2 partitions on the USB drive--a small ext2 /boot partition for kernel, initramfs and boot files, then the main data partition formatted f2fs. Plus additional editing of syslinux.cfg
If there is any possibility the bootable USB drive running your old O.S. will be used in some other computer, it will be better to use the drive's UUID in your syslinux.cfg file instead of the device path, as I've used.The command blkid will provide the needed information for doing that.
Credits: the Arch wiki (mainly https://wiki.archlinux.org/index.php/syslinux)