1 votos

Cómo Retrasar la Carga de un Kext?

El camino a la pregunta del título se enmarca podría ser de interés general.

El problema concreto o ejemplo que esta pregunta debe ser aplicado a es: Encontrar la solución óptima para hackear un muerto MacBook Pro (quemado de gráficos discretos AMD chip) de nuevo en óptimas condiciones de uso.

Antecedentes:

Situación actual: frito dGPU, de arranque ha de ser forzadas a iGPU siempre. Con el valor predeterminado de la configuración de hardware y de sistema predeterminado de la instalación, el equipo simplemente no arranque.

Secundarios no deseados-efecto de la desactivación de la dGPU en software: AMDRadeonX3000.kext no debe cargar inmediatamente, si no lo hace ya de inicio se bloquea en Yosemite, heladas en la Sierra y los resultados en obligado enseguida se reinicia debido a un sobrecalentamiento en la Alta Sierra antes de la GUI. Los síntomas observables en la Sierra, la última línea en verbose boot es: IOConsoleUsers IOScreenLockState 3.

No carga el kext: gestión térmica para AMD chip va de las manos. La temperatura nunca se hunde por debajo de 65°C y fácilmente los picos más altos a pesar de que el chip no está siendo utilizado.

Carga diferida: Todo está OK la temperatura de lado. La GPU no es ralentí a plena potencia, pero al ralentí en un mucho más powerstate. Dependiendo de la versión del sistema operativo de los sensores informe temperaturas que van de los 0°C–60°C. a Pesar de que la lectura no parece muy realista y confiable a toda la unidad también se mantiene más fresca al tacto.

Pero "todo está bien" solo la mayoría del tiempo. Cada ahora y entonces no son muy raros los problemas de sueño en la Sierra, y por desgracia: cada vez que en Yosemite.

Hallazgo de que los kext necesita ser cargado para el funcionamiento de la máquina, pero es mejor no cargar (en la forma diferida al menos) para dormir la máquina: un intento de kextunload el aparentemente responsable kext resultados en un pánico inmediato. Este párrafo es principalmente de preocupación cuando en Yosemite, pero no tanto en la Sierra.

En la parte superior de la que no puede ser la solución óptima. Gestión térmica de las necesidades de 1-2 minutos en la configuración actual, después de cargar el kext para la estabilización en niveles aceptables. Por lo tanto, el deseo de rotar los kexts y ver lo que puede dar mejores resultados.

Medidas adoptadas hasta el momento:

Uno de los controlador de gráficos kexts en Sierra necesita ser cargado en/alrededor/después del arranque, de forma automática, pero más tarde.

Son interdependientes, por supuesto, y cargan todos los que se consideren necesarias por el sistema bajo circunstancias normales.

Pero el sistema se bloquea en el arranque si el kext en cuestión se carga demasiado temprano y que el sistema funciona exactamente como se desee si se carga más tarde.

En este caso me confirmó que la carga ya sea manualmente o con una interfaz gráfica de usuario de inicio de sesión a través de los ganchos de las obras.

Sin embargo, esto significa que la colocación de los kext en /System/Library/Extensions o /Library/Extensions de resultados en la bloquea en el arranque como son consultados demasiado temprano.

Lo que no funciona es el uso de todo el sistema de launchd agentes o demonios, ya que estos también son consultados demasiado temprano. Mismo los demonios en virtud de usuario-jerarquías de hacer, aparentemente, no tiene los privilegios necesarios para cargar un kext.

Así que donde esta uno de los kext de /System/Library/Extensions ir? ¿Cómo puede una demora forzada que este kext solo se carga después de todo su hacia arriba o hacia abajo dependencias se han cargado?

"Que kext?", puede preguntar. Esta pregunta es acerca de todos los AMD kexts, a cada ser probado de forma individual.

Esto es en un intento de mejorar esta guía.

Preguntas

Pregunta principal: ¿Cómo puede uno de esos gráficos kexts ser forzado a un retraso en la carga? (Aparte de la LoginHook método).

Si esto resulta óptimo para el objetivo declarado, también sería bonito, o mejor aún, a saber:

Hay otras maneras de software para mantener la movilidad dGPU bajo la térmica y la potencia de las normas de gestión del sistema? (El menos energía pasa a través de este unsused chip, mejor.)

Ese caso puede implicar otras extensiones del kernel así.

1voto

Wowfunhappy Puntos 33

La solución más sencilla es probablemente la absoluta quitar el infractor extensión del kernel de /System/Library/Extensions, en su caso AMDRadeonX3000.kext. Usted necesita:

  1. Deshabilitar La Integridad Del Sistema De Protección. Hay muchas guías a través de internet sobre cómo hacer esto, pero la versión corta es: reiniciar en modo de recuperación, abra un terminal y escriba csrutil disable.

  2. Copia /System/Library/Extensions/AMDRadeonX3000.kext para un espacio seguro en algún lugar en el equipo, en caso de que algo va mal y necesita volver.

  3. Eliminar AMDRadeonX3000.kext de /System/Library/Extensions.

  4. Claro que su kext de la caché. Abrir el terminal y ejecutar: sudo touch /System/Library/Extensions && sudo kextcache -u /. A continuación, reiniciar el sistema.

Los kext pueden reaparecer después de la actualización de macOS, en cuyo caso deberás repetir los pasos 3 y 4. Por esta razón, aunque se puede volver a habilitar SIP una vez que el kext ha sido eliminado, te recomiendo dejarlo apagado.

El Hackintosh comunidad tiene más persistente métodos de desactivar los diferentes extensiones del kernel. Si usted quisiera, usted podría mirar en la instalación de el Trébol gestor de arranque, que está dirigido a los Hackintosh los usuarios, pero debería funcionar en hardware oficial así. Para sus necesidades, sin embargo, creo que simplemente borrar el kext es la mejor solución.

Edit: Este método hará que la GPU dedicada para continuar recibiendo energía, el desgaste de la batería. Con el fin de detener la GPU de recibir el poder, usted tendrá que instalar el Trébol y, a continuación, crear una personalizada SSDT que se apaga la GPU.

0voto

Tom E Puntos 276

No hay documentado manera de que un usuario (ni un admin) para retrasar la carga de KEXTs. El sistema de extensiones del kernel se carga por kextd, la "extensión del kernel del servidor", según su man página. kextd es iniciado por launchd a través de una LaunchDaemon sentado aquí:

/System/Library/LaunchDaemons/com.apple.kextd.plist

Además de este directorio launchd también consulta /Library/LaunchDaemons. No hay un orden definido de ejecución de LaunchDaemon plists y que no hay ningún retraso opción. Que acerca lo hace por sus opciones, me temo.

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