Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

Mac-Wartung: Alte Kernel-Erweiterungen entfernen

Hardwarenahe Funktionen, beispielsweise Treiber oder Dateisysteme, hat macOS über viele Jahre als Kernel-Erweiterungen (Dateiendung kext) eingebunden. Diese Möglichkeit stand auch Herstellern von Zubehör zur Verfügung. Auf diese Weise integrierten viele Anbieter Treiber für Drucker, Mäuse oder Audio-Interfaces in macOS. Allerdings gefährden sie die Sicherheit und Stabilität des Systems. Seit macOS 14 (Sonoma) deaktiviert Apple standardmäßig alle Kernel-Erweiterungen, die nicht von Apple selbst stammen; Systemerweiterungen nehmen ihren Platz ein. Trotzdem können weiterhin alte Kernelerweiterungen aktiv sein. Um sie zu entfernen, muss man Handarbeit vornehmen. Wie das funktioniert, erklärt Howard Oakley in einer ausführlichen Anleitung.


Um zunächst zu überprüfen, welche Kernel-Erweiterungen auf dem Mac generell aktiv sind, sollten Sie zunächst eine Bestandsaufnahme vornehmen. Dafür rufen Sie im Finder über das Menü „Gehe zu“ den Eintrag „Computer“ auf (Tastenkürzel +C). Nach einem Doppelklick auf „Macintosh HD“ öffnen Sie den Library-Ordner und schauen im Unterordner „StagedExtensions“ nach, welche Kernel-Erweiterungen macOS derzeit geladen hat. In diesem Ordner zeigt macOS derzeit aktive Kernel-Erweiterungen an – Sie können dessen Inhalt nicht verändern. In vielen Fällen ist dieser Ordner leer – in diesem Fall müssen Sie nichts weiter unternehmen.

Programmspezifische Kernel-Erweiterungen
Falls der Ordner „StagedExtensions“ nicht leer ist, gibt die Ordnerstruktur weitere Hinweise auf die Herkunft der Kernel-Extension: Befindet sie sich in einem Unterordner namens „Applications“, gehört diese zu einem installierten Programm. In diesem Fall sollten Sie die Support-Seiten des Anbieters aufsuchen und deren Deinstallationsempfehlungen befolgen. Teilweise erfordert dies, das aktuelle Installationsprogramm des Herstellers herunterzuladen und nach dem Start die Option „Deinstallation“ zu wählen. In anderen Fällen enthält die entsprechende App einen Befehl zum Entfernen vom Programm und Erweiterungen. Wieder andere, beispielsweise Logitech, verstecken ihren Uninstaller im Ordner „Programme/Dienstprogramme“.

Kernel-Erweiterungen ohne App
Objekte unter /Library/StagedExtensions, die nicht im Applications-Unterordner liegen, geben durch die Ordnerstruktur Hinweise auf ihren Ursprung: Objekte unter „Library/Extensions“ sollten Sie in eben demselben Unterordner von Macintosh HD finden. Dort könnten Sie nicht benötigte und unabhängig von Apps installierte Kernel-Erweiterungen von Hand löschen. Im StagedExtensions-Ordner bleiben diese dann allerdings bestehen – selbst über Neustarts hinweg. Sie müssen dem System direkt mitteilen, dass diese Kernel-Erweiterungen nicht mehr aktuell sind.

Diskrepanz zwischen StagedExtensions und Extensions: Hier muss per Kommandozeile aufgeräumt werden.

Kommandozeile notwendig
Um eine Kernel-Erweiterung abzumelden, benötigen Sie den Pfad oder den Bundle-Identifier. Der Pfad ist am einfachsten zu verwenden – Sie haben ja bereits die Verlinkung herausgefunden. Im Ordner „StagedExtensions“ liegt die Kernel-Erweiterung „ContourShuttle.kext“ beispielsweise im Unterordner /Library/Extensions/. Diesen Pfad können Sie an die Befehlskette "sudo kmutil unload -p " anhängen:

sudo kmutil unload -p /Library/Extensions/ContourShuttle.kext

Im Anschluss geben Sie Ihr Administrationskennwort ein, drücken auf Enter und warten darauf, dass der Eingabeprompt wieder erscheint. Nun entfernen Sie das gleichnamige Pendant im Ordner „/Library/Extensions“ und starten den Mac neu.

Verwaiste Kernel-Erweiterungen
Es gibt Situationen, in denen unter StagedExtensions Erweiterungen gelistet sind, die von ihrem ursprünglichen Ort längst entfernt wurden. In diesem Fall war der Deinstaller des Herstellers nicht erfolgreich, die Erweiterung im System „abzumelden“. In diesem Fall hilft nur noch der Holzhammer: Alle Erweiterungen via kmutil abmelden und auf diese den Neuaufbau der Datenbank erzwingen. Oakley weist darauf hin, dass Sie danach eventuell notwendige Kernel-Erweiterungen erneut installieren müssen. Dafür verwenden Sie den Befehl

sudo kmutil clear-staging

Diesen Befehl müssen Sie erneut mit Ihrem Admin-Kennwort bestätigen. Das Resultat können Sie direkt beobachten, wenn Sie den Ordner „StagedExtensions“ geöffnet haben: Er ist im Anschluss leer. Über die Eingabe

sudo kmutil rebuild

sorgen Sie anschließend dafür, dass macOS den Kernel-Cache erneut aufbaut. Dieser Befehl steht allerdings erst in neueren Versionen zur Verfügung, in macOS 13 (Ventura) gibt es ihn noch nicht. Ein Neustart sollte in diesem Fall zu einem ähnlichen Resultat führen.

Der Befehle „kmutil clear-staging“ räumt mit veralteten Kernel-Erweiterungen auf. Der Befehl „kmutil rebuild“ und/oder ein Neustart lädt dann notwendige Erweiterungen erneut.

Wenig Gründe für Kernel-Erweiterungen
Ein Mac mit macOS 14 (Sonoma) und neuer erfordert den Betrieb unter reduzierter Sicherheit, um Kernel-Erweiterungen zu betreiben. Bis auf den Betrieb von Hardware ohne aktualisierte Treiber gibt es dafür nur wenig Anlass. In den Kommentaren von Howard Oakleys Blog-Beitrag wird ein legitimer Grund aufgeführt, weiterhin Kernel-Erweiterungen zu verwenden: Wer SMART-Statusmeldungen für externe USB-Laufwerke sehen will, kann dies derzeit nicht ohne Kernel-Erweiterung.

Kommentare

brad12majors06.12.24 09:44
Danke für den Beitrag!
Ich habe ein paar alte Druckertreiber in StagedExtensions. Wenn ich versuche, sie mit "sudo kmutil unload" abzumelden, kriege ich eine Fehlermeldung "Error Domain=KMErrorDomain Code=71 "Kernel request failed: (libkern/kext) not found".
Aber auch nach einem "sudo kmutil clear-staging" und "sudo kmutil rebuild" sind sie wieder da.
Hat jemand einen Tip?
Merci!
+2
sudoRinger
sudoRinger06.12.24 10:54
Die Druckertreiber sind vermutlich noch auf deinem System vorhanden und müssen manuell entfernt werden. Mit KnockKnock kannst du überprüfen, ob diese Treiber noch registriert sind und wo sie gespeichert sind.
+1
globalls
globalls06.12.24 16:09
bei mir findet sich nur ein Ordner Library und darin Extensions. Darin wiederum siehe Bild:

Trotzdem trau ich mich nicht, irgendwas zu löschen. never change a running system (Otto Normalverbraucher Modus aus)
Muss ich denn alles selber machen?
0
brad12majors06.12.24 18:10
sudoRinger
Die Druckertreiber sind vermutlich noch auf deinem System vorhanden und müssen manuell entfernt werden. Mit KnockKnock kannst du überprüfen, ob diese Treiber noch registriert sind und wo sie gespeichert sind.
Ah, danke!
Die sind im /Library/Extensions Ordner, darf ich die da einfach löschen und neustarten?
0
sudoRinger
sudoRinger06.12.24 19:55
brad12majors
Die sind im /Library/Extensions Ordner, darf ich die da einfach löschen und neustarten?
ja, nach unload (siehe Artikel) einfach löschen und Neustart.
+1
DocThorr07.12.24 12:35
Super Beitrag, sehr hilfreich. Vielen Dank dafür!
+1

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.