. Rtc8Allowed. . true - die Regionslänge bleibt bei 8 Byte, falls sie es war, false - wird um 2 Bytes korrigiert, wodurch ein CMOS-Reset zuverlässiger verhindert wird. Wie von vit9696 recherchiert, sollte die Länge der Region noch 8 sein, da sie für der Speicherung des Ruhezustandsschlüssels. Und der Fix selbst ist nützlich. Nun, auf Desktops ist der Ruhezustand nicht benötigt wird, also denken Sie vielleicht darüber nach, das CMOS zu dumpen. FixTMR Entfernt auf ähnliche Weise einen Interrupt vom _TMR-Timer. Es ist veraltet und Mac nicht verwendet. AddIMEI Erforderlicher Patch für SandyBridge und höher, um ein Gerät hinzuzufügen IMEI in den Gerätebaum ein, wenn sie dort nicht bereits vorhanden war. FixIntelGfx Der Patch für die integrierte Intel-Grafik ist getrennt vom Rest der Grafikkarten, d. h. es ist möglich, eine Injektion für Intel und nicht für Nvidia zu setzen. FixWAK Fügt Return zur Methode _WAK hinzu. Es muss sein, aber aus irgendeinem Grund wird DSDT oft nicht enthalten. Offenbar haben sich die Autoren an andere Normen gehalten. In jedem Fall ist dieser der Fix ist vollkommen sicher. Unbenutzt löschen Löscht unbenutzte Diskettengeräte. Was meinen Sie, worüber Sie sich Sorgen machen müssen? Tatsächlich werden dadurch noch CRT- und DVI-Geräte entfernt - absolut notwendig Die IntelX3100-Startbedingung auf Dell-Laptops. Ansonsten schwarzer Bildschirm, verifiziert durch Hunderte Benutzer. FixADP1 Korrigiert das ADP1-Gerät (Stromversorgung), was für einen ordnungsgemäßen Schlaf notwendig ist Der Laptop, wenn er an die Steckdose angeschlossen oder von ihr getrennt ist. AddPNLF Fügt das PNLF-Gerät (Hintergrundbeleuchtung) ein, das für die korrekte Steuerung erforderlich ist Bildschirmhelligkeit und hilft seltsamerweise bei der Lösung von Schlafproblemen, auch bei Schreibtisch. FixS3D In ähnlicher Weise löst dieser Patch das Schlafproblem. FixACST In einigen DSDTs gibt es ein Gerät oder eine Methode oder Variable namens ACST, aber dies ist der von MacOSX 10.8+ verwendete Name für die Steuerung des c-state. Völlig implizit Khaki Clover. Version 5.1, Revision 5128 122 Moskau, 2021 Konflikt mit sehr unklarem Verhalten. Dieser Fix benennt alle Vorkommen von solchen den Namen in etwas Sicheres umzuwandeln. Ich kann nicht verstehen, wie Sie diese Serie von Patches ignorieren können! Braucht ihr Jungs nicht eine gute einen funktionierenden Computer? AddHDMI Fügt dem DSDT ein HDAU-Gerät hinzu, das dem HDMI-Ausgang der Videokarte entspricht ATI oder Nvidia. Da die Karte separat von der Hauptplatine gekauft wurde, ist es klar, dass die Das native DSDT verfügt einfach nicht über ein solches Gerät. Zusätzlich wird das Gerät mit Eigenschaft hda-gfx=onboard-1 bzw. onboard-2: -1 wenn UseIntelHDMI=false -2 wenn ein Intel-Port vorhanden ist, der Port 1 belegt hat. FixRegions Dies ist ein sehr spezielles Patch. Wenn die anderen Patches dazu gedacht waren, Folgendes zu beheben BIOS.aml, um eine gute DSDT aus dem Nichts zu erzeugen, dann ist dieser Fix für endgültige Ausrichtung einer gut gemachten benutzerdefinierten DSDT.aml, und für BIOS.aml ist es ist nutzlos. So sieht's aus. Im DSDT gibt es z. B. Regionen, die eigene Adressen haben: OperationRegion (GNVS, SystemMemory, 0xDE6A5E18, 0x01CD) Das Problem ist, dass diese Regionsadresse dynamisch vom BIOS erzeugt wird und sie kann unterschiedlich von Last zu Last. Zuerst wurde es beim Wechseln bemerkt Gesamtspeicher, dann beim Ändern der BIOS-Einstellungen, und auf meinem Computer hängt auch von der Vorgeschichte der Downloads ab, z. B. von der Menge des belegten NVRAM. Es ist klar, dass in der benutzerdefinierten DSDT.aml ist diese Zahl fest vorgegeben und darf daher nicht zutreffend sein. Die einfachste Beobachtung ist der Schlafmangel. Nach dem Korrigieren der Region erscheint der Schlaf, aber bis zur nächsten Schicht. Dieser Fix fixiert alle Regionen in der benutzerdefinierten DSDT auf BIOS-DSDT-Werte und damit Maske Fixes. . FixRegionen . . ist eine ausreichende Maske, wenn Sie eine gut gemachte DSDT mit allen mit den erforderlichen Korrekturen. Es gibt noch einen weiteren Patch, der aber nicht DSDT, sondern alle ACPI-Tabellen im Allgemeinen betrifft. der Ort ist illegal. FixHeaders Es prüft die Header nicht nur von DSDT, sondern von allen ACPI-Tabellen im Allgemeinen und löst das Problem der chinesischen Zeichen in Tabellennamen, die MacOS nicht toleriert, sofort Panik. Unabhängig davon, ob Sie ein Problem mit den Tabellen haben oder nicht, ist es sicherer, diese Korrektur zu aktivieren. Khaki Clover. Version 5.1, Revision 5128 123 Moskau, 2021 Patch-Auswahl Wie entscheiden Sie, welche Patches notwendig, welche harmlos und welche gefährlich sind? Brunnen Sie werden den Computer in keiner Weise zerstören. All dies geschieht nur im Betrieb Speicher, und wird nach einem Neustart vergessen. Sie können einen Satz von Korrekturen testen, indem Sie Maske im grafischen Menü und Speichern des Ergebnisses durch Drücken von F5 - "Save DSDT- xxxx.aml, korrigiert durch aktuelle Maske". Sie können versuchen, mit der aktuellen Maske zu booten. Um den echten nicht zu beeinträchtigen, Das bereits im System vorhandene gepatchte DSDT kann im Menü DSDT-Name: BIOS.aml Wenn es keine solche Datei gibt, nimmt das System die OEM-DSDT aus dem BIOS und nimmt die Korrekturen vor, gemäß der eingestellten Maske. Im Falle eines Fehlers nach dem Neustart des Rechners wird die aktuelle Einstellungen gehen verloren, und die Standardeinstellungen, die Sie funktionell. Die Maske 0xFFFFFFFFFF entspricht dem Einschalten aller Fixes, und wenn OS danach geladen wird, ist die Arbeit der Programmierer nicht umsonst. Aus der obigen Beschreibung haben Sie bereits entnommen, dass einige Fixes, die Sie einfach nicht brauchen (z. B. WIFI). Beginnend mit der Revision 1992 arbeiten, um Panik auf dem doppelten Patch zu verhindern, also scheuen Sie sich nicht, unnötige Fragen zu stellen Bits. Zwei Fixes würde ich zur Zeit nicht empfehlen: FIX_SATA, bit 0x0400, ist es besser, einen binären Patch des Kext zu verwenden, und FIX_SHUTDOWN, Bit 0x04, für Das Setzen von HaltEnabler=true funktioniert stattdessen fast immer, was korrekter funktioniert. Auch der Patch AddMCHC_0008 ist gefährlich, manche Leute brauchen ihn unbedingt, und manche ist streng kontraindiziert. Um zu sehen, wie sich die DSDT-Patches auf das Ergebnis auswirken, nehmen Sie an, Sie könnten nicht Wenn Sie nicht booten wollen, können Sie den folgenden Schlüssel in den ACPI-Abschnitt der Config schreiben: DSDT. Debug. Dabei werden vor dem Start des Systems zwei Dateien im Ordner auf der Festplatte gespeichert /EFI/CLOVER/ACPI/origin/ DSDT-oder.aml. DSDT-pa15.aml Herkunft ist Ihre DSDT von der Festplatte geladen oder aus dem BIOS entnommen, bevor Patches eingespielt wurden. gepatcht - nachdem Patches eingespielt wurden. Da Sie beim Booten gescheitert sind, werden Sie immer mehr Versuche unternehmen, und gepatchte Die Dateien werden fortlaufend nummeriert, ohne dass alte Informationen gelöscht werden. 15 in diesem Fall - dies ist der 15. Versuch des Herunterladens, er muss erfolgreich sein, wir müssen schauen, was das Problem war 14. Versuch. Dennoch empfehle ich, ein doppeltes Patch zu vermeiden. Es kann auch eine Situation entstehen, in der Das doppelte Patchen tritt auf, weil das OEM-DSDT bereits die Methode _DSM hat, wenn wollen wir unsere eigene entwickeln. Sie müssen also die Bits in der Maske setzen DropOEM_DSM. Siehe Hardware-Konfiguration → ACPI → DSDT → DropOEM_DSM. Nein, Sie müssen alle OEM-DSMs umbenennen. Manueller DSDT-Verband Voraussetzungen Sie müssen eine Art von Computer mit einem Betriebssystem haben, damit Sie eine Textdatei bearbeitet. Oder vielleicht sind Sie bereits an diesem Computer Sie haben macOS irgendwie installiert und möchten nun DSDT verbessern. Khaki Clover. Version 5.1, Revision 5128 124 Moskau, 2021 Es gibt einen iasl-Kommandozeilen-Compiler für jedes Betriebssystem. In diesem Die iasl.exe wird wie auf dem Mac über die Befehlszeile gestartet, sie hat die gleiche Funktionen, und liefert die gleichen Ergebnisse. Es ist umständlich, Texte in Windows zu bearbeiten, Notepad hat keine Syntaxhervorhebung und Zeilennummerierung, ist es besser, Notepad+ zu verwenden. Mac ist voller Optionen, und Xcode, und BBEdit, und andere. Eine neue Version des Compilers für Mac ist hier verfügbar Dsdt-Optimierung. Neuester Compiler. Für Windows unter acpica.org Windows Binary Tools Sie sollten auch die ACPI-Sprachbeschreibung ACPI_6_2.pdf vorrätig haben. Es ist besser, einen neuen zu besorgen Version, weil Sie mit dem DSDT umgehen müssen, das Ihnen das frische BIOS gegeben hat. Erstellen eines Rohlings Machen Sie sich zunächst ein Clover-Flash-Laufwerk, das bootfähig ist, auch wenn kein System vorhanden ist. Es ist wichtig, dass sie im FAT32-Format vorliegt. Booten Sie diesen Computer von diesem Flash-Laufwerk, um Clover-Schnittstelle. Drücken Sie die Taste "O" (lateinischer Buchstabe O) oder wählen Sie das Symbol im Menü Optionen. Gehen Sie zu ACPI-> dort finden Sie DSDT Name: und geben Sie BIOS.aml ein. Dies ist genau die DSDT, die Sie unter Windows über Aida erhalten würden. Abwärts gehen im Menü und wählen Sie DSDT-Fixes -> dort können Sie Kästchen ankreuzen, entweder mit der Tastatur oder mit der Maus. Setzen Sie fast alle Kontrollkästchen, bei denen Sie sich nicht unwohl fühlen. Sie brauchen zum Beispiel kein Firewire und keinen Airport, IDE, wenn Sie wissen, dass Sie keine solchen Geräte haben. Alles, was Sie nicht kennen, sollten Sie besser einbauen. Kehren Sie aus diesem Untermenü zurück, und drücken Sie nacheinander F2, F4, F5. Sie können den Prüfling ausschalten und das Flash-Laufwerk zu dem Computer tragen, den Sie Dateien bearbeiten. Die Dateien, an denen wir interessiert sind, befinden sich auf dem Flash-Laufwerk in den Ordnern EFI\CLOVER\ACPI\Herkunft EFI\CLOVER\misc Kopieren Sie diese Ordner in Ihren Arbeitsordner auf Ihrem Computer, in dem sich iasl befindet. Entweder mit Mac oder mit Mit Windows. Die Anweisungen sind die gleichen, abgesehen von Feinheiten wie der Schräglage. Dekompilieren Die resultierende DSDT.aml ist eine Binärdatei, die Sie nicht mit einem Texteditor bearbeiten können schauen Sie sich das an. Von spezialisierten maciASL-Editoren rate ich kategorisch ab, DSDTEditor und dergleichen, da der Zweck des Themas nicht darin besteht, den guten Onkel für Sie rehabilitieren zu lassen Es geht darum, mit eigenen Augen zu sehen, was passiert und wie es passiert. Führen Sie die Befehlszeile aus: cmd.exe unter Windows, Terminal.app unter Mac, whatever unter Linux Ich weiß nicht, ich glaube, es heißt "Bash". > cd ArbeitsOrdner > Ursprung d. h. in die gleiche Kopie des Ordners, den Sie vom Flash-Laufwerk genommen haben. In den gleichen Ordner legen iasl.exe, wenn Sie auf Winds sind, oder installieren Sie iasl auf dem System, wenn Sie auf Mac sind $ sudo cp ~/Downloads/iasl /usr/local/bin/ Khaki Clover. Version 5.1, Revision 5128 125 Moskau, 2021 Jetzt können wir endlich dekompilieren, d. h. das DSDT in eine lesbare Sprache bringen. $ iasl -da SSDT*.aml DSDT-*.aml Die Option -da bewirkt das Wunder, es wird in allen Dateien gleichzeitig nach Zeichen gesucht, so dass am Ende sollte es keine unbekannten Zeichen mehr geben. Dies gilt jedoch nur für den Idealfall. In der Praxis es funktioniert nicht, wir erhalten eine Menge Fehler wie AE_ALREADY_EXISTS ~~~ Firmware-Fehler (ACPI): Failure creating named object [IO1B], AE_ALREADY_EXISTS (20200925/ dswload-495) ACPI-Fehler: AE_ALREADY_EXISTS, Beim Namensaufruf/Katalog (20200925/psobject-372) Konnte externe ACPI-Tabellen nicht parsen, AE_ALREADY_EXISTS ~~~ Die andere Option erweist sich als erfolgreicher iasl -e SSDT*.aml -d DSDT-*.aml Die Ausgabe ist eine Warnung Parsing abgeschlossen Warnung - Senden des ASL-Codes "Extern (BNUM)" Dies ist eine kollidierende Erklärung mit einer anderen Erklärung innerhalb der ASL Code. Diese externe Deklaration muss eventuell gelöscht werden, um das dsl neu zu kompilieren Datei. Das heißt, in der DSDT.dsl müssen wir die Deklaration Extern (BNUM, UnknownObj) // Konflikt mit einer späteren Deklaration Da es eine Ankündigung gibt Feld (GNVS, AnyAcc, Lock, Preserve) { … BNUM, 8, Das heißt, der Name wird hier bekannt gegeben, und Sie müssen ihn nicht extern benennen, oder gar einen unbekannten Namen. Aber dann sind da noch die Fehler Extern (_PR_.CFGD, UnknownObj) Dennoch existiert diese Variable und wird in einer der SSDTs beschrieben. Der Decompiler ist noch unvollständig. Jeder dieser Fälle muss einzeln behandelt werden. Wir dekompilieren die DSDT, die Clover gepatcht hat, und haben somit bereits eine Menge nützlicher Korrekturen. Auf ähnliche Weise können Sie die Originaldatei dekompilieren $ iasl -da SSDT*.aml DSDT.aml Und um vergleichen zu können, was war und was nicht war. Und wir haben eine Datei mit einer langen mit dem Namen DSDT-1234567.dsl, haben Sie andere Zahlen und Buchstaben. Dies ist die ursprüngliche Voreinstellung, die in DSDT.dsl umbenannt werden sollte, und das Original in DSDT-origin.dsl, bearbeiten und kompilieren in einem unendlichen, iterativen Prozess: 1. Mit einem Texteditor bearbeiten. 2. Kompilieren, DSDT.aml erhalten Kompilierbefehl $ iasl -ta DSDT.dsl 3. Testen Sie, d.h. legen Sie es in den Ordner EFI\CLOVER\ACPI\patched und starten Sie das System. 4. Zurück zu Punkt 1. Khaki Clover. Version 5.1, Revision 5128 126 Moskau, 2021 Leider kann die Kompilierung mit folgendem Fehler fehlschlagen Code: Eingangsdatei SSDT-10x.aml, Länge 0x37F (895) Bytes ACPI: SSDT 0x0000000000000000 00037F (v02 PmRef Cpu0Cst 00003001 INTL 20120913) Pass 1 Parse von [SSDT] ACPI-Fehler: [C3ST] Namespace lookup failure, AE_ALREADY_EXISTS (20160729/dswload-462) ACPI-Ausnahme: AE_ALREADY_EXISTS, Bei Namenssuche/Katalog (20160729/psobject-310) Konnte externe ACPI-Tabellen nicht parsen, AE_ALREADY_EXISTS Das bedeutet, dass die Beschreibung des C3ST-Symbols in zwei verschiedenen SSDTs zu finden ist, die letzte davon ist SSDT-10x. In meinem Fall stellte sich heraus, dass es ähnlich wie SSDT-5x ist, mit dem Unterschied, dass 5x ACPI1.0 ist und 10x ACPI2.0. Und die Namen sind die gleichen! Ich habe etwas Ähnliches im Kernelprotokoll. Es ist .BIOS-Fehler! Außerdem befinden sich zwei identische Tische im Laptop. Ich bin dem nachgegangen, sie sind eigentlich beide im BIOS vorhanden sind, ist das nicht meine Schuld. Was ist zu tun? Entfernen Sie die Zweitbesetzung vor dem Kompilieren, und in der realen Arbeit tun Sie in config Clover Drop Zusatztische. Im Falle von Duplikaten fliegen beide weg. Was zu reparieren ist 1. Syntaxfehler durch den Hersteller dieses Computers 2. Sinnvolle Fehler 3. Tricks aus dem Internet. Zu diesem Zeitpunkt denkt jeder, es ist die einzige Sache, die getan werden muss. Nein, auch die ersten beiden Punkte sind wichtig. Syntax-Fehler Betrachtet man die Datei DSDT.dsl selbst, so sieht man die ersten Probleme in der Datei selbst Extern (_SB_.PCI0.PEG0.VID_.LCD_, UnknownObj) Es bedeutet, dass es irgendwo im Text einen Verweis auf ein Objekt gibt, das Objekt selbst aber nirgends zu finden ist. Wir sind auf der Suche nach ihr. Es ist .befindet sich in SSDT-7. Es stellt sich heraus, dass es nicht von dort exportiert wurde. Aus diesem Grund ist es Dieser Laptop schlägt vor, dass dieses SSDT in ein generisches DSDT aufgenommen wird. Durch einfaches Kopieren Text, der SSDT von der ersten geschweiften Klammer bis zur letzten im Ende von DSDT.dsl vor die letzte Klammer. Zweiter Fehler mit fehlenden Zeichen Extern (HNOT, MethodObj) // Warnung: Unbekannte Methode, vermutet 1 Argumente Eine Suche zeigt, dass die Methode in dieser Konstruktion erwähnt wird Code: Khaki Clover. Version 5.1, Revision 5128 127 Moskau, 2021 If (CondRefOf (HNOT)) { HNOT (Arg0) } Sonst { Notify (GFX0, 0x80) // Statusänderung } Dann ist es OK, wenn die Methode undefiniert ist, wird sie nicht ausgeführt. Es ist mir nicht klar, wie dann kompiliert es? Es ist besser, sie zu löschen und nur Notify zu lassen... Ich beginne mit dem Kompilieren der gerade empfangenen Datei (ich habe DSDT-1F2C3B4D.dsl in einfachere DSDT1.dsl als erster Versuch) $ iasl -ta DSDT1.dsl 1 Fehler, 14 Warnungen, 91 Hinweise, 109 Optimierungen Der Fehler muss behoben werden, sonst gibt es kein Ergebnis. Sie sollten auch Warnungen beheben, indem Sie überlegen, warum der Compiler kämpft. Das ist immer noch eine gute Situation - ich bin beim ersten Kompilieren auf hunderte von Fehlern gestoßen. In diesem Fall ist der Fehler unkritisch, in der Zeile Name (_HID, "*pnp0c14") Zeichenkettenformat ist ungültig, wissenschaftlich korrigiert wie folgt: Name (_HID, EisaId ("PNP0C14") /* Windows Management Instrumentation Device */) Es muss korrigiert werden, sonst wird es nicht kompiliert, aber es hat keinen Einfluss auf den Betrieb, es ist ein Windows primo. Die Lackierungen sind wirklich kritischer, hier gibt es Beispiele für Korrekturen. - was war + was hat - CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN) // _LEN: Länge + CreateQWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN) // _LEN: Länge Der Hinweis stand im Kompilierungsprotokoll ResourceTag größer als Feld (Größenunterschied Tag 64bit, Feld 32 bit) Die Regel ist einfach: Tag ist das, was Sie brauchen, Feld ist das, was Sie reparieren müssen tag=1 => CreateBitField tag=8 => CreateByteField tag=16 => CreateWordField tag=32 => CreateDWordField tag=64 => CreateQWordField Sie muss korrigiert werden, damit im realen Betrieb der gesendete Wert nicht über den Nachbarwert hinausschießt das Feld. Es gibt keine Möglichkeit, diese Störung abzufangen. Diese Art der Verformung Nicht alle Steuerpfade geben einen Wert zurück Es ist ein Fehler der Logik, die Methode muss etwas zurückgeben, aber es stellt sich heraus, dass in einigen Fällen Clover in khakifarben. Version 5.1, Revision 5128 128 Moskau, 2021 wird nichts zurückbringen. И? Mac wird natürlich nicht fallen, aber erwarten Sie auch keine Angemessenheit. Und was soll ich dort schreiben? Return(Zero) oder Return(Local0)? Es reicht, wenn der Compiler sich entspannt, aber im Allgemeinen sollten Sie sich die Logik ansehen. Ähnliche Störung Reservierte Methode soll keinen Wert zurückgeben Der Code lautet Code: Methode (_SRS, 1, Serialisiert) // _SRS: Ressource setzen Einstellungen { Rückgabe (BUF2) /* \_SB_.PCI0.A_CC.BUF2 */ } Öffnen Sie das oben genannte pdf, ADCPI-Spezifikation, suchen Sie nach der _SRS-Methode, und lesen, was es tun soll. Die Rückgabe von Werten ist dort nicht vorgesehen. Also machen wir es wie folgt neu Code: Methode (_SRS, 1, Serialisiert) // _SRS: Ressource setzen Einstellungen { BUF2 = Arg0 } Das macht mehr Sinn. Und das berühmte Verziehen. Name (_T_0, Null) Verwendung des reservierten Compiler-Namens _T_0 Der neue iasl-Compiler handhabt diese Konstruktion perfekt, und es besteht keine Notwendigkeit, die tun. Der alte Compiler erforderte die Umbenennung in TT_0 Sinnvolle Fehler Sorry, aber man muss zumindest ein bisschen Programmierer sein, um sie zu erkennen. Hinweise kann man nirgendwo warten. In der ursprünglichen DSDT sehen wir Extern (CFGD, IntObj) Und wir finden diese Variable in SSDT CpuPm. Und hier ist es an der Zeit, sich daran zu erinnern, dass wir diese Tabelle haben abfallend, zusammen mit dieser Variable! Sie sollte in DSDT kopiert werden. Sowie andere, die sich als nützlich erweisen könnten. Code: + Name (CFGD, 0x0066F6FF) + Name (PDC0, 0x80000000) + Name (PDC1, 0x80000000) + Name (PDC2, 0x80000000) Khaki Clover. Version 5.1, Revision 5128 129 Moskau, 2021 + Name (PDC3, 0x80000000) + Name (PDC4, 0x80000000) + Name (PDC5, 0x80000000) + Name (PDC6, 0x80000000) + Name (PDC7, 0x80000000) + Name (SDTL, Null) Ein häufiger Fehler ist die OEM-Methode _DSM. Es ist nicht der Fehler des Herstellers, es ist die Tatsache, dass er für Windows geschrieben hat, und wir haben einen Hackintosh. Beispiel Code: - Methode (_DSM, 4, Serialisiert) // _DSM: Gerätespezifisch Methode { - Name (_T_0, Null) // _T_x: Gesendet von ASL-Compiler If (Arg0 == ToUID ("a5fc708f-8775-4ba6- bd0c-ba90a1ec72f8")) { Während (Eins) { Sehen Sie die UUID? Sie stammt aus der Windows-Registrierung, auf dem Mac gibt es so etwas nicht, und es läuft auch nichts werden. Das wäre nur die halbe Miete, aber wenn es für die Winnds in Ordnung ist, _DSM sowohl für das Gerät als auch für den seine Brücke, verursacht es einen Absturz in Mac. Lasst uns alle anderen Leute _DSM töten! Der einfache Weg. Code: - Methode (_DSM, 4, Serialisiert) // _DSM: Geräte-spezifische Methode + Methode (ZDSM, 4, Serialisiert) Die Methode selbst hat überlebt, aber es wird sich niemand mehr an sie wenden, und es wird keine Panik entstehen. Hier ist ein kurioses Stück Code: OperationRegion (DXHC, SystemMemory, 0xFED1F418, 0x04) XHCD, 1 } If ((OSYS < 0x07D6) && (OSYS > 0x03E8)) { XHCD = Eins Benachrichtigen (XHC, Null) // Busprüfung } Nachdem ich mir die Adresse genauer angesehen habe, ist mir klar geworden, dass es sich um ein Function Disable Bit handelt. Der Sinn der Operation ist es, USB3 für Systeme unterhalb von Windows Vista zu sperren. Ich denke, dieser Teil sollte ganz herausgeschnitten werden. Das ist der Schwachsinn der Autoren. Code: Wenn ((OSYS > 0x07D0) || (OSYS < 0x07D6)) Bereiche addieren sich und überschneiden sich mit beliebigen Werten Es ist eher so, wie es sein sollte Code: Wenn ((OSYS > 0x07D0) && (OSYS < 0x07D6)) Clover in khakifarben. Version 5.1, Revision 5128 130 Moskau, 2021 Dann überschneiden sich die Bereiche. Aber dann müssen wir sehen, was in der Wenn und was in der Else ist. Dann habe ich es richtig gemacht, also das ursprüngliche Design Code: Wenn ((OSYS > 0x07D0) || (OSYS < 0x07D6)) { Benachrichtigen (PCI0, Arg1) } Sonst { Benachrichtigen (GFX0, Arg1) } Ich habe mich auf nur einen Bediener reduziert. Benachrichtigen (PCI0, Arg1) Der Punkt ist, dass dieses If prüft, ob das System WindowsXP ist und tut, was es dann tut, für Systeme wie Windows7,8,10 macht Else. Was ist der Unterschied? Optimus arbeitet in den neuen Systemen. Unter macOS benötigen wir eine Benachrichtigung, für den gesamten Bus. Und in ähnlicher Weise müssen wir uns die an anderer Stelle in DSDT. Ein kleiner Krimi zum Thema, vielleicht kommt ja jemand auf die richtige Idee. Also, die Herausforderung. Der Laptop schläft und wacht auf, wenn er nicht eingesteckt ist. Aber dann ist die Batterie leer. Wenn er jedoch eingesteckt ist, wacht er sofort auf, eine Sekunde nachdem er eingeschlafen ist. Was ist denn los? Genau bei der DSDT! Also, auf der Suche nach dem, was den Unterschied zwischen ACPI-Status im Sockel und nicht macht. Gerät Code: Gerät (AC) { Name (_HID, "ACPI0003"/* Stromquellengerät */) // _HID: Hardware-ID Der Decompiler hat uns freundlicherweise mitgeteilt, dass dies die Stromversorgung ist. Die Methode _PSR bestimmt, ob dieses Gerät eingeschaltet ist oder ruht. Code: Methode (_PSR, 0, NotSerialized) // _PSR: Leistung Quelle { Lokal0 = EVG5 () Lokal0 &= Eins Wenn (Lokal0 != PWRS) { PWRS = Lokal0 PNOT () } Rückgabe (Lokal0) } Sie können es im Buch ACPIspec.pdf nachlesen, beliebige Jahresausgabe Ein Integer, der den Status der Stromquelle enthält Khaki Clover. Version 5.1, Revision 5128 131 Moskau, 2021 0 - Off-line (nicht am Netz) 1 - On-line Das heißt, in meinem Fall gibt eine fest verdrahtete Methode ECG5() eine Zahl aus, in der das Bit 0 bedeutet eingesteckt. Und speichert in der PWRS-Variable, wenn der Wert dort anders ist. Suchen Sie nun im gesamten Code, wo PWRS erwähnt wird, und finden Sie es in der Methode _PTS (Prepare To Schlaf), der für das Einschlafen verantwortlich ist. Code: Methode (_PTS, 1, NotSerialized) // _PTS: Prepare To Sleep { P80D = Null P8XH (Null, Arg0) PTS (Arg0) Wenn (AOAC & Eins) {} Wenn (Arg0 == 0x03) { Wenn (PWRS == Null) { \_SB.PCI0.XHC.PMEB = Null \_SB.PCI0.EHC1.PMEB = Null \_SB.PCI0.EHC2.PMEB = Null If (\_SB.PCI0.XHC.PMST == Eins) { \_SB.PCI0.XHC.PMST = Eins } If (\_SB.PCI0.EHC1.PMST == Eins) { \_SB.PCI0.EHC1.PMST = Eins } If (\_SB.PCI0.EHC2.PMST == Eins) { \_SB.PCI0.EHC2.PMST = Eins } } Interessant hier! Voraussetzung: Wenn das Gerät nicht in die Steckdose gesteckt ist, dann tun Sie etwas in SSB2 und SSB3. Und wenn sie es tun, müssen Sie nichts tun. Im Protokoll des unerwarteten Aufwachens sehen wir XHC, EHC2. Die Ersteller dieses DSDT glauben also, dass ein Laptop nur eingesteckt werden kann Zeit der Bedienung. Andernfalls ziehen Sie es heraus. Durch Entfernen dieser Bedingung If (PWRS == Zero) habe ich die Lösung für mein Problem erhalten. Ich habe jetzt der Laptop schläft und wacht auf, und das Netzteil stört ihn nicht. Viel Erfolg bei der Erstellung eines minimal korrekten DSDTs! Native Speedstep Richtiger ist es, von Power- und Prozessorfrequenzmanagement (PPFM) zu sprechen, indem EIST - Enhanced Intel Speedstep Technology, daher das russische Wort "Speedstep". Khaki Clover. Version 5.1, Revision 5128 132 Moskau, 2021 Eigentlich geht es in diesem Thema nicht so sehr um den Bootloader, sondern um die Konfiguration von HackOS im Allgemeinen, aber wie Clover einige Schritte unternimmt, werden wir in einem separaten Kapitel beschreiben. Clover macht nicht alles, was er machen muss, es ist auch etwas Handarbeit erforderlich. Was ist überhaupt der Zweck davon? Der Punkt ist folgender: Der Prozessor läuft im Leerlauf mit minimale Frequenz bei minimaler Spannung, unter Last Drehzahl und Spannung wachsen. (Warum die Spannung? Und weil die Impulsfront steiler wird, und damit Pegel schneller, geht schneller von Zustand 0 zu Zustand 1). UPiP kann auf zwei Arten durchgeführt werden: durch ein spezialisiertes Dienstprogramm, wie z. B. KulBookController, oder GenericCPUPM, oder verstehen Sie den nativen Speedstep, mit freundlicher Genehmigung von MacOS kann das tun. Die nächsten Schritte sind notwendig: 1. Die HPET muss zwingend im DSDT korrigiert werden, was erfolgreich durchgeführt wird Kleeblatt an Maske 0x0010. 2. Es muss ein korrekter Prozessorteil vorhanden sein, was von Clover unter Schlüssel GeneratePStates=Yes (und zusätzlich DropSsdt) 3. Als Beispiel für Ihr SMBIOS muss ein MacModell ausgewählt werden, für das Die EIST-Technologie ist verfügbar. Es stellt sich heraus, dass dies nicht für alle Modelle gilt. К Für das Modell MacBook1.1 funktioniert Speedstep beispielsweise nicht, und für MacBook5.1 wird. Absatz 3 kann wie folgt umgedeutet werden: Lassen Sie das Modell mehr ist ähnlich konfiguriert wie der reale, aber lassen Sie uns seine Plattform-Plast so festlegen, dass der Geschwindigkeitsschritt aufgetaucht. Für jedes Modell gibt es eine eigene Plist, siehe hier System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ ACPI_SMC_PlatformPlugin.kext/Contents/Resources/MacBook5_1.plist Sehen Sie die Gemeinsamkeiten und Unterschiede der verschiedenen Listen, und korrigieren Sie Ihre in die richtige Richtung. ConfigArray KonfigArray . . WWEN . Modell MacBook4,1 Restart-Aktion . cpu-p-state0 . . . Dieser Neustart-Aktionsschlüssel bedeutet, in welchen P-State die CPU beim Neustart fallen soll. Nur mit dieser Taste funktioniert der Ruhezustand und das Herunterfahren des Rechners! CtrlLoopArray CtrlLoopArray . . Beschreibung. SMC_CPU_Control_LoopPLimitDict . MacBook4,1 Khaki Clover. Version 5.1, Revision 5128 133 Moskau, 2021 0 . Dieser PLimitDict-Schlüssel wurde bereits bei der Erzeugung von P-Zuständen erwähnt. Wiederholen wir es: Diese Einschränkung die maximale Geschwindigkeit des Prozessors. 0 - die Geschwindigkeit ist maximal, 1- eine Stufe niedriger Maximum. Fehlt diese Taste hier jedoch, bleibt der Prozessor bei Mindestfrequenz. CStateDict CStateDict . MacBook4,1 CSD3. CSD3. . C6. Einschalten. Die Praxis zeigt, dass es besser ist, den gesamten Abschnitt zu entfernen, damit die Steuerung funktioniert Spannungsversorgung genau nach PState, nicht nach CState. Obwohl, es hängt von der eigenen Meinung ab, vielleicht ist diese Option durchzuarbeiten. Das Symptom ist, dass der Prozessor mit maximaler Frequenz arbeitet und nicht abfällt. Nach dem Entfernen des Abschnitts beginnt in der Häufigkeit zu variieren. Mit Skylake-Prozessoren gibt es eine neue Methodik zur Verwaltung der CPU-Frequenz, in ihrem eigenen Namen, es heißt SpeedShift. Ich habe es noch nicht herausgefunden, vorläufige Ergebnisse: Im CPU-Bereich schreiben wir zwei Tasten (der Erfinder ist goodwin_c) CPU . HWPEnable . HWPValue 0x30002a01 Die erste Taste setzt eine 1 in das MSR-Register 0x770. Die zweite Taste schreibt den angegebenen Wert in das MSR-Register 0x774. Das Problem mit dem Schlaf Was ist mit dem Schlafproblem? Wenn alle oben genannten Schritte durchgeführt wurden, wird der Computer ins Bett gehen und wie ein gehorsames Kind aufwachen. Das Wichtigste, was Sie tun müssen davon hat Clover bereits getan: korrigierte FADT und FACS. Es bleibt nur noch zu korrigieren DSDT, besorgen Sie sich einen Speedstep, verwenden Sie nur gute Texte, und Sie werden glücklich sein. Jedes Gerät kann eine gute Nachtruhe stören, auch ein stromloser PCI Gerät, oder teilweise aufgezogen. Zum Beispiel, AppleHDA. Der Schlaf ist stark gestört NullCPUPM.kext. Möglicherweise benötigen Sie keinen Speedstep, aber Sie sollten das NRET-Patch auf diese Weise erstellen, um den nativen AppleCPUPM auszuführen und Null wurde nicht benötigt. Und für diejenigen, die keinen Prozessor haben erlaubt, AppleCPUPM zu verwenden, können Sie SleepEnabler ausprobieren - manchmal hilft das, oder einen gepatchten Kernel. DSDT hat eine Gruppe von _GPE-Methoden mit Benachrichtigungen pro Gerät, die muss aus seinem Schlaf geweckt werden. Der Computer selbst ist wach, aber es kann sich herausstellen, dass er Video/Netzwerk/Ton/Maus vergessen aufzuwachen. Siehe DSDT, lernen Sie die Theorie, wie es geht. Außerdem gab es ein Problem mit dem Ruhezustand beim UEFI-Boot auf einem 10.8-System. Das Problem wurde in der Revision 1942 behoben. Änderung im OsxAptioFixDxe-Treiber: sleep/wakeup funktioniert auch in 10.8, sogar mit CsmVideoDxe. Heutzutage ist es ProtectMemoryRegions kirk. Nächster Trick für UEFI-Boot Clover in khakifarben. Version 5.1, Revision 5128 134 Moskau, 2021 ACPI. . HaltEnabler. Dies korrigiert den von UEFI-bios fehlinitialisierten Zustand des Chipsatzes. Für Legacy-Downloads macht CloverEFI alles richtig, ich habe dieses Problem dort nicht gesehen. Symptome - geht nicht in den Schlaf, Bildschirm geht aus und Lüfter nicht. Und noch ein Trick. Ohne das Kontrollkästchen "Automatisch starten..." hatte ich keine Möglichkeit, nach einem Nickerchen aufzuwachen. Hibernate Man nennt es auch Tiefschlaf, aber im Allgemeinen ist es eher der klinische Tod. Der Punkt ist, dass das System scheinbar in den Ruhezustand versetzt wird, aber es speichert seinen Zustand in der sleepimage, und schalten Sie den Computer einfach aus, damit er beim Wiedereinschalten nur seinen Zustand wiederhergestellt und ist aufgewacht. Für Laptops ist dies entscheidend. Wenn Im normalen Ruhezustand wird der Computer nicht vollständig heruntergefahren und verwendet weiterhin Elektrizität, wenn auch weniger als im Arbeitszustand, aber immer noch spürbar zu die Batterie während einer gewissen Ruhezeit vollständig entladen ist. Während des Ruhezustands wird die Batterie nicht verwendet wird, und nur durch seine Leckage entladen wird. Hibernate funktionierte vor langer Zeit mit Chameleon, aber nur bis zur Version 10.7.2 (glaube ich), Dann, aufgrund einiger Änderungen im System, funktionierte diese Methodik nicht mehr. Im Clover es geschafft, einen Hibernat zu machen, aber unter folgenden Bedingungen: - Laden Sie entweder CloverEFI (Legacy), InsydeEFI oder Phoenix 2.3.1. Im aktuellen Mit der Revision 2915+ wurde der Treiber OsxAptioFix2Drv eingeführt, mit dem Sie hibernat mit AMI UEFI auf einem 10.9.1+ System. Aber das System 10.7.5 bootet überhaupt nicht von diese Option. Ach, und was soll's! - Das System ist entweder 10.7.5 oder 10.9.1+. Andere Systeme sind noch nicht aufgewacht. Khaki Clover. Version 5.1, Revision 5128 135 Moskau, 2021 - Mode 21 oder, noch besser, 29 oder sogar 57, obwohl Apple auf 25 beharrt. sudo pmset -a hibernatemode 29 Ab Kapitän 29 kann man das nicht mehr so sagen. Der Trick ist folgendermaßen: - kopieren Sie /Library/Preferences/com.apple.PowerManagement.511CE201-1000-4000- 9999-120361221216.plist auf dem Desktop. Es gibt mehrere solcher Dateien, wählen Sie die gewünschte aus, die mit der UUID in den Systeminformationen übereinstimmt. Sie bearbeiten diese Datei, zum Einbringen von 29 Winterschlaf-Modus 29 Und kopieren Sie die bearbeitete Datei mit Hilfe des Terminals zurück sudo cp ~/Desktop/ com.apple.PowerManagement.511CE201-1000-4000-9999- 120361221216.plist /Library/Preferences/ Danach ist ein Neustart erforderlich, erst dann wird die Änderung wirksam. - Wenn Sie jedoch ein echtes, eisenfestes NVRAM laufen haben, können Sie Mod 25 ausführen. И dann in der Konfiguration Boot. StrictHibernate . - Für System 10.13 und höher müssen Sie Folgendes aktivieren RtcHibernateAware . weil der Verschlüsselungsschlüssel in das CMOS geschrieben werden kann, und weil Clover sollte zusätzliche NVRAM-Variablen erzeugen. (über letzteres noch Ich werde darüber nachdenken müssen. Es funktioniert wie folgt: 1. Stellen Sie Mod 29 (oder 25) ein, falls nicht bereits eingestellt. Es ist nicht notwendig, dies zu wiederholen. 2. Versetzen Sie den Computer in den Ruhezustand, entweder über das Menü oder durch Schließen des Deckels oder durch Drücken der Leistung, wenn dies so konfiguriert ist. Nach einer Minute wird der Computer vollständig heruntergefahren. 3. Um aufzuwachen, schalten Sie es einfach wie gewohnt ein. Sehen Sie den BIOS-Startbildschirm, geben Sie das Menü "Clover". Und hier sehen wir, dass unser System markiert ist (im Winterschlaf) Khaki Clover. Version 5.1, Revision 5128 136 Moskau, 2021 Bei anderen Systemen ist dies nicht der Fall. Wenn dieses Symbol angeklickt wird, wird das System gebootet von Bild, ein paar Sekunden, Sie können den Fortschritt am unteren Rand sehen, und das System schaltet sich ein. Es ist viel mehr schneller als ein normaler Systemstart, insbesondere bei Laptops, und vor allem bei eine große Anzahl von offenen Anwendungen. Es ist zu beachten, dass, wenn das Dateisystem des Datenträgers geändert wurde, nachdem Wenn Sie z. B. ein Hybridit von einem System verwenden, das von einer zweiten Partition geladen wurde, gibt es eine ernsthafte Gefahr der Beschädigung des Dateisystems, da im schlafenden System ein Cache mit einem anderen Strukturen. Für das System 10.9 wird diese Schwierigkeit automatisch überwunden, indem der Vergleich Änderungsdaten. Dies funktioniert nicht im System 10.7.5, vergewissern Sie sich manuell, dass es korrekt ist. Sie können das Aufwachen aus dem Bild abbrechen, indem Sie die Leertaste auf diesem Symbol drücken, und indem Sie "Ruhezustand abbrechen" wählen. Wenn das System immer noch der Meinung ist, dass es aufwachen sollte, muss es die in der Konfiguration: Boot. NeverHibernate . So verwenden Sie Die erste Begegnung Booten Sie zunächst in die Clover-GUI und versuchen Sie, für den Anfang hier zu leben, Drücken Sie verschiedene Tasten, bewegen Sie die Maus herum. Die obere Reihe der Schaltflächen sind die vorgesehenen Betriebssysteme, die Khaki Clover. Version 5.1, Revision 5128 137 Moskau, 2021 herunterladen. In diesem Bild gibt es zwei davon, Lion und Windows, wie Sie auf den Bildern sehen können. Realistisch gesehen, ich Ich erinnere Sie daran, dass Clover kein Bootloader für das Betriebssystem ist, sondern ein Manager ihrer eigenen Bootloader. Speziell für den Mac ist der Bootloader /System/Library/CoreServices/boot.efi. In diesem Fall für Windows, /EFI/microsoft/boot/bootmgfw.efi Untere Reihe der Schaltflächen - zusätzliche Funktionen: Befehlszeile (Shell), Menü Optionen, Informationen über den Lader und die Umgebung, starten Sie den Clover neu und beenden Sie ihn. Ausstieg wo? Zurück zur Umwelt. EFI, im UEFI-BIOS bzw. im CloverEFI. Es ist sehr nützlich, für die erste Einführung F1 zu drücken (wer hätte das gedacht?!). Wenn in der Konfiguration angezeigt GUI . Sprache. ru:0 die Hilfe wird auf Russisch sein. Die Befehlszeile ist so etwas wie DOS, mit der Möglichkeit, zu kopieren und zu löschen Dateien. Wie und wofür, das würde den Rahmen dieses Buches sprengen. Dies ist Shell.efi mit seiner Hilfe. In den Optionsmenüs können Sie einige Einstellungen ändern, die sich auf Ihren Fortschritt auswirken Systemlast. Einige von ihnen sind in der Datei config.plist angegeben, aber es könnte durchaus sein, dass dort steht falsch, und um diese Datei noch nicht zu bearbeiten, können die Einstellungen bereits bei einem vernachlässigten Kleeblatt. Khaki Clover. Version 5.1, Revision 5128 138 Moskau, 2021 Was genau zu ändern ist und wofür, das hängt von der Aufgabe ab, was genau Sie erreichen wollen. Sehr nervige Anfragen wie "Ich habe eine xd Western Digital und Corsair-Speicher, helfen Sie mir beim Einrichten config". Config wird nicht durch die Hardware konfiguriert, sondern durch das Ergebnis. Wenn Sie nicht sofort booten, versuchen Sie festzustellen, was das Problem sein könnte, und beheben Sie es in diesem Menü. Mehrere spezielle Download-Methoden können durch Drücken der Leertaste auf dem Symbol erreicht werden Bootloader. (erneut, ENTER - Systemstart, SPACE - Aufruf des Zusatzmenüs Downloads). Insbesondere ist dies die einzige Möglichkeit, eine unerwünschte Überwinterung zu verhindern. Warum ist Clover so langsam beim Starten? Einige können nicht einmal den Start abwarten und berichten, dass Clover nicht funktioniert. Schauen wir uns diese Frage einmal genauer an. 1. Das debug.log wird gesetzt. Boot. Debug. Ja, es ist eine sehr wertvolle Information, zu wissen, was nicht funktioniert und warum. Aber bedenken Sie, dass es den Startvorgang wirklich verlangsamt. Wenn Clover auf dem USB installiert ist (um es sozusagen auszuprobieren, wir nicht glauben, dass Clover überhaupt arbeiten kann, oder?!), dann kann ein Debug-Startup Khaki Clover. Version 5.1, Revision 5128 139 Moskau, 2021 10 Minuten. Ja, wirklich. Dies liegt daran, dass das Debug-Protokoll öffnet, schließt und wird auf dem Flash-Laufwerk in jeder Zeile überschrieben. Damit ist sichergestellt, dass Sie Informationen über den Erfolg der Inbetriebnahme auch bei einem heftigen Schnitt, wenn Sie also Gehen wir zum Debuggen, warten wir! Oder setzen Sie für den ersten Versuch. 2. Zu viele Festplatten, Partitionen und Dateien auf ihnen. Clover muss, um das Startmenü zu erstellen, alle Festplatten, alle Partitionen und alle Dateien auf ihnen, um herauszufinden, welche Systeme zur Ausführung angeboten werden können. Na warte! Entweder den Scanvorgang abbrechen, GUI . Scan. . Einträge. Legacy. Werkzeug. . und stellen Sie ein Menü manuell zusammen GUI . Benutzerdefiniert. . Einträge. . Zugegeben, es bedarf einiger geistiger Anstrengung, um herauszufinden, was man dort schreiben soll. Entweder Belassen Sie den Bootloader-Scan vorerst, um wenigstens irgendwo zu booten. Scan. . Einträge. 3. Eine riesige Windows- oder Linux-Partition, und nicht einmal eine. Die Windows-Partition wird mit dem NTFS-Treiber gescannt. Und in dieser Partition, normalerweise eine Million Dateien, und unter ihnen suchen wir nach bootmgr.efi. Ich würde empfehlen, Windows so zu installieren, dass sich diese Datei auf der EFI-Partition befindet, und NTFS.efi-Treiber komplett entfernt und somit keine Windows-Partitionen gescannt. Ähnlich verhält es sich mit der Linux-Partition und dem Treiber VBoxExt2.efi. 4. Zu viele Treiber im Ordner /EFI/CLOVER/drivers/ Ich sehe eine Situation voraus, in der Leute anfangen, ihre eigenen Treiber dieses Typs zu produzieren und feststellen bereit, sie auszuprobieren. Überlegen Sie an dieser Stelle, ob Sie die zusätzlichen Treiber benötigen Tastatur, Maus, LowMemoryFix... Der Punkt ist, dass, wenn Sie von usbb ausgehen, das Lesen all diese Dateien können Zeit in Anspruch nehmen. 5. Nicht unterstützte Maus. Leider werden nicht alle Mäuse von dem uns vorliegenden EFI-Treiber unterstützt. Schlecht kann es sein, dass sich die Maus auf dem Bildschirm nicht korrekt verhält, oder dass sie stark bremst. Verbieten Sie es zur Inspektion, oder sogar dauerhaft, wenn es falsch ist Maus. Aktiviert. Geschwindigkeit0 . 6. Langsamer HFS+-Treiber. Im Lieferumfang des offiziellen Clover ist der Treiber VboxHFS.efi enthalten, der lizenziert ist ist sauber und versteht Links, ist aber langsamer als Apples HFSplus.efi. Herunterladen wo- Clover in khakifarben. Version 5.1, Revision 5128 140 Moskau, 2021