Es gibt keine Möglichkeit, zwei vollständige Kernel auszutauschen. Ich bin sicher, Sie können die Bedeutung eines monolithischen Kernels wie Linux verstehen und warum dies es unmöglich macht, ihn einfach zu ersetzen.
Das nächste, was Sie bekommen können, ist ein Live-Patching-Prozess mit Ksplice . Es konvertiert Kernel-Updates in magische Shims, die Löcher in einen laufenden Kernel schließen können, sodass Sie den Computer unbegrenzt eingeschaltet lassen können, ohne dass ein Neustart erforderlich ist. Für Ihre Zwecke können Sie auch Änderungen rückgängig machen.
Es ist kostenlos für Ubuntu Desktop-Editionen, damit Sie damit herumspielen können, aber Sie müssen ein Abonnement für Server bezahlen (wo solche Dinge am dringendsten benötigt werden).
Habe gerade deine Bearbeitung gesehen. Ksplice wird wahrscheinlich nicht helfen, wenn Sie Ihre eigenen Kernel für das Debuggen manuell hacken und erstellen, da "der Dienst" darin besteht, dass sie die speziellen Updates bereitstellen und nicht von Ihnen selbst generiert werden können.
Wenn Sie nur Dinge gegen einen offiziellen Kernel erstellen, funktioniert dies möglicherweise immer noch.
Noch eine Idee: Virtualisierung. Sie können Ihren neuen Kernel erstellen und Dinge in Ihrer VM austauschen und neu starten. Der Neustart wird noch einige Zeit in Anspruch nehmen, aber Sie könnten die VM viel leichter als Ihre Entwicklungsmaschine machen (basierend auf Ubuntu Server, den X-Server löschen, wenn Sie ihn nicht benötigen usw.).
Wie Oli bereits erwähnt hat, ist Ihre beste Einstellung wahrscheinlich die Virtualisierung.
Wenn Sie jedoch an Hardware basteln, ist die Virtualisierung möglicherweise nicht für Sie geeignet. In diesem Fall können Sie
kexec
den laufenden Kernel ohne vollständigen Neustart austauschen.Entnommen von der ArchWiki-
kexec
Seite :Beachten Sie, dass die oben genannten Dienste weiterhin alle Dienste neu starten , einschließlich Ihres Init-Systems, des Anzeigeservers, des Netzwerks usw. Wenn Sie jedoch ein ausreichend schnelles Init-System verwenden,
systemd
können Sie Ihren neuen Kernel seitdem in 2-3 Sekunden starten Sie umgehen das BIOS / UEFI und den Bootloader.Eine ähnliche Beschreibung finden Sie auf der RapidReboot Ubuntu Wiki-Seite .
quelle
Ich denke, diese Antworten müssen aktualisiert werden.
Es gibt jetzt kpatch , das nativer ist als ksplice et al.
Es kann jedoch aus offensichtlichen Gründen keine kerninternen Datenstrukturen ändern, sodass es hauptsächlich für Sicherheits-Hotpatches nützlich ist.
Das allgemeine Problem ist immer: Durch das Ausführen von Prozessen bleiben die Kerneldatenstrukturen erhalten, und es wird erwartet, dass die Kernelfunktionen sie erwarten und zurückgeben. Und ohne diese Prozesse ist es nicht wirklich möglich zu wissen, ob dies der Fall ist. Sie können diese also erst ändern, wenn alle Prozesse, die sie verwenden, neu gestartet wurden. Es würde auch ein Live-Patching all dieser Programme erfordern.
Und ich habe nicht einmal Treiberänderungen erwähnt, wenn sich die Hardware in einem besonderen Zustand befindet. (Gleiches Problem wie bei kexec .)
quelle