1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

HibernationFixup - Lilu плагин для решения проблем с гибернацией

Тема в разделе 'Хакинтош', создана пользователем lvs1974, 4 авг 2017.

  1. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Ссылка на страницу проекта на SourceForge
    Исходный код открыт: репозиторий
    Ссылка для загрузки: Release, Debug
    • Изначально этот плагин создавался для работы только с "железным" NVRAM, для тех у кого не работал 25-й режим гибернации (потому что не у всех FakeSMC цепляет и сохраняет ключ шифрования HBKP).
      Поэтому он создает ключ IOHibernateRTCVariables в NVRAM (нет разницы в каком именно). Никакие бут-арги для этой фичи не нужны, работает всегда.
    • Потом появилась идея записать содержимое NVRAM в файл nvram.plist перед уходом в гибернацию, и это можно сделать только на уже подмонтированный раздел диска, в итоге файл пишется в корень загрузочного диска.
      Для включения этой фичи нужен бут-арг -hbfx-dump-nvram. А кловер цепляет полученный nvram.plist только однажды - при выходе из гибернации, потому как время модификации у него свежее чем у файла nvram.plist на ESP.
      При следующем выключении/перезагрузке кловер сохранит новый nvram.plist в ESP, время модификации у него будет свежее.
      Без -hbfx-dump-nvram nvram.plist создает только кловер (обычно в ESP), и необходимой информации для успешного выхода из гибернации в нем нет.
    • Потом появилась идея точно так же записывать в файл nvram.plist информацию о паниках, для работы этой фичи так же нужен бут-арг -hbfx-dump-nvram.
    • Под конец появилась идея патчить IOPCIFamily (причем этот патч динамический, срабатывает только для гибернации, но не для обычного сна). Для включения фичи нужен бут-арг -hbfx-patch-pci. Патч актуален для 10.12 и выше.
      И этот патч никак не зависит от -hbfx-dump-nvram и от типа NVRAM (железного или эмулированного). Например в моей конфигурации он требуется всегда.
      Нужен ли он с эмулированным NVRAM можете понять только вы, методом эксперимента (причем желательно после смены типа используемого NVRAM очистить его содержимое и пару разу перегрузиться).
    • Что касается очистки NVRAM: если вы решили перейти с "железного"на эмулируемый, лучше его очистить перед этим: выполнить sudo nvram -c ДО того, как загрузиться с драйвером EmuVariableUefi.
    • Для убедительности рекомендую после переключения на эмулируемый NVRAM вручную создать переменную "nvram test=test", перегрузиться и проверить с помощью "nvram -p" что она все еще существует.
    • FakeSMC крайне важен для стабильной работы гибернации, лучше всего использовать последнюю версию от @slice (влияет на уход в гибернацию при закрытии крышки).
    Управление (через boot-args):
    • "-hbfx-dump-nvram" сохраняет содержимое NVRAM (железного или эмулируемго) в файл nvram.plist перед уходом в гибернацию или при возникновении паники ядра
    • "-hbfx-patch-pci" включает патч для IOPCIFamily (некоторым необходим чтобы успешно выйти из гибернации), применяется ко всем устройствам (10.12 и выше)
    • "hbfx-patch-pci=XHC,IGPU" позволяет точно указать список устройств, для которых нужно запретить запись в PCI команды kIOPCIConfigCommand (10.12 и выше)
    • "-hbfxdbg" включает отладочные сообщения (только в DEBUG версии)
    • "-hbfxbeta" позволяет использовать HibernationFixup на неподдерживаемых системах
    • "-hbfxoff" отключает HibernationFixup
    Описание изменений:
     
    Последнее редактирование: 8 сен 2017
    alex1960, GLXOZ, iDark Soul и 8 другим нравится это.
     
  2. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Зарезервировано.
     
    Andrey1970 нравится это.
  3. Gosvamih

    Gosvamih iГуру

    Симпатии:
    359
    @lvs1974, На моей матери (первая в подписи) dmpstore -all -d вызвал не способность пройти POST. Никакие "трюки" - вытаскивание батареек, модулей памяти, clear RTC RAM, и прочее (даже проц вытаскивал помятуя историю slice), - ничего не решили. Включается, подсветка дорожек зажигается и гаснет (обычно горит постоянно), вентиляторы крутятся и всё. К счастью, у меня был программатор и ещё комп с виндой для него. Просле прошивки, первый запуск - тоже не прошёл POST. Затем принудительное выключение удержанием кнопки питания, и второй запуск уже нормально. Поведение после прошивки нормальное для этой матери.

    Хочу сказать , что использование этой команды дело рисковое в некоторых случаях.
    Есть более мягкий путь для очистки nvram при переходе с "железного" NVRAM на эмуляцию. Просто надо выполнить
    sudo nvram -c ДО того, как загрузиться с драйвером EmuVariableUefi. И перезагрузиться пару раз, пока в корневом разделе не появится nvram.plist
    Тоже самое, если гибернация с эмуляцией по какой-то причине слетела. Надо загрузиться без EmuVariableUefi, удалить nvram.plist, очистить sudo nvram -c, сразу вернуть на место EmuVariableUefi, перезагрузиться и если nvram.plist в корне не появился после первой перезагрузки, перезагрузиться ещё раз.
    В силу экспериментов с двумя системами, HS и Sierra, каждая из которых стоит на своём диске, мне часто приходится восстанавливать гибернацию, и даже просто загрузку. (когда и обычная загрузка перестаёт работать, надо сначала удалить nvram.plist из корня). И данная последовательность восстановления гибернации с эмуляцией работает на обеих системах на 100 процентов.
     
    Последнее редактирование: 4 авг 2017
    dmitry.matora, omnitrio и lvs1974 нравится это.
  4. Andrey1970

    Andrey1970 iГуру

    Симпатии:
    4`295
    @lvs1974, добавь в шапку, что нужно использовать последний FakeSMC от @slice, иначе будут проблемы с гибернацией от крышки.
    Вот бы еще крышку на 10.13 починить.
     
    Последнее редактирование: 12 окт 2017
  5. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Обновил шапку.

    Добавил.
     
    Andrey1970 нравится это.
  6. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    А есть уже успешные случаи работы гибернации на ноутах-настоящиках под 10.13, с крышкой и без?
     
  7. Andrey1970

    Andrey1970 iГуру

    Симпатии:
    4`295
    @lvs1974, этого мне неизвестно.
     
  8. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Только что опробовал гибернацию на 10.13 beta 4 (17A315) от крышки - и она работает!
    Из кекстов (не Apple) у меня установлено все это:
    Код:
       35    0 0xffffff7f859c6000 0xc000     0xc000     org.rehabman.driver.AppleSmartBatteryManager (1.70.3) 1A833865-B349-35FA-BD06-8222A4A33CFB <11 4 3>
       36    6 0xffffff7f859d2000 0x46000    0x46000    as.vit9696.Lilu (1.1.6) 289F8924-5235-3D7B-B29E-E5EE605860BC <7 5 4 3 2 1>
       37    0 0xffffff7f85a18000 0xa3000    0xa3000    as.vit9696.AppleALC (1.1.4) B1DFB772-FD26-3B21-953C-F4C7E09AAF06 <36 7 5 4 3 2 1>
       41    0 0xffffff7f85abb000 0x8000     0x8000     as.lvs1974.AirportBrcmFixup (1.0.2) BD1E3762-A172-3B31-B6E6-87F91ADFA8F6 <40 39 36 12 7 5 4 3 2 1>
       42    0 0xffffff7f85ac3000 0x6000     0x6000     as.lvs1974.HibernationFixup (1.1.5) A9784A78-4136-3D21-AB1B-DEFCEC5ECD81 <36 7 5 4 3 2 1>
       43    0 0xffffff7f85ac9000 0x4000     0x4000     as.vit9696.Shiki (2.0.4) 8191E249-54BB-3348-9572-D93BECBAD9E6 <36 7 5 4 3 2 1>
       44    2 0xffffff7f85acd000 0xb000     0xb000     org.netkas.FakeSMC (3.4.2) 1919C61E-1766-39F9-AE2B-CB94F7842BA2 <11 7 5 4 3>
       45    0 0xffffff7f85ad8000 0x4000     0x4000     org.slice.HWInfo (1.0.1) 1C36E311-B17C-34E5-A65B-34E7F3DC65C2 <44 7 4 3>
       46    0 0xffffff7f85adc000 0x7000     0x7000     org.slice.IntelCPUMonitor (1.2.0) 37A707D9-686A-37FB-8C1F-82FFDFF84C6E <44 7 5 4 3>
       47    0 0xffffff7f85ae3000 0x4000     0x4000     as.lvs1974.IntelGraphicsFixup (1.1.5) 47BB5305-FFF7-3F9B-9AE8-31240D02F451 <36 7 5 4 3 2 1>
       48    0 0xffffff7f85ae7000 0x5000     0x5000     com.rehabman.driver.USBInjectAll (0.6.2) 6A9D456A-D1B1-316E-90CD-78E5B0002C5E <12 11 4 3>
       49    0 0xffffff7f85aec000 0x3000     0x3000     as.lvs1974.NvidiaGraphicsFixup (1.1.3) C95FBA3D-CDB4-3512-94D9-A29662B4D8FF <36 7 5 4 3 2 1>
      62    2 0xffffff7f85aef000 0xa000     0xa000     org.emlydinesh.driver.ApplePS2Controller (4.6.8) 34755F6A-A94B-3B41-B7F9-E7E533789C8D <11 7 5 4 3 1>
       67    0 0xffffff7f85af9000 0x7000     0x7000     org.rehabman.driver.FakePCIID (1.3.9) BC738576-B800-3E7F-992D-3851C67CCAA9 <12 7 5 4 3 1>
       75    1 0xffffff7f85b00000 0xd000     0xd000     org.emlydinesh.driver.ApplePS2Keyboard (4.6.8) 8628ADB8-A873-3841-B155-70BFE0785990 <62 60 17 7 6 5 4 3 1>
       76    0 0xffffff7f85b0d000 0x20000    0x20000    org.emlydinesh.driver.ApplePS2SmartTouchPad (4.6.8) 7949E194-C65C-39D4-8564-A2D139A671A5 <75 62 60 17 7 6 5 4 3 1>
       95    1 0xffffff7f85b2d000 0x25a000   0x25a000   com.no-one.BrcmFirmwareStore (2.2.7) 160DD596-DFC2-35BD-B0F9-28D95F0B8190 <5 4 3>
       96    0 0xffffff7f85d87000 0xb000     0xb000     com.no-one.BrcmPatchRAM2 (2.2.7) 76FC3024-9FF8-3607-A616-DF7C550751CB <95 22 5 4 3 1>
    
    Не понимаю почему заработало...
    Карт ридер правда совсем перестал работать, в логе вот такая строка:
    2017-08-05 17:34:36.625233+0200 localhost kernel[0]: (AppleSDXC) <AppleSDXC`AppleSDXCSlot::start(IOService*)> AppleSDXCSlot Could not initialize SDXC Slot
     
    Andrey1970 нравится это.
  9. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Поочередно сейчас откатывал свои последние изменения в системе и проверял - все равно работает.
    Фантастика!
     
  10. Andrey1970

    Andrey1970 iГуру

    Симпатии:
    4`295
    @lvs1974, Дааа на 4-й бете заработало, а я на ней не проверял. :) Вот только после твоего поста попробовал, все ОК.

    Картридер бродком, на одном чипе с Лан? Я помойму уже тебе отвечал.
    Там что-то намудили с кекстом AppleBCM5701Ethernet.kext, замени его на одноименный от 10.12.6, перебери кеш, выключи и включи ноут (в первый раз именно так, а не ребут). Картридер заработает.
    И Лан нормально будет заводиться с помошью кекстов FakePCIID.
    Решение конечно не фонтан, но пока так.
     
    Круглянин, egosys и lvs1974 нравится это.
  11. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Понял, спасибо!
    Буду пробовать!
     
  12. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    @Andrey1970: Работает!!! Спасибо огромное!!!
     
  13. Andrey1970

    Andrey1970 iГуру

    Симпатии:
    4`295
    Вот бы еще бы патч Лилу AppleBCM5701Ethernet.kext для 10.13 кто-нибудь сделал...
    А то автора FakePCIID что-то не видно, а рехаб врят-ли исправит.
    Хотя есть призрачная надежда, что это просто косяк Эпле и может они починят.
     
  14. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    А что может сделать автор FakePCIID? Этот кекст не предназначен для патчей, только для подмены PCI id.
    Чтобы понять косяк ли это Apple или нет - нужен настоящик с такой же картой BCM5701...
     
    Andrey1970 нравится это.
  15. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    10`599
    Насколько я знаю автор именно рехаб.
    А кекст на проверку девайс-айди можно патчить просто кловером.
    Нужно зайти в тему от СанКи, и посмотреть, что он там патчил.
     
    Andrey1970 и chrome нравится это.
  16. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    10`599
    Andrey1970 нравится это.
  17. lvs1974

    lvs1974 Apple Life Dev Разработчик

    Симпатии:
    541
    Большинство проблем, которые там обсуждаются касаются подмены device-id.
    Если использовать FakePCIID.kext - проблема с чтением device-id из PCI решается
    (FakePCIID подменяет таблицу виртуальных методов у наследника класса IOService и переопределяет функции чтения из PCI).
    А в 10.13 Apple явно что-то сломали: чип один (Ethernet + Card reader), и видимо AppleBCM5701Ethernet неправильно его инициализирует,
    потому что ethernet глючит, а card reader отваливается в методе start.
     
    Moorre и Andrey1970 нравится это.
  18. slice

    slice Apple Life Dev Разработчик

    Симпатии:
    10`599
    Тогда лучше скомпилировать новый кекст, который только на сетевую. Исходники есть.
    А кард-ридер - бог с ним, вещь не очень нужная, и телефоны и фотики цепляются к компьютеру проводом, или синезубом.
     
  19. Vandroiy

    Vandroiy iГуру

    Симпатии:
    4`767
    @lvs1974, Привет. Апнешь HibernationFixup до High Sierra? А то все остальные твои плагины грузятся без бутарга -beta;)
     
    chrome нравится это.
  20. Andrey1970

    Andrey1970 iГуру

    Симпатии:
    4`295
    Оно не совсем не работает. Я уже писал об этом: https://www.applelife.ru/threads/dr...u-podobnyx-kartochek.40840/page-2#post-669356
    Если не перегружатся, а делать выкл-вкл ноута, то картридер работает и лан заводится через FakePCIID, но мак адрес будет дебильный. Если ребутится, то ни картридера, ни лан в системе не видно.
     
Similar Threads: HibernationFixup Lilu
Форум Заголовок Дата
Хакинтош AirportBrcmFixup - Lilu плагин с набором патчей для Wi-Fi карт Broadcom 4 авг 2017
Хакинтош Lilu — патчер кекстов и процессов 22 фев 2017

Поделиться этой страницей