Rénich's Blog

De CentOS Stream 9 a 10 con leapp

Hero image for De CentOS Stream 9 a 10 con leapp

24 de junio de 2026 • 4 min de lectura

Ahora te voy a contar una de esas aventuras de SysAdmin que te ponen a sudar frío, pero que al final te dejan con una sonrisa de oreja a oreja.

Acabo de migrar mi servidor físico de CentOS Stream 9 a CentOS Stream 10 usando Leapp. La neta, aunque el proceso es noble, me topé con varias broncas en el camino (desde falta de espacio en boot hasta conflictos de red) y aquí te dejo el mapa completo para que usted, ¡pare de sufrir!

El Parote de Dracut Hostonly

Antes de que pudiera siquiera pensar en correr el preupgrade, me di cuenta de que mi partición /boot (de apenas 1 GB) estaba al 65% de capacidad. Como DNF necesita instalar el nuevo kernel y Leapp requiere mínimo 100 MB libres para maniobrar, no se iba a armar la cosa.

Como tengo XFS sobre LVM en la raíz (y esa chingadera no se puede encoger online ni offline), no podía simplemente reparticionar el disco. Por fortuna, hace un ratito te conté cómo apliqué el paro definitivo para tu boot con dracut hostonly.

Siguiendo esos pasos, reduje el peso de cada RAM disk de ~235 MB a ~69 MB. Eso me devolvió ~330 MB libres de inmediato, dejando mi boot al 32% de uso y abriendo la puerta para continuar con el upgrade sin tener que andarme metiendo en desmadres de reparticionar discos en vivo.

Note

La neta es que, mi servidor físico (local), no está en producción. Nomás que... me da weva conectarle un monitor y un teclado para moverle...

Preparando Leapp y el Preupgrade

Con el espacio libre resuelto, instalé las herramientas necesarias para la migración. En CentOS Stream, esto se hace a través de los paquetes de ELevate:

dnf install leapp-upgrade-el9toel10

Una vez instalado, corrí la herramienta de diagnóstico para buscar inhibidores (bloqueos del sistema):

leapp preupgrade

El Desmadre de ifcfg y los Inhibidores

El reporte inicial me arrojó un inhibidor de alto riesgo: Legacy network configuration found.

Resulta que en CentOS Stream 10 se eliminó por completo el soporte para los viejos archivos ifcfg-* en /etc/sysconfig/network-scripts/. Si no migras esto, tu tarjeta de red no va a levantar al reiniciar y tu servidor va a quedar incomunicado en la calle.

  1. Migrar la conexión a formato `keyfile` (nativo de `NetworkManager`): Utilicé la herramienta nativa de NetworkManager para convertir el perfil.

    nmcli connection migrate enp6s0
    

    NetworkManager automáticamente borró el archivo ifcfg-enp6s0-1 y creó el nuevo perfil estructurado en /etc/NetworkManager/system-connections/enp6s0.nmconnection.

  2. Limpieza de systemd: Leapp también detectó symlinks rotos de servicios viejos (como vdo.service y zabbix-server-mysql.service) que andaban estorbando. Los borré de volada:

    rm -f /etc/systemd/system/multi-user.target.wants/zabbix-server-mysql.service /etc/systemd/system/multi-user.target.wants/vdo.service
    

Corrí de nuevo leapp preupgrade y esta vez arrojó exit code 0 (¡libre de inhibidores!). Aunque advirtió que mi procesador (AMD Family 15h) ya no tiene soporte oficial por Red Hat, verifiqué con el linker que soporta la microarquitectura x86-64-v3 sin bronca.

La Gran Migración

Con el semáforo en verde y mis respaldos al día, arranqué la descarga de paquetes. (mentiras... ni respaldé nada...)

Warning

¡Mucho ojo con la sesión SSH! La descarga e instalación del entorno temporal pesa más de 2 GB. Si tu SSH se desconecta por timeout a la mitad del jale, el proceso padre va a morir por un error de "Broken pipe" y va a tronar el instalador gacho. Para evitar desmadres, lo ideal es correr todo dentro de una sesión de tmux (o screen) para que puedas desconectarte y reconectarte sin perder la ejecución:

# Iniciar una sesión de tmux
tmux new -s upgrade

# Correr el upgrade
leapp upgrade

Si por alguna razón la red parpadea o se te cierra la sesión, sólo tienes que volver a conectarte y restaurar el cotorreo con tmux a -t upgrade.

Cuando el comando terminó con éxito y me indicó que todo estaba listo, ejecuté el reinicio:

reboot

El sistema se apagó, cargó el kernel especial de actualización (ELevate-Upgrade-Initramfs), ejecutó la transacción de paquetes y se volvió a reiniciar de manera automática.

Verificación y Limpieza Final

Al volver a entrar por SSH, verifiqué que ya estaba del otro lado:

cat /etc/os-release

Ya chingamos: CentOS Stream 10 (Coughlan)` con kernel 6.12.0.

Sin embargo, el comando systemctl is-system-running me devolvió el estado degraded. El culpable era el servicio systemd-networkd-wait-online, el cual estaba habilitado por una instalación vieja pero no tenía perfiles activos (ya que NetworkManager controla todo el desmadre).

Lo desactivé para dejar el sistema limpiecito:

systemctl disable --now systemd-networkd systemd-networkd-wait-online systemd-networkd.socket
systemctl reset-failed

Volví a checar el estado y finalmente quedó en running. ¡Chulada de sistema!

Conclusiones

La neta es que migrar con Leapp es bastante fácil si sabes leer los reportes y previenes los bloqueos antes de reiniciar. La clave de esta historia fue optimizar dracut y no dejar ningún perfil ifcfg de red vivo.

¿Qué te parece? ¡¿Te avientas la actualización de tus servidores a CentOS Stream 10?! Si no te animas, échame un grito. :)