
Es gibt ein bestimmtes Ubuntu-Image, das (von der SD-Karte) mit einem Hardware-Controller funktioniert. Das gesamte Image benötigt aufgrund der Größe der Karte 2 Gigabyte. Das Image basiert auf dem alten Kernel. Wir müssen das Motherboard austauschen, da das alte nicht mehr verfügbar ist und das neue nicht mit dem alten Kernel funktioniert. Und am wichtigsten ist, dass (aufgrund eines gewissen Chaos beim Entwicklerwechsel) das Root-Passwort des Images unwiderruflich verloren geht. Das heißt, ein zivilisierter Austausch des Kernels von innen wird leider nicht funktionieren. Die Frage ist: Ist es möglich – und wie kann ich – den Kernel außerhalb des Systems ändern, ohne den Rest zu ändern, indem ich einfach die Karte mit dem vorhandenen Image von meinem Laptop neu beschreibe? Wenn nicht, muss ich das gesamte optimierte und debuggte Image neu erstellen, was ich vermeiden möchte.
Antwort1
Erstens kann ich nicht genug betonen, dass Sie nicht Ihre Arbeitskopie verwenden sollten, sondern eine Sicherungskopie erstellen und diese verwenden sollten, falls etwas schrecklich schief geht.
Das funktioniert möglicherweise nicht, aber es ist Ihre beste Chance.
Der Kernel ist zunächst auf die Dateien in /boot angewiesen.
System.map-4.19.1-1-default
.vmlinuz-4.19.4-1-default.hmac
config-4.19.4-1-default
initrd-4.19.1-1-default
initrd is symlinked to above
symvers-4.19.1-1-default.gz
sysctl.conf-4.19.1-1-default
vmlinux-4.19.1-1-default.gz
vmlinuz symlink to below
vmlinuz-4.19.4-1-default
Sie benötigen alle diese Dateien aus der vorhandenen neuen Version. Die meisten Dateinamen enthalten natürlich die Versionsnummer und sind je nach der von Ihnen verwendeten Kernel-Version unterschiedlich.
In /lib/modules/ gibt es eine Reihe von Ordnern, einen für jede Kernel-Version. Beispiel:
4.19.4-1-default
Alle Module in diesem Ordner müssen kopiert werden.
Schließlich müssen Ihre Grub- oder Grub2-Dateien geändert werden, damit sie auf diese neuen Dateien verweisen.
- Sichern Sie Ihre SD-Karte und verwenden Sie die Sicherungskopie
- Wenn Ihr altes Motherboard kein UEFI ist, deaktivieren Sie es auf dem neuen Motherboard, da es sonst zu Problemen kommt.
- Besorgen Sie sich eine andere SD-Karte/Festplatte
- Installieren Sie eine neuere Version der von Ihnen verwendeten Distribution.
- Kopieren Sie /boot und /lib/modules/ an die entsprechenden Stellen auf der Sicherungskopie Ihres Betriebssystems. Falls vorhanden, sollte auch /usr/lib/bootloader kopiert werden.
- Booten Sie und sehen Sie, was passiert.
Es wird wahrscheinlich weitere Kompatibilitätsprobleme geben. Die größte Gefahr besteht darin, zu weit vorzudringen und von initd auf systemd umzusteigen oder andere größere Änderungen vorzunehmen.
Ich würde vorschlagen, herauszufinden, welche Version der Distribution Sie verwendet haben, und zunächst nur eine Version höher zu wechseln. Wenn die Installation fehlschlägt, können Sie jeweils eine Version weitergehen.
Wenn Sie über ein bootfähiges System verfügen, empfehle ich die Verwendung von apt-get oder ähnlichem, um ein vollständiges Distributions-Upgrade ordnungsgemäß durchzuführen.