This is an old revision of the document!
−Table of Contents
Upgrade e downgrade del kernel del Raspberry Pi
La distribuzione ufficiale per il Raspberry Pi è Raspberry Pi OS, una distribuzione GNU/Linux direttamente derivata da Debian. A differenza di Debian però non esistono i pacchetti linux-image-* con i quali è possibile effettuare l'upgrade o il downgrade del kernel.
Per il Raspberry esiste il pacchetto raspberrypi-kernel, ma quel pacchetto deve andare di pari passo con i pacchetti raspberrypi-bootloader, libraspberrypi-{bin|dev|doc} e libraspberrypi0, che contengono le librerie per la gestione della GPU e varie utility.
Per gestire in maniera più comoda e precisa le versioni del kernel, del firmware e delle librerie correlate, è stato sviluppato il progamma rpi-update.
Eseguito senza argomenti, effettua l'aggiornamento all'ultima versione pre-release. Per effettuare un downgrade è necessario individuare il commit che interessa nella pagina GitHub rpi-firmware. Ad esempio si possono individuare i seguenti kernel bump:
May 12, 2020 kernel: Latest 4.19 (in effetti 4.19.118-v7l+) 866751bfd023e72bd96a8225cf567e03c334ecc4 Dec 14, 2020 kernel: Bump to 5.4.81 (in effetti 5.4.83-v7l+) 453e49bdd87325369b462b40e809d5f3187df21d Dec 18, 2020 kernel: Bump to 5.10.1 (in effetti 5.10.1-v7l+) 367c84201db35a85979f1482ebd78e1eef910efc
Quindi, se si vuole tornare in un colpo solo al kernel 4.19 installando anche le librerie e firmare relative, si esegue:
rpi-update 866751bfd023e72bd96a8225cf567e03c334ecc4
Cosa viene installato e dove
Il comando rpi-update scarica e installa file fuori dal controllo del gestore pacchetti deb, pertanto ci troveremo intere gerarchie di file installati, ma non collegati ad alcun pacchetto. Ad esempio tutti i file nella cartella /lib/modules/5.10.17+/ sono stati installati dal pacchetto raspberrypi-kernel, ma gli analoghi file nella cartella /lib/modules/4.19.118+/ non risultano installati da alcun pacchetto (verificare con dpkg -S).
Addirittura rpi-update sovrascrive i file installati da un pacchetto, senza particolari precauzioni. Nel mio caso ad esempio il file /boot/kernel.img (una delle immagini kernel) risulta ancora appartenere al pacchetto raspberrypi-kernel, ma in realtà è stata sovrascritta dalla procedura di downgrade.
In generale i file installati da rpi-update
si trovano in:
- /boot/bcm*
- /boot/bootcode.bin
- /boot/kernel*.img
- /boot/fixup*
- /boot/start*
- /boot/overlays/*
- /lib/modules/<version>/
- /opt/vc/bin/
- /opt/vc/include/
- /opt/vc/lib/
- /usr/bin/
Come ripristinare la versione ufficiale
Per resintallare kernel, firmware, librerie e tool forniti ufficialmente dalla distribuzione si possono reinstallare i seguenti pacchetti:
apt install --reinstall \ libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc raspberrypi-bootloader raspberrypi-kernel
Altri file rimasti da precedenti esecuzioi di rpi-update possono essere eventualmente cercati con find
grazie al timestamp.