2 votos

¿Cómo se eliminan todos los rastros de un kext?

Estoy intentando eliminar completamente una extensión del núcleo que instalé por error, y no puedo averiguar cómo eliminarla de la lista de software deshabilitado. Aparece en el Perfil del Sistema y también en el panel de seguridad de las Preferencias del Sistema.

enter image description here

He buscado /L/E y /S/L/E y /Library/StagedExtensions y el único resultado que encuentro está en /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist

Kextutil no puede encontrarlo:

# kextutil -b cn.com.bwstor.filesystems.enfs
Can't find extension with identifier cn.com.bwstor.filesystems.enfs

Aparentemente está en el núcleo preligado:

$ grep -rni bwstor /System/Library/PrelinkedKernels/
Binary file /System/Library/PrelinkedKernels//prelinkedkernel matches
Binary file /System/Library/PrelinkedKernels//immutablekernel matches

Así que trato de reconstruir así:

# kextcache -system-prelinked-kernel
KernelCache ID: 589C15EF68C8CF9D1C456F8C5E809F74
#
# kextcache -prelinked-kernel
kxld[com.apple.kext.AMDRadeonX6000HWLibs]: The following symbols are unresolved for this kext:
kxld[com.apple.kext.AMDRadeonX6000HWLibs]:  AtiPowerPlayInterface::createPowerPlayServiceFor(PowerPlayCallbacks*)
Link failed (error code 5).
Prelink failed for com.apple.kext.AMDRadeonX6000HWLibs; omitting from prelinked kernel.
KernelCache ID: B8572AE0865E63FD3CE5E2A9014CEA6A

Ese error parece no tener relación, pero de todas formas recibo más detalles:

# kextutil -b com.apple.kext.AMDRadeonX6000HWLibs
Disabling KextAudit: SIP is off
(kernel) kxld[com.apple.kext.AMDRadeonX6000HWLibs]: The following symbols are unresolved for this kext:
(kernel) kxld[com.apple.kext.AMDRadeonX6000HWLibs]:     __ZN21AtiPowerPlayInterface25createPowerPlayServiceForEP18PowerPlayCallbacks
(kernel) Can't load kext com.apple.kext.AMDRadeonX6000HWLibs - link failed.
(kernel) Failed to load executable for kext com.apple.kext.AMDRadeonX6000HWLibs.
(kernel) Kext com.apple.kext.AMDRadeonX6000HWLibs failed to load (0xdc008016).
(kernel) Failed to load kext com.apple.kext.AMDRadeonX6000HWLibs (error 0xdc008016).
Failed to load /System/Library/Extensions/AMDRadeonX6000HWServices.kext/Contents/PlugIns/AMDRadeonX6000HWLibs.kext - (libkern/kext) link error.
Check library declarations for your kext with kextlibs(8).
#
# kextlibs -undef-symbols /System/Library/Extensions/AMDRadeonX6000HWServices.kext/Contents/PlugIns/AMDRadeonX6000HWLibs.kext/
For all architectures:
    com.apple.iokit.IOPCIFamily = 2.9
    com.apple.kext.AMDRadeonX4000HWLibs = 1.0
    com.apple.kext.AMDRadeonX4030HWLibs = 1.0
    com.apple.kext.AMDRadeonX4050HWLibs = 1.0
    com.apple.kext.AMDRadeonX4070HWLibs = 1.0
    com.apple.kext.AMDRadeonX4100HWLibs = 1.0
    com.apple.kext.AMDRadeonX4200HWLibs = 1.0
    com.apple.kext.AMDRadeonX4300HWLibs = 1.0
    com.apple.kext.AMDRadeonX4400HWLibs = 1.0
    com.apple.kext.AMDRadeonX5000HWLibs = 1.0
    com.apple.kext.AMDRadeonX5100HWLibs = 1.0
    com.apple.kext.AMDRadeonX5400HWLibs = 1.0
    com.apple.kext.AMDRadeonX5700HWLibs = 1.0
    com.apple.kpi.iokit = 18.2
    com.apple.kpi.libkern = 18.2
    com.apple.kpi.mach = 18.2

For x86_64:
    Multiple symbols found among 1 libraries:
    com.apple.kext.AMDRadeonX5000HWLibs

Me desconcierta por qué reconstruir el caché del núcleo no arregla esto. Estoy corriendo Mojave 10.14.3 en un MacPro6,1. Tengo SIP desactivado y estoy usando el parche de @goalque para usar una GPU Radeon Vega64 externa.

0 votos

¿Qué es el parche de Goalque?

0 votos

Permite la eGPU sobre Thunderbolt 2 egpu.io/automate-eGPU-EFI

4voto

Matt DeKrey Puntos 111

La última parte de mi pregunta resultó ser una pista falsa. Corrí el mismo grep en otro sistema que nunca ha tenido este driver instalado y también aparece en el kernel preligado allí.

De todos modos, la lista de Software Desactivado se almacena en una base de datos SQLite ubicada en /private/var/db/SystemPolicyConfiguration/KextPolicy . Este archivo está protegido por SIP, por lo que modificarlo requiere desactivar SIP o iniciar el modo de recuperación. En este caso borré las entradas con este comando, y tiene efecto inmediato.

# sqlite3 /private/var/db/SystemPolicyConfiguration/KextPolicy

Para ver todas las entradas de los kexts aprobados y no aprobados:

SELECT * FROM kext_policy;

Para borrar:

DELETE FROM kext_policy WHERE team_id = 'JS776ETM39';

0 votos

Me alegra saber que ha funcionado. ¿Habría ayudado también arrancar en modo seguro?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X