Il modo in cui viene inquadrata la domanda nel titolo potrebbe essere di interesse generale.
Il problema concreto o l'esempio a cui questa domanda dovrebbe essere applicata è: Trovare la soluzione ottimale per hackerare un MacBook Pro altrimenti guasto (chip grafico discreto AMD masterizzato) in condizioni utilizzabili.
Sfondo:
Situazione attuale: dGPU fritto, l'avvio deve essere forzato in iGPU sempre. Con le impostazioni hardware predefinite e l'installazione di sistema predefinita, la macchina non si avvia semplicemente.
Effetto collaterale indesiderato per disabilitare il dGPU nel software: AMDRadeonX3000.kext non deve caricarsi immediatamente, se lo fa - l'avvio si blocca su Yosemite, si blocca in Sierra e si traduce in riavvii forzati rapidamente a causa del surriscaldamento in High Sierra prima della GUI è su. Sintomi osservabili in Sierra, l'ultima riga nel boot dettagliato è: IOConsoleUsers IOScreenLockState 3.
Non si carica affatto il kext: la gestione termica del chip AMD sfugge. La temperatura non scende mai sotto i 65 ° C e si gonfia facilmente anche se il chip non viene utilizzato.
Caricamento ritardato: tutto va bene per il lato temperatura. GPU non è inattivo a pieno regime, ma è inattivo a un powerstate molto più basso. A seconda della versione del sistema operativo, i sensori riportano temperature comprese tra 0 ° C e 60 ° C. Sebbene questa lettura non sia realmente realistica o affidabile, l'intera unità rimane anche più fresca al tatto.
Ma "tutto va bene" solo la maggior parte delle volte. Ogni tanto ci sono problemi di sonno molto rari su Sierra e, ahimè: ogni volta su Yosemite.
Trovando che il kext deve essere caricato per far funzionare la macchina ma è meglio non caricare (almeno in ritardo) per dormire nella macchina: un tentativo di kextunload
del kext apparentemente responsabile provoca un panico immediato. Questo paragrafo riguarda principalmente Yosemite ma non tanto Sierra.
Inoltre potrebbe non essere la soluzione ottimale. La gestione termica richiede 1-2 minuti nella configurazione corrente dopo aver caricato il kext per stabilizzarlo in livelli accettabili. Quindi il desiderio di ruotare i kexts e vedere cosa potrebbe dare i migliori risultati.
Passaggi compiuti finora:
Uno dei driver di grafica kexts in Sierra deve essere caricato in / intorno / dopo l'avvio, automaticamente, ma successivamente.
Sono ovviamente interdipendenti e tutti caricati come ritenuto necessario dal sistema in circostanze normali.
Ma il sistema si bloccherà all'avvio se il kext in questione viene caricato troppo presto e il sistema funziona esattamente come desiderato se viene caricato in seguito.
In questo caso ho confermato che il caricamento è manuale o insieme a un accesso GUI tramite hooks.
Tuttavia, questo significa che posizionare il kext in /System/Library/Extensions
o /Library/Extensions
determina il blocco all'avvio poiché vengono consultati troppo presto.
Inoltre, ciò che non funziona è l'uso di agent o demoni systemd launch poiché questi vengono anche consultati troppo presto. Gli stessi demoni nelle gerarchie utente non hanno apparentemente i privilegi necessari per caricare un kext.
Allora, dov'è questo kext da / System / Library / Extensions? Come si può applicare un ritardo al fatto che questo kext viene caricato solo dopo aver caricato tutte le sue dipendenze verso l'alto o verso il basso?
"Quale kext?" potresti chiedere. Questa domanda riguarda tutti i kits AMD, ognuno dei quali deve essere testato individualmente.
Questo è nel tentativo di migliorare ulteriormente questa guida .
Domande
Domanda principale: in che modo uno di questi grafici può essere forzato a caricare in ritardo? (Oltre al metodo LoginHook.)
Se questo si rivela non ottimale per l'obiettivo dichiarato, sarebbe anche bello, o anche meglio sapere:
Esistono altri modi nel software per mantenere il dGPU disabilitato sotto le regole di gestione termica e di alimentazione del sistema? (Meno energia passa attraverso questo chip non utilizzato, meglio è.)
Questo caso potrebbe coinvolgere anche altre estensioni del kernel.