I have (successfully) attempted to migrate a running i386 stable/9 system into a running amd64 stable/9 system, and attempted to migrate a running i386 stable/10 system into a running amd64 stable/10 system, only to see if these tasks are in fact feasible. The results speaks for themselves, given the boundary conditions outlined below.
If your system has a separate root filesystem of less than 1 GiB, then I suggest you consider scrapping the 32-bit system altogether, and install a fresh 64-bit system. If you wish to continue having a separate root filesystem, make that filesystem no smaller than 2 GiB to accommodate future expansion. You may gain additional free space by deleting
/boot/kernel*/*.symbols prior to installing a new kernel. If this isn’t good enough, then you should limit the modules installed using the
MODULES_OVERRIDE directive in your kernel configuration file. (When 11.0 comes out, all kernel symbol files will live in
/usr/lib/debug/boot/kernel, relieving the stress on the root filesystem.)
The boundary conditions are:
- base built from the appropriate stable branch of the source code tree,
- amd64 snapshot for the appropriate stable branch to speed up parts of the transition,
- the system being able to run with the
GENERICkernel until a new custom kernel is optionally installed,
- if your system needs a custom kernel to function properly, one can be precompiled on a spare 64-bit system and transferred to the subject at the right moment,
- ports built from the ports collection with
ports-mgmt/portmasteras a vital instrument, and
- the ports listed below.