Migrando el sistema de 32 a 64 bits en Arch Linux sin reinstalar

Desde que instalé Arch no lo he cambiado para nada. Me gusta la idea de tener una distro sin tener que hacer reinstalaciones por nuevas versiones, moda u otra razón.

El único problema que tenía, es que al instalarlo no especifiqué la arquitectura correcta y terminé usando un sistema de 32 bits. Esto significaba que Linux sólo me reconocía 3GB de RAM y la demás simplemente no se usaba.

Así que investigando un poco,  me topé con una entrada en la wiki (en inglés) de Archlinux.org. Hay dos formas:

  1. Disco de instalación.
  2. Actualización vía Internet.

En mi caso usé la segunda porque tengo una aceptable conexión a internet y no me quiero andar complicando la vida.

1.- Preparativos:

1.1.- Tener espacio suficiente en disco para alojar los paquetes nuevos en el caché de pacman.

En el directorio /var/cache/pacman/pkgs/ es donde pacman almacena los paquetes que corresponden al sistema. Si no dispones de mucho espacio en la raíz, recomiendo alojar la carpeta en otro lugar en donde tenga al menos 3GB disponibles.La wiki recomienda usar gparted y crear una partición para alojar el caché. En lo personal, recomiendo mover el caché a una partición montana en donde tengamos mucho espacio, para después crear un enlace simbólico. Así que aplicamos los siguientes comandos:

# Movemos el caché al directorio de paquetes (en mi caso es /home)
sudo mv /var/cache/pacman/pkg /home/pkgs
# Creamos el enlace simbólico
sudo ln -s /home/pkgs /var/cache/pacman/pkg

Estos cambios son temporales, al final volveremos a poner todo en su lugar.

1.2.- Quitar los paquetes de AUR o similares.

Esto me dio problemas al momento de instalar los nuevos paquetes de 64 bits debido a que no los podía encontrar en los repositorios, así que recomiendo desinstalar y volverlos a reinstalar cuando tengan listo el sistema de 64 bits.

# Eliminamos los paquetes que no estén registrados en las bds de pacman
sudo pacman -Rs  $(pacman -Qmq)

Si tienes plymouth instalado, recomiendo quitarlo de los flags de tu “mkinitcpio..conf“.

1.3.- Actualizamos y cacheamos los paquetes del sistema de 32 bits

Si eres de los que borra el caché, tendrás que bajar de nuevo todos los paquetes para tenerlos de respaldo por si la migración falla.

# Primero actualizamos el sistema y la lista de paquetes
sudo pacman -Syu
# Después descargamos al caché los paquetes faltantes
pacman -Sw $(comm -23 <(pacman -Qq|sort) <(pacman -Qmq|sort))

Tendrán que techer paciencia con la descarga, que puede llegar a ser algo tardada.

2.- Ejecutando la migración a 64 bits

2.1.- Modificando a pacman

2.1.1.- Cambiando la arquitectura

Editamos el archivo de configuración de pacman que se encuentra en la siguiente ruta:

sudo nano /etc/pacman.conf

Buscamos la línea en donde se encuentre la palabra “Architecture” y cambiamos el valor a x86_64. Al final debe quedar:

Architecture = x86_64

Seguimos con el archivo abierto debido a que haremos más cambios.

2.1.2.- Habilitando el repositorio multilib

Con el pacman.conf abierto, buscamos al final la línea con la palabra “multilib“. Las líneas aparecerán comentadas, así que deberemos quitarlas para tener el siguiente resultado:

[multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

Una vez hecho esto, guardamos y cerramos el archivo.

La razón de activar este repositorio, es debido a que el nuevo sistema tendrá que trabajar con paquetes de 32 bits en el próximo arranque.

2.1.3.- Actualizamos la lista de paquetes

Ahora sincronizaremos las bases de datos de pacman con los repositorios activados:

# La última "y" indica sincronización forzada
sudo pacman -Syy

2.2.- Instalamos el entorno de rescate

pacman -S busybox

2.3.- Instalando el kernel de 64 bits

Invocamos a pacman y hacemos una instalación del nuevo kernel de 64 bits. Esto lo hice como root para ver la salida de mkinitcpio.

pacman -S linux

2.4.- Instalando las librerías de compatibilidad de 32 bits.

pacman -S lib32-glibc

2.5.- Reinicio y comprobación del correcto funcionamiento

Reiniciamos el equipo para ver el inicio del sistema con el nuevo kernel. Una vez hecho esto, abrimos una terminal y tecleamos:

uname -m

Si la salida es x86_64, entonces salió correcta la primera fase de la migración.

2.6.- Instalando el nuevo pacman

Iniciamos sesión como root e instalaremos el nuevo pacman mediante el uso de pactree:

pactree -l pacman | pacman -S -

Después de pacman, seguiremos con wget para que pueda descargar los paquetes de 64 bits

pactree -l wget | pacman -S -

2.7.- Completando la instalación

Seguimos en la sesión de root.Ahora sólo falta reinstalar los paquetes que hacen falta. Les recomiendo tener paciencia porque es algo tardado porque depende de la cantidad de cosas que tengan instaladas.

pacman -S $(pacman -Qq)

Tras terminar con la instalación, reinician otra vez y verifican el correcto funcionamiento de la paquetería instalada.

3.- Dando los toques finales

Recomiendo que prueben el sistema por un rato mientras ven si todo funciona bien. Si en dado caso no funciona todo, desinstalen y vuelvan a reinstalar paquetes.

Si todo va bien, es tiempo de quitar busybox y lib32

sudo pacman -Rcn busybox lib32-glibc

Después limpiamos el caché de pacman con un:

sudo pacman -Sc

Para terminar, eliminamos el enlace simbólico que creamos al inicio y colocamos el caché en su posición original:

sudo rm /var/cache/pacman/pkg
# Devolvemos el caché a su lugar origen
sudo mv /home/pkgs /var/cache/pacman/pkg

Y listo. Con esto ya tendremos un sistema funcionando con la arquitectura de 64 bits y usando más de 3GB de memoria RAM.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s