Krótkie wprowadzenie w tematykę config.plist

Zbiór poradników i linków do tutoriali które można wykorzystać przy pracy z wieloma wersjami macOS.
Awatar użytkownika
Alpha01
Hardcore Hackintosher
Posty: 3780
Rejestracja: 21 kwie 2019, 18:04
Lokalizacja: Silesia Superior

Krótkie wprowadzenie w tematykę config.plist

Post autor: Alpha01 »

Plik config.plist, który znajduje się na /Volumes/EFI/EFI/CLOVER/ jest jednym z najważniejszych elementów hackintosha, a zarazem nieco zagadkowym elementem dla początkujących użytkowników.

Co to jest config.plist i czym otwieramy?
Config.plist to po prostu lista konfiguracji-właściwości w formacie XML.
XML posiada wiele podobieństw do HTML. Config.plist możemy otworzyć programem Xcode, zwykłym edytorem jak TextWrangler albo graficznym Clover Configurator, ten będziemy później najczęściej używać.

Struktura
Mówiąc prostym językiem, kiedy Clover czyta config.plist, spodziewa się, że będzie miał pewne elementy w pewnych miejscach. Kolejność i zakres konfiguracji są zatem bardzo ważne, a umieszczenie informacji w niewłaściwym miejscu może skutecznie ukryć je przed Cloverem.

Co znajdziemy w config.plist - typy danych
Istnieje kilka głównych typów danych, na które natrafimy podczas pracy z konfiguracją. Zarysuję tutaj te najczęściej używane.

Strings

<string> To jest ciąg </string>

To po prostu tylko zwykły tekst.

Liczby całkowite (Integers)

integer>1</integer>

To są tylko liczby całkowite.

Dane

<data> QWx0ZW1pcmFiZWxsZQ== </data>

Wyglądają podobnie jak strings, w rzeczywistości jest to zapis danych w base64.
Co to takiego to base64?
Base64 służy do kodowania ciągu bajtów za pomocą ciągu znaków. Kodowanie to przypisuje 64 wybranym znakom wartości od 0 do 63. Ciąg bajtów poddawany kodowaniu dzielony jest na grupy po 3 bajty. Ponieważ bajt ma 8 bitów, grupa 3 bajtów składa się z 24 bitów. Każdą taką grupę dzieli się następnie na 4 jednostki 6-bitowe, więc istnieją dokładnie 64 możliwe wartości każdej z tych jednostek.

Dane base64 można przekonwertować na ASCII za pomocą Terminala:

echo QWx0ZW1pcmFiZWxsZQ== | python -m base64 -d && echo
Zobacz sam co to znaczy 8-)

Uwaga >> Wiele edytorów plist (Clover Configurator, Xcode itp.) wyświetli data jako hexadecimal zamiast base64, więc uważaj i upewnij się, z czego korzystasz.

Booleans

<true/> lub <false/>

Możesz myśleć o nich jak o przełączniku, włączony lub wyłączony.

Arrays
To jest nieuporządkowana lista elementów. Gdybyśmy chcieli zebrać zbiór nazwisk, moglibyśmy zapisać je jako wartości <string>.

<array>
<string>Tytus</string>
<string>Romek</string>
<string>Atomek</string>
</array>


Dictionaries - dict

<dict>
<key>Imię</key>
<string>Tytus</string>
<key>Wiek</key>
<integer>11</integer>
<key>Zna XML</key>
<true/>
</dict>



Dictionary tak jak arrays świetnie nadają się do przechowywania dodatkowych kolekcji danych, ale zamiast bazować na indeksie, wykorzystują organizację klucz/wartość.
Jak widać z powyższego przykładu, jesteśmy w stanie przechowywać określone dane o Tytusie za pomocą par key/value. Wszystkie klucze są tylko zwykłym tekstem.

Przykład

W tym przykładzie zamierzamy zmienić wartość logiczną (boolean value) z false na true lub vice versa.
Będę używał wartości Disabled wewnątrz wpisu KextsToPatch, aby uczynić ten przykład realistycznym. Najpierw podamy wpis KextsToPatch, z którym będziemy pracować:

<dict>
<key>Comment</key>
<string>External icons patch</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RXh0ZXJuYWw=
</data>
<key>InfoPlistPatch</key>
<false/>
<key>Name</key>
<string>AppleAHCIPort</string>
<key>Replace</key>
<data>
SW50ZXJuYWw=
</data>
</dict>


To może wyglądać skomplikowanie, ale nie jest.
Znaczenie różnych kluczy:

Comment - to tylko komentarz opisujący działanie łatki.
Disabled - jest to trochę sprzeczne z intuicją, ale jest to wartość logiczna, która określa, czy ta poprawka jest wyłączona. Jeśli ustawione na <true/>, łatka zostanie wyłączona, a Clover będzie udawać że jej nie widzi.
InfoPlistPatch - jest to wartość logiczna, informacja dla Clovera.
Name - jest to nazwa rzeczywistego kexta, który zamierzamy załatać.
Find - to są dane base64, których chcemy szukać w kexcie.
Replace - to są dane base64 którymi właśnie zastąpimy dane szukane wcześniej w kexcie, jeśli je Clover znajdzie.

W porządku, teraz wyjaśnię, do czego ta łatka jest przeznaczona. Dzięki informacjom zawartym w tej łatce, Clover będzie szukać AppleAHCIPort.kext i wyszuka RXh0ZXJuYWw= oraz zastąpi go SW50ZXJuYWw=.
Efektem końcowym będzie to, że dyski, które można podłączać na gorąco (i zwykle są uważane za dyski zewnętrzne) będą wyświetlane jako dyski wewnętrzne i nie będą miały pomarańczowej ikony na pulpicie. To łatanie dzieje się w locie i jest nieniszczące - co oznacza, że ​​AppleAHCIPort.kext pozostaje nietknięty w systemie.

Jak wyłączyć tą poprawkę?
Zmienimy <false/> na <true/> w ten sposób:

<dict>
<key>Comment</key>
<string>External icons patch</string>
<key>Disabled</key>
<true/>
<key>Find</key>
<data>
RXh0ZXJuYWw=
</data>
<key>InfoPlistPatch</key>
<false/>
<key>Name</key>
<string>AppleAHCIPort</string>
<key>Replace</key>
<data>
SW50ZXJuYWw=
</data>
</dict>

…..
(Tekst jest uproszczonym zarysem, wersją alfa :P i może zawierać błędy. Jeśli znajdziesz powiadom mnie)
Gigabyte Z390 M Gaming, Core i7- 9700K, PowerColor RX 5700 Red Dragon, 16GB Crucial Ballistix Sport 3000MHz
Bootloader OC
Awatar użytkownika
DKnoto
Hardcore Hackintosher
Posty: 1162
Rejestracja: 05 maja 2019, 21:01
Lokalizacja: Niemcz

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: DKnoto »

Kolorowanie już nam ładnie działa:

Kod: Zaznacz cały

<dict>
<key>Comment</key>
<string>External icons patch</string>
<key>Disabled</key>
<true/>
.</dict>

Desktop: Dell OptiPlex 7040 | Intel Core i7 6700 | HD 530 | AMD Radeon FirePro W5100 | 24GB RAM
  • SSD/M.2 WD Black SN750 1TB: macOS Catalina 10.15.7 (19H1011)
  • SSD/SATA Samsung 850 EVO 120 GB: macOS High Sierra 10.13.6 (17G14042)

Awatar użytkownika
mrhackintosh
Admin
Posty: 144
Rejestracja: 15 wrz 2018, 23:48
Lokalizacja: Lodz
Kontakt:

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: mrhackintosh »

Wspaniale Alpha01 :) Wrzucę w wolnej chwili na stronę główną :)
Awatar użytkownika
DKnoto
Hardcore Hackintosher
Posty: 1162
Rejestracja: 05 maja 2019, 21:01
Lokalizacja: Niemcz

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: DKnoto »

@Altemmirabelle

Lepiej w przykładach używać komend samego Unixa, Python nie należy do kanonu :-)
Base64-Using.png
Base64-Using.png (37.77 KiB) Przejrzano 7162 razy

Desktop: Dell OptiPlex 7040 | Intel Core i7 6700 | HD 530 | AMD Radeon FirePro W5100 | 24GB RAM
  • SSD/M.2 WD Black SN750 1TB: macOS Catalina 10.15.7 (19H1011)
  • SSD/SATA Samsung 850 EVO 120 GB: macOS High Sierra 10.13.6 (17G14042)

Awatar użytkownika
Alpha01
Hardcore Hackintosher
Posty: 3780
Rejestracja: 21 kwie 2019, 18:04
Lokalizacja: Silesia Superior

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: Alpha01 »

To jest tylko wprowadzenie. Nie chciałbym by ludziom mózgi eksplodowały. :lol:
Ważniejszy będzie Clover Configurator.
Gigabyte Z390 M Gaming, Core i7- 9700K, PowerColor RX 5700 Red Dragon, 16GB Crucial Ballistix Sport 3000MHz
Bootloader OC
Awatar użytkownika
DKnoto
Hardcore Hackintosher
Posty: 1162
Rejestracja: 05 maja 2019, 21:01
Lokalizacja: Niemcz

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: DKnoto »

To fakt, sam też lubię go używać.

Mam takie pytanko „przy okazji”, jak to się dzieje, że Clover podmienia dane rozszerzenia jądra w locie i jądro się nie buntuje, że ktoś mu z boku gmera? ;-)

Desktop: Dell OptiPlex 7040 | Intel Core i7 6700 | HD 530 | AMD Radeon FirePro W5100 | 24GB RAM
  • SSD/M.2 WD Black SN750 1TB: macOS Catalina 10.15.7 (19H1011)
  • SSD/SATA Samsung 850 EVO 120 GB: macOS High Sierra 10.13.6 (17G14042)

Awatar użytkownika
Alpha01
Hardcore Hackintosher
Posty: 3780
Rejestracja: 21 kwie 2019, 18:04
Lokalizacja: Silesia Superior

Re: Krótkie wprowadzenie w tematykę config.plist

Post autor: Alpha01 »

IMHO wiąże się to z demontażem danego kodu, i metodą do szukania błędów w kodzie. Clover posługuje się funkcją samego systemu.
Ale może ktoś ma lepsze wytłumaczenie.
Gigabyte Z390 M Gaming, Core i7- 9700K, PowerColor RX 5700 Red Dragon, 16GB Crucial Ballistix Sport 3000MHz
Bootloader OC
ODPOWIEDZ