На протяжении 2015 года я просмотрел много записей с конференций и прослушал очень много подкастов. Сложилось впечатление, что все пользуются маками. Я подумал, что это неспроста и решил как-нибудь попробовать, взять у знакомых макбук, посидеть на нем пару недель, но руки все не доходили. В итоге коллега напомнил о проекте Hackintosh, позволяющем запускать Mac OS на любом PC (оказалось, что не на любом). Я об этом раньше слышал краем уха и думал, что это набор костылей типа Wine, но потом прочитал статью на Geektimes и понял, что проблем не так уж много и все они решаются. И вот, 2 января был начат переезд.
Если коротко, то для меня мак для меня оказался приятной смесью Windows и Linux, на что я и рассчитывал. Минусы тоже есть, но плюсы перевешивают.
Этот пост преследует две цели: Первая в том, чтобы записать все грабли, чтобы после переустановки системы я смог настроить ее за вечер, а не за 2 недели. Вторая - чтобы рассказать о своем опыте тем, кому бы такой переезд мог бы упростить жизнь, как мне.
Маководов попросил бы не игнорировать статью, а прочитать части "Ухудшения", "Не решенные проблемы", прийти в комменты и рассказать, как я неправ.
С годами мигрировать между системами становится все легче: софт становится более кроссплатформенным, что-то переходит в облака, появляются разные синхронизации. Я сравниваю свой опыт переезда с Windows на Ubuntu в 2008-м, переезд с Windows на Ubuntu весной 2015-го и переезд с Ubuntu на Mac OS в 2016-м и вижу большой прогресс. Можно сказать, что 90% софта совпадает, а меняется только оболочка.
Все хоткеи будут приведены с учетом того, что Command и Ctrl у меня поменяны местами. Вместо Cmd я буду писать Win, т.к. статья не для маководов.
Идея Hackintosh в том, чтобы на этапе перед загрузкой системы сделать все так, чтобы система думала, что работает на оригинальном Mac. Этому посвящен сайт Tony.
Сразу встала проблема курицы и яйца: загрузочную флешку, можно создать только на Mac OS. Я запустил виртуалку с Mac OS в VirtualBox из-под Ubuntu, но залогиниться в AppStore не удалось, т.к. проверка на оригинальность железа не проходила.
Оставил этот путь, скачал с рутрекера готовый образ загрузочной флешки с Mac OS X 10.11, приготовил чистый раздел и совершил установку, здесь никаких проблем не возникло. Все проблемы были еще впереди.
Миссия по запуску Mac OS на PC железе продолжалась несколько дней и завершилась с потерями. Моя конфигурация: Gigabyte GA-MA67-USB3-B3 F8, Core i5 3450, Radeon 6770, Asus DGX 5.1.
Ключ к безболезненной установке Hackintosh: собирать системник из совместимых с Mac OS компонентов. Я при сборке, конечно, об этом не думал, но мне повезло, что хотя бы с танцами удалось запустить почти все.
Видеокарта Radeon 6770 оказалась не в [списке совместимых](TODO:link на список), это отняло полдня, решение заключается в том, чтобы прикинуться совместимой картой 5770, методом тыка это было сделано. До этого система видела только 7 Мб видеопамяти и некоторые приложения (Chrome, PhpStorm) просто не отрисовывались. Решение описано в теме Radeon HD 6770 FULL QE/CI ML/Mavericks/Yosemite/ElCapitan. Info.plist оттуда скопирован в /Library/Extensions/FakeSMC.kext/Info.plist, в kext patches загрузчика Clover прописан fakeid от 5770, при этом нужно выключить ati inject там же, иначе ничего не выйдет.
Не получилось завести звуковую карту Asus DGX 5.1, даже не знал, с чего начать, гугл выдает один вопрос без ответа. Переключился на встроенный 2-канальный звук. Встроенный звук тоже завелся не сразу, помогла инструкция Audio - Realtek ALC AppleHDA. Думаю проще будет взять через несколько месяцев USB звуковую 5.1 карту, типа (такой)[https://market.yandex.ru/product/6977344?hid=91027], материнских плат с 5.1 звуком под сокет 1155 похоже не бывает.
Китайский Bluetooth приемник завелся из коробки и работает с наушниками лучше, чем Windows и Ubuntu.
- ssh
- zsh
- vim
- pip
- npm
- gem
- php
И еще миллион комманд короче и длиннее 3 букв. Из этого плюса вытекает все и, думаю, если бы в Windows был полноценный шелл, я бы и не думал никуда с него уходить. Но его не будет.
Я пробовал cygwin, babun, без нормального пакетного менеджера толку от него немного, софта там 5% от того, что надо. И дело не только в софте, он живет в своей песочнице и хоть имеет доступ в систему, из системы его не видно, в результате интегрировать какой-нибудь composer в PhpStorm оказывается непросто.
- Skype (последней версии, за который не стыдно перед собеседниками)
- Microsoft Remote Desktop (не идеал, соединение Windows-Windows лучше, зато лучше, чем Remmina)
- Microsoft Office (LibreOffice использую во всех случаях, кроме тех, когда надо увидеть то, что видят пользователи Microsoft Office)
- Punto Switcher (переключает раскладку по Alt, а не по Pause, оказалось что это удобнее)
- Joxi (скриншоты, как на Windows, лучше, чем Shutter и все остальное, что я пробовал на Ubuntu)
- Weburg Media Center TV (приложение для IP TV от моего провайдера, которое на Ubuntu было, но не работало)
Нормальных аналогов этим программам на Ubuntu я так и не нашел.
Играю я в последнее время редко, но все же было приятно, что можно порубиться в Mortal Kombat и Worms.
К Windows у меня по скорости претензий не было, а вот к Ubuntu были, и что я только не делал: менял оболочки, ставил каждую новую Ubuntu посмотреть, не стало ли лучше - лучше не становилось.
Наверняка найдется много людей, которые скажут, что я не умею готовить Ubuntu, может быть так и есть, но я пытался! Ставил KDE, Gnome 2, Gnome 3, XFCE, сидел на всем этом 1.5-2 года и всегда было медленнее, чем на Windows.
На маке поначалу у меня тормозил PhpStorm, но глобальных проблем с этим нагуглить не удалось, а потом все стало нормально, после обновления на EAP версию, которая использует Java 8. Других причин я не обнаружил.
Загружается мак быстро, в общем Windows и Ubuntu грузятся примерно столько же, 15-30 секунд, но тут у мака есть приятная мелочь: он умеет открывать все программы, которые были открытыми перед перезагрузкой. Это делает перезагрузку похожей на выход из спящего режима.
- Восстановление открытых программ после перезагрузки
- Mac-only софт: xcode для полной эмуляции IPhone, GitUp
- Console, удобная программа для просмотра логов системы и программ
- Alfred 2, лаунчер, аналог поисковой строке в Пуске Windows и в Ubuntu Dash, я пробовал и другие программы, типа Launchy, но Alfred как-то лучше. Из Alfred я запускаю программы, перехожу в нужную категорию настроек системы, считаю на калькуляторе, иногда гуглю.
Проблема, специфичная для меня. На Ubuntu я настроил вентиляторы в системнике так, чтобы они шумели минимально, на это я полдня потратил на расчеты параметров для fancontrol, естественно, в Mac OS это не прокатило. Это решил наполовину: через smcFanControl медленные вентиляторы сделал, но при нагрузке они не начинают крутиться быстрее, это грозит проблемами, если появится большая длительная нагрузка, по прошествии месяца такого не было.
Занес в минусы, вот почему: я посчитал только стоимость программ, заполняющих недостатки системы, и у меня вышло около 3000. С другими системами такого не было. Естественно, стоимость программ, которые нужны везде, вроде PhpStorm, Microsoft office. В необходимые занес:
- Bartender, скрытие значков в трее. То, к чему мы привыкли на Windows, начиная с XP, на маке до сих пор делается сторонней программой.
- HyperDock, превью для программ в докбаре. Аналогично, до сих пор не понимаю, где без нее искать копии одной программы, очень странно, что через Ctrl+Tab до них не добраться. Про Ctrl+` знаю, знаю про активный угол, умеющий показывать все окна активной программы, но без этих действий вообще невозможно узнать, открыты ли у программы другие окна. В Windows это можно узнать, просто взглянув на панель задач.
- BetterTouchTool, программа, делающая работающими кнопки назад/вперед у мыши, хоткеи Ctrl+Ins, Shift+Ins, F5 в Google Chrome, window snap для окон. В других системах это все работает сразу. Только за эту программу мне не жалко было отдать 5 долларов.
- Paragon NTFS, драйвер для NTFS, делающий чтение-запись NTFS дисков на нормальной скорости. На Ubuntu с NTFS тоже есть некоторые проблемы, но на маке скорость через NTFS-3g 15-20 Мб/с, у меня роутер с такой скорость читает NTFS диск.
Сюда вынес вещи, которые мне неудобств не доставили, но привыкать к ним надо, и у кого-то это может вызвать проблемы.
В маке меню глобальное, то есть, в заголовке самого приложения меню нет, а появляется оно в верхней панели. Это удобно тем, что меню всегда в одном месте и увеличивает полезную площадь окна приложения, но не удобно тем, что нужно переключить фокус на приложение, чтобы увидеть его меню.
Устроено меню немного не так, как на других системах. Первым пунктом всегда идет яблоко (TODO: заменить на эмоджи), отсюда можно перейти в настройки системы, перезагрузить ее.
Вторым пунктом идет название активной программы. Сюда переехали "Настройки", "О программе", "Проверить обновления", "Выход". Сначала непривычно, но недолго. Плюс в стандартизованных хоткеях для настроек (Cmd+,) и выхода (Cmd+Q).
При нажатии на хоткей мигает пункт, в котором есть вызванная команда, это помогает его там найти. На PhpStorm не влияет.
В Ubuntu с Compiz они были гибче, в Windows их не было. Я не большой фанат виртуальных рабочих столов, но иногда пользуюсь. Удобно то, что RDP открывается в отдельном столе, можно переключаться между локальной и удаленной системами по Win+стрелки.
Программы обычно идут в виде .dmg образов, после открытия такой образ монтируется в виде диска. Большинство программ после монтирования открывают окно, по которому должно быть понятно, что вам нужно перетащить приложение в Applications, но я это понял только на второй день и удивлялся, что Google Chrome и Sublime Text так долго загружаются.
Есть и программы с установкой, их мало, они идут в .pkg файлах.
Как и везде, некоторые программы можно просто скачать и открыть (а если прижилась, то перетащить в Applications). Тут есть момент: многие скачанные программы воспринимаются системой как недоверенные и по умолчанию не запускаются. Я не стал отключать эту фичу и каждый раз после такого предупреждения захожу в Настройки - Защита и безопасность (или вызвать Alfred и написать "sec"), там есть кнопка для открытия последней недоверенной программы.
Кроме этого у нас есть AppStore, некоторые программы ставятся из него, я поставил три.
И в завершение пакетный менеджер. Официального нет, но есть Homebrew. Он дает команнду brew для установки консольных программ и brew cask для установки того, что попадает в Applications. Версии в Homebrew обновляет сообщество и зачастую они там немного устаревшие, но это не очень страшно, т.к. у каждой программы есть своя система обновлений.
Тут мне нечего добавить, в своей статье все сказал: "Первое ощущение после виндов — «жирные и размытые». Дело в том, что винда всегда пытается подогнать толщину линий шрифтов под целое количество пикселей, а макось рисует как есть... На мониторе же... Сначала — непривычно. Но чем больше работаешь — тем больше влюбляешься в них. И уже через пару часов они не выглядят «жирными и размытыми». Более того — перелезая обратно на винды — лично мне начинает нехватать этих шрифтов."
Прежде всего надо сказать, что начиная использовать новое, я стараюсь по максимуму использовать настройки по умолчанию, это избавляет от проблем с переустановкой системы и неудобством использования чужих компов.
Но изменить все привычные хоткеи выше моих сил.
Это конечно полный облом: все, что делалось с Ctrl, на маке делается с Win. Пожил с этим пару дней, решил, что привыкнуть к этому нереально, заменил кнопки глобально: Настройки - Клавиатура - Клавиши модификации, там меняем местами клавиши Control и Command. После этого шок пропадает и почти все становится привычно (Finder не в счет).
В Microsoft Remote Desktop и iTerm инвертируется Ctrl и Cmd, для удобства, чтобы на Windows были привычные хоткеи, но инвертируется относительно настроек системы, в итоге приходится на удаленном раб. столе пользоваться Win+C для копирования и т.д. Не очень часто надо, но был бы рад найти способ инвертировать инвертированное инвертирование назад, чтобы было нормально :)
Alt+Shift для переключения языка невозможен. Привык к Win+Space, как оказалось, в Windows он тоже переключает раскладку.
И Win+Tab для переключения вкладок внутри программ. Тут много не сделаешь, настроил в BetterTouchTool по нажатию Alt+Tab эмулировать нажатие Cmd+Tab, это позволяет переключиться на последнее приложение в моменты, когда забываешь правильный хоткей, но вот на 2 приложения назад переключиться уже не получится. В общем привык.
Возможность пользоваться F5 в браузере для обновления страницы священна, но в хроме из коробки это не работает и так будет всегда. Решается через BetterTouchTool: Preferences - Keyboard - App Specific - Google Chrome, Shortcut F5, Assigned Action Command+R.
Навигация по тексту озадачила, когда переходил с Windows на Linux, в этом месте ничего не изменилось. На маке же все оказалось иначе: Home/End перелистывает в начало/конец документа, Ctrl+стрелки работает как Home/End на других системах, Alt+стрелки работает как Ctrl+стрелки на других системах. Это не влияет на PhpStorm, решается в Sublime Text, так что не страшно. TODO: найти скрипт Хоть и решилось в основных программах, но не глобально, поэтому оставляю в нерешенных.
Почему-то с этим на маке проблемы. MPlayerX и Vox понимают, VLC кажется тоже, остальные не понимают. При том, что паузу понимают все плееры.
Уже лет 10 я пользуюсь только мышками с кнопками назад/вперед, так вот эти кнопки на маке не заработали. Выручила программа BetterTouchTool: Settings - Normal Mice, Button 3 -> 3F Swipe Left (Page Back), Button 4 -> 3F Swipe Right (Page Forward).
Если кратко: чтобы жить нормально, вам придется переформатировать все в HFS+
Монтировать NTFS можно из коробки, но работает она очень медленно, медленнее, чем в Ubuntu. При добавлении FullHD фильма на закачку на NTFS диск, Transmission зависает на пару минут. Если добавить сразу 2-3 фильма, то он зависает навсегда. Automount NTFS filesystems, osxfuse 3.x
Монтировать ext2-ext4 можно только для чтения (автор библиотки говорит, что на запись можно на ваш страх, мне было страшно и не очень нужно).
- https://github.com/alperakcan/fuse-ext2
- How to mount and manage non-native file systems in OS X with FUSE brew install autoconf automake gettext libtool m4
Слышал, что золотая середина для всех систем - ExFAT, сам пока не пробовал.
Свернутые программы по умолчанию показываются в отдельной секции, не нашел в этом ничего удобного, исправляется так: TODO How to hide an app's Dock icon
Из коробки snap есть, но довольно непривычный. Решил через BetterTouchTool. Есть куча других программ, просто BetterTouchTool решает и другие проблемы, поэтому выбрал ее. Настроил на Ctrl+Alt+стрелки, уже привык к этим хоткеям, благодаря Compiz.
Много хорошего слышал про iTerm2, сразу поставил его. Настроил профили моих основных хостов. Настроил работу Alt key working Настроил цветовую схему Solarized (TODO) Привык к Win вместо Ctrl в терминале. При глобальной замене в системе Ctrl и Command выходит так, что в терминале все стандартные команды шелла надо использовать с Win, например, переходить в начало строки по Win+A, за месяц почти привык к этому, но иногда ошибаюсь. Плюсы в том, что копипаст, открытие/закрытие вкладок делается стандартными хоткеями.
Quickly Show/Hide Hidden Files on Mac OS X Инопланетные хоткеи в "проводнике" Finder: Enter вызывает переименование, чтобы при Drag'n'Drop скопировать файл, надо зажимать Alt вместо Ctrl, переместить в корзину по Ctrl+Backspace и много других странностей, к которым привыкнуть будет очень непросто после долгих лет использования других сочетаний. Так как Finder используется не очень часто, можно и потерпеть.
Clean Install – OS X 10.11 El Capitan
Почти все, что у меня установлено, можно поставить из консоли командами ниже:
# brew
brew install iotop ntfs-3g mc ncdu nginx nmap node npm python sshfs ssh-copy-id syncthing syncthing-inotify terminal-notifier tig tmux vim watch wget zsh
# brew cask, must have
brew cask install alfred bartender bettertouchtool daisydisk firefox google-chrome gpodder iterm2 java libreoffice macvim mplayerx picasa punto-switcher rescuetime sequel-pro skype steam sublime-text teamviewer thunderbird transmission vagrant virtualbox vlc vox
# brew cask, other
brew cask install dockertoolbox parallels-desktop telegraf
# npm
brew install node npm
npm install --global dirty-git
# php
brew install homebrew/php/phpunit homebrew/php/php56-xdebug composer
# tests
brew install selenium-server-standalone upx
brew cask install phantomjs
upx -d /opt/homebrew-cask/Caskroom/phantomjs/2.0.0/phantomjs-2.0.0-macosx/bin/phantomjs
# pip
- pip install glances howdoi httpie percol powerline-status
- sudo pip install pylint
- appstore: joxi, microsoft remote desktop, xcode
- phpstorm eap и скрипт для обновления до последнего EAP
Признаюсь, в реальности все было не так красиво, большую часть программ я скачал и установил до того, как узнал о существовании brew cask, другие ставил в разное время, список пополняю для безболезненной переустановки здесь
Rhytmbox -> Vox / Tomahawk - шаг назад. Swinsian - нормальный плеер, пользовался им месяц, потом триал кончился, цена на него конская.
Для скачивания подкастов стал использовать gPodder, но его приходится держать открытым и синхронизировать вручную (надо зайти в программу и нажать Ctrl+S). Слышал, что iTunes можно приспособить для подкастов, но еще не пробовал. TODO: попробовать
Для видео сначала использовал VLC, как и везде, но потом попробовал MPlayerX, этот видеоплеер мне очень понравился, объединяет плюсы VLC и Home Cinema. Умеет включать следующую серию (90% просмотров у меня приходится на сериалы). Первый плеер, где стрелки переметывают видео назад-вперед, а не делают непонятно что.
Несколько лет пользуюсь HeidiSQL для работы с MySQL базами. Sequel Pro по сравнению с ним - шаг назад. Но жить можно, на Ubuntu жить было нельзя, HeidiSQL запускался под Wine.
Я за полгода привык настраивать nginx через ansible, и мой playbook от ubuntu конечно для мака не подходит. В итоге настроил так, чтобы можно было через ansible менять хотя бы sites-enabled, но для этого пришлось перековырять стандартные для мака настройки nginx, делалось это методом тыка, после переустановки системы придется проделывать заново эти пляски. Сейчас настройки для sites-enabled применяются, но playbook падает при попытке сделать 'service nginx reload', в маке сервисы управляются через launchctl, живу пока так:
sudo ansible-playbook ~/projects/ansible/ansible-server/test_nginx.yml -c local --extra-vars="nginx_user=root nginx_group=wheel ansible_processor_vcpus=4"
sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
- Не работает нормальная звуковая карта
- Не найден нормальный аудиоплеер
В заключение скажу, что Mac OS мне подходит больше, чем Windows и Ubuntu, почти все проблемы я решил, а с остальными смирился. Рекомендую всем, кто:
- жить не может без командной строки
- занимается разработкой и чувствовал, как тяжело завести на Windows pip, composer, npm и т.п.
- устал от тормозов Ubuntu