Cómo actualizar Debian Stretch a Debian Buster

Llegó la hora

 

En esta ocasión actualizaremos nuestra máquina de laboratorio de Debian 9 a Debian 10, ya le va tocando. Antes de realizar la actualización de cualquier sistema operativo es recomendable tener una copia de seguridad del sistema o por lo menos de los datos que no queremos perder, ya que aunque es un proceso sencillo, cualquier fallo en el proceso de actualización puede dejar el sistema operativo totalmente dañado, como por ejemplo un corte de luz o fallo hardware.

La actualización no sobrescribe nada del directorio /home , pero si es posible que algunas aplicaciones o entornos de escritorio sean sobrescritas con nuevos valores, por ejemplo, si tienes la barra de aplicaciones customizada, esta la perderás y tendrás que volver a customizar o bien averiguar donde guarda esa customización y una vez que se actualice el sistema , sobrescribir el nuevo.

Tener en cuenta que durante la actualización habrá servicios que se detendrán por lo tanto si es un sistema de producción, planificarlo, porque además como se actualizará el kernel es necesario reiniciar. Si la actualización se hace de forma remota(solo si no tenemos entorno de escritorio instalado, porque si no fallará), asegurarse que podremos llegar a la máquina ante cualquier imprevisto, si es una máquina física recomiendo hacer la actualización in-situ, si es virtual simplemente tener acceso al hypervisor. ¿Por qué decimos esto? Se corre el riesgo de perder la red cuando el sistema anterior utiliza nomenclatura eth0,wlan0 una vez actualizado a Buster.

Nota: No se puede actualizar de versiones más antiguas sin haber sido actualizadas previamente hasta Debian 9.

Empecemos

En nuestro caso al ser una máquina de laboratorio en VirtualBox simplemente realizaremos un snapshot, seleccionando la máquina y haciendo click en Tomar, le daremos un nombre por ejemplo PreActualización, con una descripción si queremos como "Antes de actualizar a Debian 10"

Una vez que tenemos copia de seguridad y nos hemos asegurado que ante cualquier inconveniente siempre podremos acceder a nuestra máquina ya sea virtual o física, procedemos abriendo un terminal para comprobar que software de terceros tenemos instalado que no utilice los repositorios puros de Debian 9. 

sudo aptitude search '~i(!~ODebian)'

Si por cualquier motivo no encontrará el comando

sudo apt install aptitude

Y volvemos a lanzar el comando anterior.

Esto nos devolvería una lista de paquetes obsoletos o de terceros, donde los obsoletos sería recomendable desinstalar y los de terceros comprobar que tienen soporte para Debian 10, es más, para evitar posibles conflictos lo mejor es desinstalar el listado que nos devuelva antes de proceder con la actualización y volver a instalar lo que necesitamos tras completar la actualización. Además si tiene paquetes instalados de versiones de prueba, cambie a sus versiones estables o elimínelos.

En nuestro caso no tenemos paquetes obsoletos o de terceros por lo que procedemos primero a actualizar nuestro Debian 9 actual

sudo apt update

sudo apt upgrade

sudo apt dist-upgrade

Comprobamos que no tenemos problemas de coherencia o paquetes rotos.

sudo dpkg -C

sudo apt-mark showhold

Antes de proceder a la actualización si hemos obtenidos inconsistencias o paquetes rotos es necesario solucionarlo, para ello pueden ver detalles con 

sudo dpkg --audit 

O utilizar el siguiente comando para ver el detalle de todos los paquetes instalados en su sistema

sudo dpkg -l | pager

Hecho todo esto con nuestro sistema Debian 9 actualizado y solucionado cualquier problema de paquetes procedemos a actualizar los repositorios, haciendo un backup primero

sudo cp /etc/apt/sources.list /etc/apt/sources.list.back

A continuación sustituimos los repositorios de Stretch a Buster de una manera sencilla en el fichero /etc/apt/sources.list

sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list

Este comando nos sustituirá la palabra stretch por buster en /etc/apt/sources.list , quedando así en nuestro caso.

deb http://ftp.es.debian.org/debian/ buster main
deb-src http://ftp.es.debian.org/debian/ buster main

deb http://security.debian.org/debian-security buster/updates main contrib
deb-src http://security.debian.org/debian-security buster/updates main contrib

# stretch-updates, previously known as 'volatile'
deb http://ftp.es.debian.org/debian/ buster-updates main contrib
deb-src http://ftp.es.debian.org/debian/ buster-updates main contrib

Realizamos lo mismo con las demás listas si habéis comprobado el soporte con Debian 10, aunque recomendamos que dichas listas sean movidas a otro directorio y una vez actualizado procedáis a introducir las listas actualizadas.

sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/*.list

Actualizamos el indice de los paquetes

sudo apt update

Esto nos devolverá al final del todo el número de paquetes actualizables y que ejecutemos lo siguiente si queremos verlos

sudo apt list --upgradable

Por último realizamos el upgrade

sudo apt upgrade

Nos aparecerá la lista de nuevos cambios presionamos q para continuar

Y la siguiente pantalla si queremos reiniciar los servicios sin preguntar, en nuestro caso le decimos que si porque tenemos previsto cualquier incidente o si fuera un servidor de producción estaría comunicada su intervención a quien corresponda.

Para finalizar

sudo apt dist-upgrade

Y reiniciamos para comprobar que todo ha salido satisfactoriamente.

Podéis eliminar los paquetes que ya no son necesarios con

sudo apt autoremove

Pero no lo vamos a dejar ahí, culminaremos actualizando el kernel a la última versión desde las fuentes aprovechando que tenemos la copia de seguridad recién hecha y en caso de sistemas de producción está planificado.

Actualizar el kernel a  la última versión estable kernel-5.6.3

 
OJO!!! En Debian 10 con "su", su PATH  puede no contener directorios donde están muchos comandos de administración, por lo tanto tenemos que inciar con "su -". Si queremos que "su" funcione como siempre debemos editar el fichero /etc/logins.defs y añadir la línea ALWAYS_SET_PATH yes quedando de la siguiente manera
 
 
Otra forma sería ejecutando 
 

export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin

Y para que sea persistente
 
echo 'export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin' >> /root/.bashrc
 
Una vez aclarado este punto indicaros que actualmente no es necesario este proceso de actualización de kernel en muchos casos, pudiendo utilizar gestores de paquetes, pero puestos a crear un post, vemos más interesante aprender a compilar un kernel.
 

OJO2!!! Antes de nada, compilar desde las fuentes un kernel requiere unos cuantos GB libres, 25 en este caso, por lo tanto asegúrate que tienes espacio disponible.

Primero instalamos dependencias

sudo apt install gcc libncurses5-dev dpkg-dev bison flex git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc build-essential libncurses5-dev fakeroot rsync libelf-dev

Nos descargamos el último kernel desde https://kernel.org en /root/kernel por ejemplo siendo root, en este caso no lo vamos hacer en /tmp como en otros post, por si luego queremos reconfigurar, puesto que hay que reiniciar y en /tmp se nos borraría.

cd /root/

mkdir kernel

cd /root/kernel

curl -lO https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.6.3.tar.xz

Lo descomprimimos

tar -xvf linux-5.6.3.tar.xz

Entramos en el directorio

cd linux-5.6.3

Lanzamos

make menuconfig

Donde nos aparecerá una gui de configuración, no entraremos en detalles por lo tanto elegimos General Setup pero echarle un vistazo.

Después de seleccionar General Setup, seleccionamos Local version -append to kernel release

He introducimos .config

Ahora Save/Exit/Exit

Para evitar un error actualizando de esta forma, en el fichero .config que se acaba de crear comentaremos las líneas que contengan CONFIG_SYSTEM_TRUSTED_KEYS de manera rápida

sed -i 's/CONFIG_SYSTEM_TRUSTED_KEYS/#CONFIG_SYSTEM_TRUSTED_KEYS/g' .config

Y construimos el paquete

make deb-pkg -j2

Recordar que con la bandera -j indicaremos los procesadores de los que disponemos para que sea más rápido. Cuando os haga la pregunta del certificado simplemente enter.

Este proceso llevará un buen rato, os podéis tomar un café o tres mientras. Cuando finalice, encontraremos los .deb en el nivel superior, por lo tanto ejecutamos

cd .. && dpkg -i linux-*.deb

Reiniciamos y si todo ha salido bien, escribimos en un terminal para comprobar nuestro kernel.

uname -a

Ahora podemos eliminar el kernel antiguo o dejarlo, de momento recomiendo dejarlo por si os surgiera algún problema con la nueva versión.

Si durante todo este proceso habéis tenido algún tipo de problema escribirnos con el error que os da o cual es el fallo que estáis teniendo y os echamos un cable encantados.

Nota: Cuando ya hayáis compilado a vuestro gusto eliminar la carpeta que creamos /root/kernel para disponer de los 25GB que ocupa.

Un placer, vivan el presente.

TL.

         
    
No hay comentarios

Comenta la entrada