Bei der apt-get upgrade
Ausführung von RPi 3 werden viele Ausgabezeilen wie folgt angezeigt:
Adding 'diversion of /boot/bcm2708-rpi-b-plus.dtb to /usr/share/rpikernelhack/bcm2708-rpi-b-plus.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2708-rpi-b.dtb to /usr/share/rpikernelhack/bcm2708-rpi-b.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2708-rpi-cm.dtb to /usr/share/rpikernelhack/bcm2708-rpi-cm.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2709-rpi-2-b.dtb to /usr/share/rpikernelhack/bcm2709-rpi-2-b.dtb by rpikernelhack'
Adding 'diversion of /boot/bcm2710-rpi-3-b.dtb to /usr/share/rpikernelhack/bcm2710-rpi-3-b.dtb by rpikernelhack'
Adding 'diversion of /boot/kernel.img to /usr/share/rpikernelhack/kernel.img by rpikernelhack'
Adding 'diversion of /boot/kernel7.img to /usr/share/rpikernelhack/kernel7.img by rpikernelhack'
Adding 'diversion of /boot/COPYING.linux to /usr/share/rpikernelhack/COPYING.linux by rpikernelhack'
...
...
...
Ich bin nicht sehr gut mit den Funktionen des Linux-Kernels vertraut und das sieht für das RPi ziemlich spezifisch aus.
Meine Frage ist: Was ist das alles?
Was ist eine Ablenkung? Was tun all diese Dateien (als Gruppe), auf die verwiesen wird? Was ist "rpikernelhack"?
Ich habe ein bisschen gegoogelt und konnte nicht leicht etwas Interessantes finden. Ich glaube, ich bin nicht der Einzige, der neugierig ist, also hoffe ich, dass dies eine angemessene Frage ist!
apt-get upgrade
.preinst
Teil:dpkg-divert --package rpikernelhack --divert /usr/share/rpikernelhack/kernel.img /boot/kernel.img
. @ Goldilocks Link erklärt--package
klar.Antworten:
"rpikernelhack" ist ein gefälschter Paketname und ein Verzeichnisname, die als Teil eines Hacks (im Sinne einer unsauberen, aber zweckmäßigen Lösung eines Problems) verwendet werden, um die Tatsache zu umgehen, dass die Raspberry Pi Foundation beschlossen hat, eine fat32-Partition zu erstellen / zu booten und dpkg verträgt sich nicht gut mit fat32. Ich war derjenige, der anfänglich auf die Idee gekommen ist, obwohl sie später von anderen verfeinert wurde.
dpkg installiert neue Dateien auf einer Fat32-Partition (und gibt dabei einige Warnungen aus). Wenn es jedoch versucht, eine vorhandene Datei auf einer Fat32-Partition zu aktualisieren, schlägt dies fehl (iirc versucht, eine Sicherungskopie der alten Datei zu erstellen, indem es einen Hardlink erstellt) und fat32 unterstützt keine Hardlinks).
Wenn Leute (einschließlich mir) anfingen, Deb-Pakete von Pi-Kerneln und Firmware zu erstellen, stießen sie auf dieses Problem, ein Paket wurde zunächst installiert, aber der Versuch, es zu aktualisieren, schlug autsch fehl.
Mein Workaround bestand darin, die "Umleitungs" -Funktion in dpkg (ab) zu verwenden. Diese Funktion sollte das Umleiten von Dateien ermöglichen, damit sie entweder durch lokal geänderte Versionen oder durch Versionen aus einem anderen Paket ersetzt werden können. Ich konnte sie jedoch aus den Betreuerskripten heraus so verwenden, dass dpkg seine Installationsaufgaben auf einem ausführt Linux-Partition und verschieben Sie die Datei am Ende an ihren endgültigen Speicherort.
Bei Umleitungen müssen Sie entweder einen "Paketnamen" oder "lokal" angeben. Wenn Sie einen Paketnamen angeben, wirkt sich die Umleitung auf die Dateien aus, die allen Paketen gehören, mit Ausnahme der von Ihnen angegebenen. Ich brauchte auch ein Verzeichnis, um die Dateien umzuleiten.
Die Verwendung des Namens des installierten Kernelpakets hätte den Hack unwirksam gemacht. Die Verwendung von "local" schien ebenfalls falsch zu sein, da dies für die Verwendung durch den lokalen Systemadministrator reserviert sein soll. Also brauchte ich einen gefälschten Paketnamen, der mit nichts in Konflikt geraten konnte. Ich habe mir "rpikernelhack" ausgedacht und diese Zeichenfolge auch für den Verzeichnisnamen verwendet.
quelle
Es ist nur der Verzeichnisname, der von den Entwicklern angegeben wurde, die einen für Raspberry Pi spezifischen Satz von Patches für den Linux-Kernel erstellt haben.
Die Raspbian-Entwickler haben das
FAT
Problem behoben, dass das Dateisystem im Kernel 2016 beschädigt ist. Dies ist eine Aktualisierung des Kernels 2017 und kein Grund zur Sorge. Um dieses Kernel-Update durchzuführen, müssen Siesudo apt install -f
die durch den Fehler verursachten Abhängigkeitsprobleme beheben (-f
in diesem Kontext bedeutet dies laut Manpageapt-get(8)
:)
quelle
FWIW, dies geschah erneut, als ich am 28.02.2019 ein Update auf einer rpi3b + -Laufstrecke durchführte. 182 Umleitungslinien ... rpikernalhack ... davon hier ein Beispiel:
Wenn es hilft, habe ich vor einer Stunde ein Update-Upgrade durchgeführt und dabei (2) Hash-Summen-Fehlanpassungen festgestellt. Vielleicht war es gerade, als das Repository aktualisiert wurde? Ich startete neu, wartete eine Stunde und führte das zweite Update-Upgrade durch. Es gab keine Hash-Summen-Fehlanpassungen, und das war auch der Zeitpunkt, an dem ich die 182 Umleitungszeilen bekam ... rpikernalhack.
Die resultierende Version:
Wenn ich 'update upgrade' sage, meine ich natürlich ...
Ich habe dies auf Grund seiner Länge unbeholfen als Antwort gepostet, in der Hoffnung, dass es die ausgewählte Antwort bereichern würde, was zeigt, dass so etwas kein einmaliger „Fix“ aus dem Vorjahr ist.
quelle