Systemerweiterungen können nicht verwendet werden Fehler

0

Wenn ich bestimmte Software installiere, normalerweise alles, was mit dem Drucker zu tun hat, erhalte ich diese Fehlermeldung

System extension cannot be used

The system extension "/System/Library/Extensions/Belcarra.
USBLAN_netpart.kext" was installed
improperly and cannot be used.  Please try
reinstalling it, or contact the product's vendor for an
update

Dies begann, nachdem ich einige Druckerordner gelöscht hatte, von denen ich dachte, ich würde sie nicht mehr verwenden. Ich erhalte ungefähr 30 Fehlermeldungen in einer Reihe, alle mit unterschiedlichen Pfaden, aber die gleiche Meldung, die sich auf kext-Dateien bezieht. Ich habe versucht, Berechtigungen mit der Mac-Boot-CD zu reparieren, aber es schien nicht zu helfen. Normalerweise klicke ich mich einfach durch alle Fehler und nichts scheint betroffen zu sein. Irgendwelche Ideen, wie man das dauerhaft behebt?

Paul Belardi
quelle

Antworten:

0

Es sieht so aus, als ob wer auch immer es bei Logitech war, der das erstellt hat Harmony 1000-Installationspaket für OS X hatte absolut keine Ahnung, wie man es richtig macht.

Die Dateiberechtigungen der Dateien, die das Installationspaket installiert, sind vollständig verpfuscht. Einige sind auf eine Benutzer- und Gruppen-ID von 509 und 509 eingestellt, die auf meinem Computer nicht einmal vorhanden ist. (Der anfängliche OS X-Benutzer hat eine UID von 501, und jeder weitere Benutzer hat die nächsthöhere UID. Beispiel: 502, 503 usw. Wenn Sie also nicht insgesamt 8 Benutzer haben, wird auf Ihrem System nicht einmal 509 definiert ).

Die Dateiberechtigungen der installierten .kext-Dateien haben eine UID und eine GID von 510 bzw. 510. OS X weigert sich, Kexts zu laden, es sei denn, sie verfügen über die entsprechenden Berechtigungen. Das heißt, ein Benutzer von root (UID von 0) und Gruppe von wheel (GID von 0).

[BEARBEITEN] OK, es scheint, dass Logitech die Dateien tatsächlich mit verpatzten Berechtigungen installiert und dann die Berechtigungen "repariert" (indem ein Benutzer von festgelegt wird root und Gruppe von wheel ) in der Packung postflight Shell-Skript. (Ugh, sogar ihr Skript ist noobisch: Jedem Befehl wird ein Präfix vorangestellt sudo ist unnötig, da die Skripte sowieso als root ausgeführt werden). Auch wenn ich vermute, dass das funktioniert, ist es eine Art Rückwärtsgang. (Sie sollten lediglich die richtigen Berechtigungen für die Dateien festgelegt haben, die sie als Nutzdaten des Installationspakets einbezogen haben.) Und natürlich in Ihrem Fall die postflight Das Skript muss während der Installation fehlgeschlagen sein und diese Kexts mit verpatzten Berechtigungen belassen.

Sie sollten in der Lage sein, die Berechtigungen für die Kexts zu korrigieren, indem Sie das folgende AppleScript ausführen:

http://www.markdouma.com/developer/RepairLogitechHarmonyKexts.zip

Laden Sie es einfach herunter und doppelklicken Sie auf das AppleScript, um es im AppleScript-Editor zu öffnen. Klicken Sie dann auf das Grün Run und geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden.

Für den Datensatz führt das Skript nur Folgendes aus chmod Befehl:

do shell script "/usr/sbin/chown -R 0:0 
   /System/Library/Extensions/Belcarra.USBLAN_netpart.kext 
   /System/Library/Extensions/Belcarra.USBLAN_usbpart.kext 
   /System/Library/Extensions/RemoteControl.USBLAN_usbpart.kext;
   /usr/bin/touch /System/Library/Extensions"
 with administrator privileges

Möglicherweise müssen Sie neu starten, bevor die Kexts ordnungsgemäß geladen werden.

Hoffe das hilft…

NSGod
quelle
0

Möglicherweise haben Sie einige Druckerordner gelöscht, aber die eigentlichen Kext-Dateien an Ort und Stelle belassen. Öffnen Sie das Terminal und geben Sie Folgendes ein, um die Kext-Dateien zu löschen, die ein Problem verursachen

sudo rm -rf /System/Library/Extensions/Belcarra.USBLAN_netpart.kext

Das System fragt nach Ihrem Passwort.

Wiederholen Sie diesen Vorgang für alle anderen Dateien, die das System beanstandet. Sie müssen dann neu starten.

Wenn aus den oben genannten Gründen etwas nicht mehr funktioniert, müssen Sie möglicherweise die Treiber neu installieren.

robzolkos
quelle
Gibt es eine Möglichkeit, etwas zu löschen, das os x ausführen muss?
Paul Belardi
Möglich, aber zweifelhaft, wenn man bedenkt, dass man durch die Fehler klickt und sie trotzdem nicht geladen werden. Wenn Sie extrem sicher sein möchten, verschieben Sie die Ordner vorübergehend auf Ihren Desktop und starten Sie den Computer neu. Wenn es ein Problem gibt, booten Sie in den Einzelbenutzer- oder abgesicherten Modus und kopieren Sie sie zurück. Wenn ich Treiber / Kexts hatte, die nicht geladen wurden, blase ich sie einfach weg. Das System selbst ist niemals betroffen.
robzolkos
Ich werde es versuchen, wenn ich das nächste Mal ein OS-Update bekomme und sehe, wie es geht. Werde mein Ergebnis danach posten.
Paul Belardi