Wed, 07 Dec 2005
Upgrading to 64 bits
We are gradually upgrading the working servers in our IS MU cluster to a new hardware - systems based on AMD Athlon64 x2. I don't want to move the whole web cluster to a native 64-bit OS before all servers are upgraded. After having problems with 32-bit GRUB on the new hardware, I have hacked up the following solution:
I have moved all the directories from the root directory to a subdirectory /i386, installed a fresh installation of 64-bit Fedora on this filesystem (keeping the /i386 directory intact), and I boot a native 64-bit kernel with /sbin/init chrooted[?] to the /i386 subdirectory.
Well, the above is just a basic idea. In fact, few other tweaks had to be done - for example sysfs and /dev have to be mounted also inside the chrooted tree before the /sbin/init is started, the root filesystem has to be mounted read-write (because in the chrooted environment the root directory cannot be remounted by the rc.sysinit script - it is not a mount-point at all), few system 32-bit utilities (such as iptables) do not work under the 64-bit kernel, etc.
The whole solution is that I boot a script /i386-start instead of /sbin/init, and this script just runs
exec /usr/sbin/chroot /i386 /sbin/init "$@"
after setting up the system environment. This gives me a chrooted init, running as process #1. I have also started another instance of sshd that listens on a 127.0.0.1:another_port address, so that I can connect to the "outside" 64-bit environment when needed (when installing a new kernel, for example).