понедельник, 22 июня 2015 г.

Эх, Hackintosh!

Пока наши кеды пилятся потихонечку, я решил поставить Mac, а точнее Hack…






Давно я уже хотел попробовать OS X. Конечно, все мы наслышали о ее стабильности, красивом оформлении и удобстве работы. Ну что ж, проверим.
Так как лишних 100 т.р. у меня нету, то  естественно пришлось установить Hackintosh. Благо ресурсов в интернете предостаточно, где все разжевано от и до, справится даже школьник, а уж линуксоид тем более. Хотя, признаться были некоторые моменты, которые заставили гуглить и вникать в суть написанного.
Ноутбук Dell 3721, на борту которого:
  • CPU Intel Core i3
  • RAM 4Gb
  • GPU Intel HD4000
  • Audio Realtek ALC282
  • WiFi Atheros AR5B95 (не родной чип)
  • Lan Realtek RTL8139/810x
  • HDMI & USB 3.0
Сразу напишу, что модель очень хорошо подходит для Hackintosh и многие ее рекомендуют. Но, если вы в техническом плане не столь сильны, то не советую вам даже и пробовать Hackintosh. Хотите OS X - купите Mac! Хоть Linux и OS X одного поля ягоды, все-таки нужна определенная сноровка и умение завести то или иное оборудование, не каждому это под силу. Так же не стоит забывать, что OS X поддерживает не все железо, а потому могут возникнуть проблемы. О поддержке того или иного оборудования можно узнать на тематических форумах, вики или в гугле. Все кексты я приложу к статье, вдруг кому пригодятся. Так же предупреждаю, если вы надумали ставить Hack, то вы все делаете на свой риск и страх!
И так, начнем с технической части. Что бы завести стороннее оборудование нужно установить kext (кекст) - модуль ядра для OS X, он прям так и расшифровывается - Kernel Extension. Как оказалось, мой подопытный в итоге был забит множеством разных кекстов для полноценной и беспроблемной работы.
На начальном этапе я испытал проблемы с установкой загрузчика Clover для EFI. Загрузчик просто отказывался видеть EFI-раздел и устанавливался в корневую директорию. Но даже примонтировав раздел и указав вручную опцию EFI ESP он все равно не находил диск с системой. Я уже отчаялся поставить систему, но спасло простое копирование каталога EFI из установочной флешки в смонтированный EFI-раздел диска и система стартанула. Но это только начало, потому что дальше меня ждала настройка оборудования. Первым делом нужно было завести видеокарту Intel HD 4000, которая показывала "черный экран Малевича". Казалось бы родная для OS X карта, но не завелась из коробки.  Решилось это довольно-таки просто, прописав одну из конфигураций в файле настроек /EFI/CLOVER/config.plist загрузчика Clover:

<key>Graphics</key>
<dict>
<key>Inject</key>
<dict>
<key>ATI</key>
<false/>
<key>Intel</key>
<true/>
<key>NVidia</key>
<false/>
</dict>
<key>ig-platform-id</key>
<string>0x01660003</string>
</dict>

Эту операцию можно проделать и перед установкой системы на флешке и после, когда вы уже установите OS X. Родной Терминал нас спасет и поможет )) Смотрим диски:
diskutil list
Находим раздел с EFI и монтируем его:
mkdir /Volumes/efi
sudo mount -t msdos /dev/disk0s1 /Volumes/efi
Теперь правим файл конфигурации через знакомый nano:
nano /Volumes/efi/EFI/CLOVER/config.plist
Из текста выше видно, что задействуется видео Intel, где указывается идентификатор для определенных платформ. Подходящие идентификаторы для Intel HD 4000 такие:

0x01660000 Mobile 4 ports: 1 LVDS, 3 DP
0x01660001 Mobile 4 ports: 1 LVDS, 1 HDMI, 2 DP
0x01660002 Mobile 1 port: LVDS
0x01660003 Mobile 4 ports: 1 LVDS, 1 HDMI e 2 DP
0x01660004 Mobile 1 port: LVDS
0x01620005 Desktop 3 ports: DP
0x01620006 Desktop 0 ports
0x01620007 Desktop 0 ports
0x01660008 Mobile 3 ports: 1 LVDS, 2 DP
0x01660009 Mobile 3 ports: 1 LVDS, 2 DP
0x0166000a Mobile 3 ports: 2 DP, 1 HDMI
0x0166000b Mobile 3 ports: 2 DP, 1 HDMI

Лучше всего в моем случае подходит 0x01660003, так как он имеет вывод на экран ноутбука (LVDS) и внешний дисплей (HDMI). Но не все так просто! Оказывается единственным рабочим вариантом оказался 0x01660004, где естественно только один графический порт LVDS, а HDMI отсутствует. С идентификатором 0x01660003 мой ноутбук отлично подхватил HDMI, а встроенный дисплей показывал половину рабочего стола и никакие ухищрения в настройках дисплеев не спасли. На форуме подсказали, что проблема имеет место быть в некоторых случаях и частенько встречается, но решение все-таки есть. Нужно подправить кекст /System/Library/Extensions/AppleIntelFramebufferCapri.kext, в котором как раз и прописаны эти идентификаторы. У каждого идентификатора есть коннекторы, которые отвечают за определенные порты. У меня нужно было задействовать коннектор для LVDS из 0x01660004, а для HDMI из 0x01660003. Все это безумство делается с помощью обычного HEX-редактора, где исправляются нужные вам значения:

AAPL,ig-platform-id: 01660000, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
@0, 01 00 00 00 02 00 00 00 03 00 00 00 // (LVDS) (port 0x0)
@1, 02 05 00 00 00 04 00 00 07 00 00 00 // (DisplayPort) (port 0x5)
@2, 03 04 00 00 00 04 00 00 07 00 00 00 // (DisplayPort) (port 0x6)
@3, 04 06 00 00 00 04 00 00 07 00 00 00 // (DisplayPort (port 0x7)

AAPL,ig-platform-id: 01660001, Stolen RAM for FB: 96MB, Pipes: 3, Ports: 4, FBMem: 3
@0, 01 00 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 08 00 00 06 00 00 00 // (HDMI)
@2, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@3, 04 06 00 00 00 04 00 00 07 01 00 00 // (DisplayPort

AAPL,ig-platform-id: 01660002, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 1, FBMem: 1
@0, 01 00 00 00 02 00 00 00 30 00 00 00 // (LVDS)

AAPL,ig-platform-id: 01660003, Stolen RAM for FB: 64MB, Pipes: 2, Ports: 4, FBMem: 2
@0, 05 03 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 04 00 00 // (DisplayPort)
@2, 03 04 00 00 00 04 00 00 81 00 00 00 // (DisplayPort)
@3, 04 06 00 00 00 04 00 00 81 00 00 00 // (DisplayPort)

AAPL,ig-platform-id: 01660004, Stolen RAM for FB: 32MB, Pipes: 3, Ports: 1, FBMem: 1
@0, 05 03 00 00 02 00 00 00 30 02 00 00 // (LVDS)

AAPL,ig-platform-id: 01620005, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
@0, 02 05 00 00 00 04 00 00 11 00 00 00 // (DisplayPort)
@1, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@2, 04 06 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)

AAPL,ig-platform-id: 01620006, Stolen RAM for FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0

AAPL,ig-platform-id: 01620007, Stolen RAM for FB: 0MB, Pipes: 0, Ports: 0, FBMem: 0

AAPL,ig-platform-id: 01660008, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
@0, 01 00 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@2, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)

AAPL,ig-platform-id: 01660009, Stolen RAM for FB: 64MB, Pipes: 3, Ports: 3, FBMem: 3
@0, 01 00 00 00 02 00 00 00 30 00 00 00 // (LVDS)
@1, 02 05 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@2, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)

AAPL,ig-platform-id: 0166000A, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
@0, 02 05 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@1, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@2, 04 06 00 00 00 08 00 00 06 00 00 00 // (HDMI)

AAPL,ig-platform-id: 0166000B, Stolen RAM for FB: 32MB, Pipes: 2, Ports: 3, FBMem: 2
@0, 02 05 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@1, 03 04 00 00 00 04 00 00 07 01 00 00 // (DisplayPort)
@2, 04 06 00 00 00 08 00 00 06 00 00 00 // (HDMI)

В таблице выше указаны 16-ричные значения коннекторов, которые мы и будем править, нам нужно заменить 05 03 00 00 02 00 00 00 30 00 00 00 из 01660003 на 05 03 00 00 02 00 00 00 30 02 00 00 из 01660004. Советую вам HEX Fiend. Также не забывайте делать бэкап родных системных кекстов, мало ли что может случится - возможно кекст не подойдет, вызовет Kernel Panic и т.д. Подправленные кексты устанавливаем с помощью Kext Utility, просто перетащив нужный кекст в окно с программой, введя свой пароль и дождавшись вывода:
All done.
Have a nice … day(night)
Enjoy …
Перезагрузив компьютер графика должна заработать должным образом.
Следующим на очереди у нас идет сетевая карта и WiFi, которые заводятся просто установкой нужных кекстов. Благо я использую USB-модем 4G, который давно еще прошил в HiLink-прошивку, который завелся из коробки и скачать кексты или прочитать мануалы было возможно, а если бы я оказался без него, то пришлось бы грузиться в Linux и гуглить-скачивать-перезагружаться. Порадовало, что WiFi смог заработать в режиме софтовой точки доступа - правда пришлось опять же гуглить и узнать где все это включается, а запрятано оно уж в очень интересном месте.
Со звуком тоже были проблемы, но решались установкой либо патченного AppleHDA.kext совместо с HDAEnabler3.kext и CodecCommander.kext, либо драйвер VoodooHDA 2.8.5 - оба варианта рабочие. С использованием AppleHDA правда наблюдаются щелчки при старте модуля, но не критично. Вот и вся техническая часть! Надеюсь, что я вас не утомил ))


Теперь перейдем к встроенному софту. Программ для OS X предостаточно. Как вы уже заметили часть некоторых из них так же используется и в Linux - cp, mv, cd, nano, sudo, uname и т.д. Да и графические программы тоже схожи - есть VLC, Transmission, Gimp, Inkscape и т.д  Отдельно стоит упомянуть и об оформлении кросплатформенных программ. Те же VLC и Transmission смотрятся в OS X просто шикарно. По сравнению с Linux - небо и земля. Складывается впечатление, что программы написанные для OS X проходят дополнительную аттестацию по оформлению. Для людей ценящих дизайн и стиль, OS X - это эталон!


Ну и как многие другие, я отмечу присловутый файловый менеджер Finder, от которого я испытал настоящий шок. Пол-часа я не мог понять как переименовать и вырезать файл. Как перейти в коневую директорию? Как автоматически расставлять значки? Как просмотреть скрытые файлы? Как вообще его перезапустить? - вопросов целая куча. Конечно, все гуглится и приходит с опытом, старые привычки заменяются новыми и т.д. и т.п. Но ребята, это же жесть!!! Даже переходя на Linux я не испытывал такого дискомфорта и кучу ограничений. Также непонятна мне логика с закрытием/сворачиванием программ, отсутствием режима минимизировать в доке.


Понравилась система установки приложений. Ставить программы одно удавольствие, все просто и понятно. Эх такую бы штуку в Linux )) Кажется Ubuntu что-то похожее реализует в будущем, в виде Snappy.


Safari тоже очень приятен в использовании и не столь прожорлив кстати. Также удобен iTunes, в которым лишь один недостаток - отсутствие поддержки Flac… О программах можно говорить долго, отмечу лишь то, что все что я запускал в OS X всегда работало и выполняло свои функции на 100%. Нагрузка на процессор небольшая, а вот с потреблением оперативки наша OS X не церемонится и сразу отъедает 2Gb.


Система идеально заточена для творческих людей, здесь просто обилие программ для музыкантов и саундпродюсеров, художников и декораторов. Правда стоит это все не так дешево, как хотелось бы. Так что будьте к этому готовы - придется раскошелиться изрядно.
В заключении скажу, что если вам приглянулась OS X и вы не стеснены в финансовом плане, то покупайте Mac, он того стоит, уж поверьте. Hackintosh понравится лишь энтузиастам и тем кому интересно копаться в системах. Настоящего удовольствия вы не испытаете, потому что вам будут не доступны многие сервисы Apple.
Используемые кексты тут.

Источники:
clover-wiki.zetam.org
applelife.ru
www.insanelymac.com

6 комментариев:

  1. Ответы
    1. С чего вдруг? Автор просто провёл эксперимент, посмотрел что оно такое за чудо-юдо, надкусанное яблоко (ещё и хакнутое :) ). Посмотрел-поковырял, удовлетворил любопытство и насколько я понял, вернулся в родной мир Kubuntu :) Опять-таки, сравнил, что есть хорошего в "яблоке" и "дома" :) В целом познавательно, сам бы я точно не стал возиться с какими-то "кекстами". А предательством называют другое и оно чудно описано хотя-бы в той же сказке Гайдара А.П. (не политика :) ).

      Удалить
    2. Вы слишком серъезно восприняли мой комментарий :)

      Удалить
  2. Я просто поделился своим опытом и мнением... Linux ни на что не променяю )) Уж больно привык я к нему и я сторонник открытого и свободного ПО все-таки!

    ОтветитьУдалить
    Ответы
    1. Вернуться на божественную ось с кривой раскладкой не думаешь?

      Удалить
    2. Неа. Я же говорил, что блог жалко бросать + божественная ось еще кривовата.

      Удалить