The following architectures are currently supported:
- x86-32, x86-64
Compatibility of 32-bit/64-bit kernels
|64 bit||64 bit||64 bit||64 bit||OK (1)||OK (1)|
|32 bit||32 bit||32 bit||32 bit||OK (1)||OK (1)|
|32 bit||64 bit||32 bit||64 bit||OK (1)||OK (1)|
|32 bit||32 bit||32 bit||64 bit||(2)||(2)|
|32 bit||64 bit||32 bit||32 bit||(2)||(2)|
|32 bit||any||64 bit||64 bit||(3)||(3)|
|64 bit||64 bit||32 bit||64 bit||(3)||(3)|
(1) These cases are "homogeneous", with conditions equal at checkpoint and restart. These cases work.
(2) These cases consider 32 bit program, and vary only the environment - the kernel may change from 32 to 64 or back. For these to work, userspace will have to modify (at least) the arch-id of the checkpoint image, and perhaps other fields.
(3) These cases consider the restart program itself with different bit-ness than the checkpointed program. Transition may occur in either direction. For these, we will have userspace use execve() to re-launch itself with the proper bit-ness per process during the tree construction.