On The Fly Kernel und Kextpatcher für Ozmosis

  • Einer der größten Kritikpunkte an Ozmosis ist die Tatsache das es mit Bordmitteln von Ozmosis bisher nicht möglich ist Kernel und Kextpatches ähnlich wie bei Clover on the Fly zu realisieren sprich wo immer Patches nötig sind (Whitelist Patch für Broadcom WLAN Karten, NVME SSD usw...) war man mit Ozmosis bisher außen vor denn die Patches ließen sich nicht auf eine ähnlich komfortable Weise wie mit Clover ins System einschleusen sondern man musste entweder selbst Hand anlegen und einen HEX Editor bemühen oder aber eine Litanei von Perl Befehlen ausführen beides keine wirklich zufrieden stellende Lösung da hierbei die Dateien dauerhaft verändert werden und man das Prozedere nach jedem Update wiederholen durfte bis jetzt...


    @cecekpawon hat sich diesem Problem angenommen und Abhilfe in Form eines Kernel and Kextpatchers geschaffen der sich sowohl als Driver über die UEFI Shell (nicht ganz unwichtig wenn wenig Platz im ROM ist) als auch als FFS direkt im ROM unterbringen lässt. Das Ganze greift das ExitBootServices Event ab und klemmt sich lax gesprochen zwischen OZ und den Start des Kernel durch OS-X und nimmt ähnlich wie Clover die Patches dann im RAM vor (innerhalb des prelinked Kernels) der Vorteil liegt auf der Hand da diese Methode nicht destruktiv ist sprich es werden keine Files auf der Platte verändert aber wie funktioniert das nun und was muss getan werden um es zu nutzen?


    Als erstes braucht man logischerweise erstmal den Patcher selbst den man sich am besten auf der dazu gehörenden GitHub Seite besorgt ( https://github.com/cecekpawon/…ter/Module/KernextPatcher ). Einmal geladen befindet sich im Downloads Ordner ein Verzeichnis mit folgendem Inhalt

    Je nachdem wie man den Patcher einsetzen möchte benötigt man aus dem Verzeichnis entweder die .efi (als Treiber über die EFI Shell geladen) oder die .ffs (direkt in den ROM gebaut) Datei. Ich empfehle aktuell den Treiber noch über die EFI Shell zu laden denn er befindet sich aktuell noch in der Entwicklung und durch das laden über die EFI Shell lassen sich die Versionen ggf. schnell austauschen ohne dabei jedes mal den ROM neu flashen zu müssen. Damit der Treiber über die EFI Shell geladen werden kann muss er auf die EFI Partition im Ordner EFI abgelegt werden

    zusätzlich zum Patcher selbst braucht es natürlich auch noch das File in dem die einzelnen Patches definiert werden müssen. Dieses File (KernextPatcher.plist) ist eine einfache .plist die sich an der Struktur der Kext2Patch Einträge aus der config.plist von Clover orientiert ( besonders praktisch für Clover Umsteiger :D ) hier mal ein Beispiel wie die Datei aussehen könnte:

    Ihr seht der Aufbau entspricht der Kext2Patch bzw. Kernel2Patch Sektion der config.plist von Clover es lassen sich sogar die Einträge aus der config.plist von Clover 1:1 in dieses Konstrukt übernehmen. Um das ganze nu zu nutzen muss der Patcher dem UEFI nun noch vertraut gemacht werden sofern Ihr nicht das .ffs direkt in den ROM gebaut habt sondern wie empfohlen den Weg über die EFI Shell geht kommt ihr mit den folgenden Befehlen ans Ziel.


    1. EFI Shell starten -> Bios Bootmenu -> Buildin EFI Shell.
    2. Filesystem mittels fs0: auf die EFI Partition der ersten Platte wechseln.
    3. Mittels cd EFI ins EFI Verzeichnis wechseln.
    4. Mit dem Befehl bcfg driver add 0 KernextPatcher.efi "KernextPatcher" den Treiber hinzufügen.
    5. Exit eingeben und neu starten


    Wenn Ihr alles richtig gemacht habt verrichtet der Patcher ab jetzt seinen Dienst und protokolliert sein Tun in einem Logfile auf der EFI Partition. Sobald Ihr alle Patches die Ihr benötigt in die KernextPatcher.plist eingefügt habt und alles zu Eurer Zufriedenheit läuft könnt Ihr im unteren Bereich der KernextPatcher.plist das Logging auch abschalten hierzu einfach im Bereich Preferences der KernextPatcher.plist den Wert für den Key SaveLogToFile auf false setzen.


    So nun aber viel Spaß beim testen und natürlich heißen Dank an @cecekpawon für dieses geniale Ding :D

  • Interessante Geschichte... Vill werd ich mich auch nochmal mit Ozmosis beschäftigen :D

    Gruß CrusadeGT


  • Super! 8o Hier im Forum findet man tatsächlich zu allem einen Eintrag, hier bräuchte ich aber etwas Hilfe:


    Ich versuche mich gerade daran eine Kernexpatcher.plist zu erstellen, um den Boot graphics Fehler (10.12. HD4000) aus der Welt zu schaffen, ohne
    das System zu verändern.


    Die Hex Werte um den IOGraphicsFamily.kext zu patchen sind folgende:
    Find 0100007525
    Replace 010000eb25


    1. Wie kann ich diese Werte in der Kernexpatcher.plist integrieren, also wie komme ich auf die entsprechenden Werte oder wo kann ich diese finden?
    2. Kann ich KernextPatcher.efi und die KernextPatcher.plist Datei auch vom Desktop aus in die gemountete Efi legen oder muss das aus dem Buildin EFI Shell gemacht werden?


    Im Anhang habe ich meine KernextPatcher.plist und ein Screenshot vom Plist Editor. Die Plist habe ich hier aus dem Beitrag entnommen, auf eine Sektion gekürzt und die Beschreibung unter Comment geändert...

    Bilder

    Dateien

    iMacPro 1,1 - ASUS Prime Z390A - i7 9700K 3.60GHz - Corsair H100i PRO - Radeon Sapphire Vega 56 8 GB

    64GB Corsair Vengeance DDR4-3200 - WD BLACK SN750 NVMe M.2 500 GB - BCM943602CS - OC 0.8.7 - macOS Vetura - Windows 10


    iMac 15,1 - GA-H77-DS3H Rev. 1.1 - Intel Core i5 3570K - GIGABYTE Nvidia GeForce GTX 770 OC - 16 GB 1600 MHz DDR3 - Samsung SSD970EVO PLUS 500GB NVMe - macOS 11.4. - OC 0.7.0



  • Das sollte so aussehen...

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • Vielen Dank! Läuft :feuerwerk:


    Frage 2 hatte sich dann erledigt, nachdem ich die Anleitung nochmal gelesen hatte...
    Und zur Info, funktioniert hatte es erst nach der 2. Bekanntmachung im Shell.. (bcfg driver add 0 KernextPatcher.efi "KernextPatcher")

    Bilder

    iMacPro 1,1 - ASUS Prime Z390A - i7 9700K 3.60GHz - Corsair H100i PRO - Radeon Sapphire Vega 56 8 GB

    64GB Corsair Vengeance DDR4-3200 - WD BLACK SN750 NVMe M.2 500 GB - BCM943602CS - OC 0.8.7 - macOS Vetura - Windows 10


    iMac 15,1 - GA-H77-DS3H Rev. 1.1 - Intel Core i5 3570K - GIGABYTE Nvidia GeForce GTX 770 OC - 16 GB 1600 MHz DDR3 - Samsung SSD970EVO PLUS 500GB NVMe - macOS 11.4. - OC 0.7.0



  • Nice :D :D

  • How can I correctly add 10.13.4 PMHeart USB patch? I only need corect patch xml. kernextpatcher.plist
    Thanks.

    * GA-Z87MX-D3H F7 OpenCore 0.5.7 * * i5-4570 HD 4600 | I217-V | ALC892 |
    I don't speak German, but G-Translator helps me. :D

  • Hi,


    put the following code into the kernextpatcher.plist:

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • To be able to boot correctly kernexpatcher.efi and ozmosis.efi guessi have to remove ozmosis.ffs from bios right?
    Thanks.

    * GA-Z87MX-D3H F7 OpenCore 0.5.7 * * i5-4570 HD 4600 | I217-V | ALC892 |
    I don't speak German, but G-Translator helps me. :D

    Einmal editiert, zuletzt von nikoZ ()

  • You should put the kernextpatcher as an ffs directly into the rom itself...

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • Got it working by editing kernextpatcher.plist according to your code then integrated kernextpatcher.ffs and ozmosis.ffs into bios. All good, all ports working correctly using latest USBinjectall and properly edited DSDT.
    Thank you very much!

    * GA-Z87MX-D3H F7 OpenCore 0.5.7 * * i5-4570 HD 4600 | I217-V | ALC892 |
    I don't speak German, but G-Translator helps me. :D

  • Great news... :thumbsup:

    Gruß
    Al6042

    Keine Unterstützung per PN oder Pinnwand... Eure Anfragen gehören ins Forum, nicht in mein Postfach!

  • griven

    Hat das Label Erledigt hinzugefügt