Miałem ostatnio taki przypadek. Moja karta graficzna (przeciętny model NVIDIA) zaczęła się coś dziwnie zachowywać (czarne artefakty na ekranie, powolne działanie itd). Myślę sobie, ostro mieszam w moim systemie, być może to kwestia jakiś aktualizacji. No to odpalam AppStore i bezmyślnie kliknąłem w Update All. No i się zaczęło. Okazało się że dosłownie kilkanaście godzin wcześniej, Apple wypuściło małą aktualizację zabezpieczeń. Znaczy to nie mniej nie więcej, że nagle sterowniki NVIDII przestały mi działać. Ten "wynalazek" tak ma że jest przypisany nie do konkretnej odsłony macOS np. "Sierra", "High Sierra" tylko do konkretnej kompliacji np. 16G29. W związku z tym, najmniejsza aktualizacja zmienia ten numerek i wtedy zaczyna się jazda bo sterowniki ekranu najzwyczajniej przestają działać i zostaje Ci tryb awaryjny lub kernel panic przy starcie. Zupełnie niewesoło się robi, jak spróbujecie tak jak ja odinstalować kompletnie sterowniki. Nie wiem czemu to zrobiłem, ale było to ekstremalnie głupie. Przez to proces przywracania sprawności kart NVIDII znacząco się wydłużył. No ale :) Nie ma sytuacji bez wyjścia. Straciłem kilka godzin, za to wy kilkoma kliknięciami będziecie sobie mogli z problemem poradzić :) Oto krótki poradnik na temat: jak obejść zabezpieczenia NVIDII.
Zmiana numeru kompilacji w zainstalowanych sterownikach
Jeśli zdarzyło Wam się zaktualizować system i nagle sterowniki przestały działać, a nie ma najnowszej aktualizacji dla Waszej kompilacji, to istnieje BARDZO prosty sposób na to aby włączyć zainstalowane już w systemie sterowniki dla Waszej kompilacji.
- Przejdźcie do katalogu:
/Library/Extensions/
i prawym przyciskiem kliknijcie naNVDAStartupWeb.kext
i następnie wybierzcie ```Pokaż zawartość pakietu". - Przejdźcie do podkatalogu
Contents
i otwórzcie w Text Edit lub w edytorze kodu plikInfo.plist
- Następnie znajdźcie
NVDARequiredOS
i zmieńcie numer kompilacji który jest w tym pliku na numer kompilacji swojego systemu. - Numer kompilacji swojego systemu znajdziecie klikając w wersje Waszego systemu:
- Teraz pozostaje tylko wyczyścić cache w terminalu:
sudo kextcache -system-prelinked-kernel
sudo kextcache -system-caches
Tyle :) Po ponownym uruchomieniu wcześniej działające sterowniki zaczną działać ponownie. Teraz spokojnie możecie pracować dalej, w międzyczasie czekając łaskawie na aktualizację od NVIDII.
Ominięcie zabezpieczeń instalatora
Może się również zdarzyć tak jak u mnie. Przez przypadek usunęliście sterowniki z systemu lub chcecie je zainstalować zanim włożycie kartę. Odpalacie instalator a tu informacja że Wasza kompilacja jest nieobsługiwana bądź nie wykryto karty NVIDIA w systemie. Co wtedy zrobić ? Ano najlepiej usunąć te zabezpieczenia. Wszak my wiemy lepiej :)
Przygotowania zaczniemy od pobrania programu który nazywa się Flat Package Editor. Przechodzimy na stronę https://developer.apple.com/downloads/index.action (będzie potrzebne stworzenie konta developera) i wybieramy Auxillary Tools z Late July 2012
Po pobraniu pakietu musimy wyciągnąć Flat Package Editor z pakietu Package Maker.
Klikamy prawym przyciskiem na "Package Maker" i wybieramy "Pokaż zawartość pakietu". Następnie przechodzimy do Contents\Resources\
i kopiujemy Flat Package Editor.app na pulpit lub gdziekolwiek indziej.
Następnie otwieramy program.
- Teraz musicie otworzyć w programie instalator sterowników NVIDIA, który możecie pobrać np. tutaj: https://www.tonymacx86.com/nvidia-drivers/ . Wybierzcie ten najbliższy waszej kompilacji macOS. Przypominam, że sprawdzenie nr-u kompilacji odbywa się poprzez kliknięcie w wersję macOS:
- Po wczytaniu instalatora, musicie przeciągnąć plik Distribution na pulpit w celu jego edycji:
- Otwórzcie plik w jakimś edytorze kodu, od biedy może to być nawet Text Edit (nie polecam, najlepiej użyć np. darmowego edytora kodu Atom)
- Jak widzicie jest tam szereg ciekawych funkcji. Weźmy np. tą:
function validateSoftware()
{
var supportedOSVer = "10.12.6";
var supportedOSBuildVer = "16G29";
var targetBuild = system.version.ProductBuildVersion;
var result = compareBuildVersions(targetBuild, supportedOSBuildVer);
Jak widzicie jest tam kluczowy element: supportedOSBuildVer = "16G29";
. Tutaj wystarczy zmienić wersję kompilacji aby instalator przestał krzyczeć że mamy niekompatybilny OS. Podmieniamy numer kompilacji, uwusamy plik Distribution który załadowaliśmy do Flat Package Editor i dodajemy swój w którym właśnie zmieniliśmy numer kompilacji. Potem klikamy "Save" i nasz zmodyfikowany instalator jest gotowy :)
W niektórych instalatorach jest zdecydowanie więcej funkcji. Można w ten sposób wyłączyć np. sprawdzanie czy mamy zainstalowaną kartę NVIDII. Z tego co widzę jednak, każdy instalator ma to zakodowane inaczej. Dlatego warto poeksperymentować :) Na pewno nic nie zepsujecie. Najczęściej to kwestia zmiany z false na true lub na odwrót.
W razie pytań służę :)