05 de diciembre de 2014
Francisco Javier Félix Belmonte
Cuando llevas tiempo administrando servidores Linux te sucede que algunos clientes, por antigüedad, tienen aún una instalación de 32 bits que no llegó a actualizarse, o se mejoró el hardware con nuevos procesadores con soporte de 64 bits. Para poder gestionar más de tres gigabytes de memoria y mejorar el rendimiento, es necesario actualizarlo a 64 bits para sacar el mayor provecho al hardware.
En el proceso de migración de un sistema Gentoo de 32 bits a 64 bits existen varias formas de realizarlo. Nosotros creamos un chroot con todo el sistema desde cero y luego vamos copiando la configuración. Esto nos permite actualizar el servidor sin apenas tiempo de desconexión.
emerge --sync
emerge -1 portage
emerge gentoo-sources
El primer proceso en la migración a 64 bits es la instalación de un compilador que permita generar código para otra
plataforma. Para ello, necesitamos las utilidades de crossdev
.
emerge -1 crossdev
mkdir /usr/local/portage
Añadimos en /etc/make.conf
o /etc/portage/make.conf
:
PORTDIR_OVERLAY="/usr/local/portage"
Y compilamos el compilador y su entorno:
crossdev -S -s1 --target x86_64-pc-linux-gnu
Compilamos el kernel y lo activamos en nuestro gestor de arranque (grub / lilo):
make ARCH=x86_64 oldconfig
make ARCH=x86_64 CROSS_COMPILE=x86_64-pc-linux-gnu-
Activamos también “IA32 Emulation” y ajustamos los cambios pertinentes del nuevo kernel, udev u otros.
Reiniciamos la máquina y ya tendremos el kernel de 64 bits funcionando con el resto de aplicaciones de 32 bits.
Descargamos el stage3 apropiado y creamos un
entorno en /mnt/64bits
.
Creamos un directorio en /mnt/64bits
y descomprimimos el stage3 actual. Luego, con chroot /mnt/64bits
, instalamos
los programas necesarios y copiamos la configuración del sistema actual.
Recordar activar los nuevos valores del sistema en make.conf
:
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe"
cp /etc/locale.gen /mnt/64bits/etc/
cp /etc/localtime /mnt/64bits/etc/
mount -o bind /dev /mnt/64bits/dev
mount -o bind /proc /mnt/64bits/proc
mount -o bind /sys /mnt/64bits/sys
mount -o bind /usr/portage /mnt/64bits/usr/portage
chroot /mnt/64bits
source /etc/profile
Una vez instalados todos los programas requeridos, reiniciamos el equipo y lo arrancamos con un sistema de rescate como SystemRescueCD.
Movemos los directorios anteriores del sistema a /mnt/32bits
por si tenemos que realizar una marcha atrás, y movemos
el sistema de 64 bits a su ubicación normal. Luego, con reiniciar, es suficiente para tener todo el sistema a 64 bits
con apenas tiempos de parada.