Der Raspberry Pi 4 bringt auch eine Neuerung im Boot Prozess mit sich. Vor dem Pi 4 wurde der Startcode von welchem Device gebootet wird in einem File auf der SD-Card hinterlegt. Der Pi 4 hat dafür ein kleines eeprom in dem die Information gespeichert ist. Der sogenannte Boot Loader. Als der Pi auf den Markt kam konnte er nur von der SD-Card booten, inzwischen gab es Updates, durch die er auch über das Netzwerk booten kann. In Zukunft wird noch die Option von USB zu booten dazukommen. Desweiteren gibt es noch einen Baustein der das Powermanagement macht, das bedeutet er regelt die verschiedenen Spannungen und Strombegrenzungen auf dem Raspberry. Auch dieser Baustein kann geupdatet werden. Es gab schon einige Updates, die den Stromverbrauch gesenkt haben und so die Temperatur des Raspberry ebenfalls. Dieses Tool, wollen wir natürlich auch gerne für das 64 bit System haben.

apt install binutils
cd /tmp
git clone https://github.com/raspberrypi/rpi-eeprom
mkdir -p /lib/firmware/raspberrypi/bootloader/critical
cd rpi-eeprom
cp -va firmware/* /lib/firmware/raspberrypi/bootloader/
cp rpi-eeprom-* /usr/local/bin/
cp -va firmware/vl805 /usr/local/bin
cp rpi-eeprom-update-default /etc/default/rpi-eeprom-update

rpi-eeprom-update -a 

In der Grundeinstellung lädt das Tool nur Release Updates, das heißt Updates von denen man ausgeht das sie keine Fehler mehr haben. Man kann auch den Updater umstellen auf Beta Updates. Dann bekommt man schneller neue Funktionen, aber es kann auch passieren das etwas nicht mehr geht. Das ist aber nicht schlimm, da man mit einer entsprechenden SD-Card (Das Image findet man auf der Raspberry Hompage) den Boot Loader wieder ändern kann falls mal nichts mehr geht.

Um dauerhaft auf Beta Updates umzustellen, einfach die Datei /etc/default/rpi-eeprom-update editieren und in der 3. Zeile "critical" durch "beta" ersetzen.

ein "rpi-eeprom-update -a" aktualisiert dann auf die aktuelleste Version.

 

Hier noch der Systemd Dienst zum automatischen updaten. Ich würde das aber nur machen wenn in der /etc/default/rpi-eeprom-update "critical" steht.

Damit dieser auch automatisch z.B. alle 7 Tage nachschaut braucht es noch einen cron job oder über den Systemd Timer, letzteres habe ich mich noch nicht eingearbeitet, wer sich da auskennt darf gerne eine Anleitung als Kommentar geben. So wie der SystemD Dienst jetzt eingestellt ist, prüft er nach jedem start des Raspberry auf Updates. Das ist OK für einen Desktop, aber als Netzwerkdienstleister der ja gerne Monate ohne Neustart auskommt, eher ungünstig. Wobei letzerem würde ich automatische Updates eh nicht aktivieren.

# Automatische Bootloader update aktivieren
echo "[Unit]
Description=Check for Raspberry Pi EEPROM updates

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/rpi-eeprom-update -a

[Install]
WantedBy=multi-user.target" > /lib/systemd/system/rpi-eeprom-update.service

systemctl enable rpi-eeprom-update.service
systemctl start rpi-eeprom-update.service

So weit so gut, das rpi-eepron-update Script, schaut leider nicht auf den Servern der Raspberry Organisation nach sondern nur in ein Verzeichnis auf dem System, auf dem es aufgerufen wird. Daher benötigen wir noch ein Script das uns die neuen Versionen herrunter lädt.

echo "#!/bin/bash
cd /tmp
git clone https://github.com/raspberrypi/rpi-eeprom

if [[ ! -d /lib/firmware/raspberrypi/bootloader/critical ]]
    then
        mkdir -p /lib/firmware/raspberrypi/bootloader/critical
fi
cd rpi-eeprom
cp -va firmware/* /lib/firmware/raspberrypi/bootloader/
cp rpi-eeprom-* /usr/local/bin/
cp -va firmware/vl805 /usr/local/bin
cp rpi-eeprom-update-default /etc/default/rpi-eeprom-update
cd ..
rm -fr rpi-eeprom 
/usr/local/bin/rpi-eeprom-update -a
" > /usr/local/bin/rpi-eeprom-get-firmware

Nun ändern wir im SystemD Script das unser Download Script aufgerufen wird, welches dann nach dem Download, das rpi-eeprom-update Script aufruft.

sed s/"rpi-eeprom-update -a"/rpi-eeprom-get-firmware/ -i /lib/systemd/system/rpi-eeprom-update.service
klaus
Autor: klaus
Diese Seite dient als Speicher für mein Linux Wissen, das ja doch nach einiger Zeit in Vergessenheit gerät. Vielleicht hilft es ja auch dem Ein oder Anderem ein Problem zu lösen.


Comments powered by CComment