Actualizar el kernel de GNU/Linux en la RaspberryPi sin usar rpi-update

Esta pequeña entrada surge como necesidad de compartir un procedimiento en el que me aventuré, y que sea limpio y mantenible, para poder actualizar a la última versión del kernel GNU/Linux si ya tienes instalado RaspiOS.

Y dirás que para eso existe la utilidad oficial rpi-update que viene instalada, pero no es lo mismo, ese script machaca el archivo del kernel.img con un curl que se lo baja, yo propongo hacerlo desde la paquetería de la propia distribución y dejarla como aparece instalada la última imagen oficial.

Así pues nos posicionamos en nuestra RaspberryPi con RaspiOS y kernel 6.1.21 estancado en viejas dependencias, y vamos a actualizarlo a la versión 6.6.20, todo el proceso hay que realizarlo sin reiniciar:

  • Desinstalamos el viejo kernel con las viejas dependencias
$ sudo apt purge raspberrypi-kernel raspberrypi-kernel-headers raspberrypi-bootloader
  • Se desmonta la partición de boot
$ sudo umount /boot
  • Preparamos el boot para la carga en el directorio firmware
$ sudo sed -i 's/\/boot\s\+vfat/\/boot\/firmware  vfat/' /etc/fstab
  • Se crea el directorio firmware y recargamos systemd
$ sudo mkdir /boot/firmware
$ sudo systemctl daemon-reload
  • Montamos la partición de arranque
$ sudo mount /boot/firmware
  • Instalamos el nuevo kernel con todas sus dependencias
$ sudo apt install linux-image-rpi-v8 linux-headers-rpi-v8
  • Reinstalamos el bootloader para que termine de adaptar la partición de arranque
$ sudo apt install --reinstall raspi-firmware
  • Últimos cambios para dejar el sistema como la imagen oficial
$ cd /boot && sudo ln -s firmware/issue.txt issue.txt && sudo ln -s firmware/overlays overlays && sudo touch config.txt cmdline.txt

Y eso es todo, si ha ido bien podremos reiniciar sin peligro y disfrutaremos de un nuevo kernel actual y sin tantos bugs como el anterior, espero que os sirva, saludos 👋