Как я танцевал по Мак-граблям

Читатели твиттера знают по моим стенаниям, что на прошлой неделе у меня что-то там такое сломалось в Маке, что я долго не мог починить. Спешу поделиться, что проблему я все-таки решил 5 дней спустя, и, думаю, это пригодится не только мне. Разумеется, будет не лишним сказать, что на проблему я “наступил” на бета-версии macOS Sierra, так что я даже не сильно удивился, но странно было видеть, что мне не помогало даже восстановление из бекапов. Но обо всем по порядку.
Захотелось мне странного — разблокировать Мак с помощью Apple Watch (есть такая фишка у macOS Sierra), появилась во второй бете. Однако, оказалось, что для этого нужно активировать двухфакторную авторизацию на аккаунте Apple ID. До этого я довольно давно уже использовал двухэтапную авторизацию, и для меня было сюрпризом то, что эти две штуки отличаются. Когда-то давно я обнаружил, что есть две разные технологии проверки, но поскольку двухэтапная работала и вполне меня устраивала, я как-то не углублялся в сравнения и мне было все равно. А тут оказалось, что для поддержки разблокировки Apple Watch нужна именно двухфакторая авторизация. Ну раз надо, то надо, я пошел отключать одну и включать другую.

У меня это даже получилось — там надо было произвести какие-то действия в онлайне для того, чтобы один сервис деактивировался, и второй активировался, но я справился, и компьютер после этого даже работал. Правда, разблокировка с помощью Apple Watch у MacBook Pro все равно не заработала — теперь система говорила, что ей не удалось подключиться к часам (или они заблокированы); при этом на MacBook она заработала. Кстати, работает она пока что не так, как я ожидал — я предполагал мгновенную разблокировку, но пока что при открытии компьютера я наблюдаю “ромашку” с текстом Unlocking computer — я бы быстрее пароль набрал. Времени разбираться не было особо, все равно я в последнее время больше рабочим компьютером пользуюсь. Но тут я сделал рестарт MacBook Pro, привычно ввел пароль… и опять увидел логин-экран. “не понял”, подумал я, и еще раз ввел пароль, и еще раз увидел логин-экран. На улице шел четверг, дождь и рота солдат.
Короче, моя учетка на компьютере отказывалась логиниться после ввода пароля, выбрасывая меня обратно на логин-скрин. При этом вторая учетка на компьютере залогиниться могла, но если я пытался ввойти оттуда в свою учетку, компьютер застревал на бесконечном вращении “ромашкой”. Загрузка в recovery mode и скорая помощь диску не помогла, загрузка в safe boot тоже не помогала. Немного подергавшись еще, я решил, что не зря же у меня есть бекапы, и пора уже восстановиться из Time Machine. Так и быть, подумал я, понеслась — и процесс, занимающий примерно 10 часов, понесся. В пятницу утром я пришел к свежевосстановленному компьютеру, который поприветствовал меня знакомым логин-экраном, ввел пароль своего пользователя… и вы угадали! Опять то же самое — логин-экран. “А вот это уже неприятно, подумал я”, но решил, что бекап, из которого я восстановился, каким-то образом оказался сделанным уже после того, как я нес изменения с системой авторизации, и то, что сломалось, попало в него все равно.
Я переустановил начисто систему, поборолся немного с заглючившими апдейтами (почему-то апдейт со второй беты на третью не хотел закачиваться), и решил восстановиться из бекапов TimeMachine уже точно за утро четверга, чтобы точно без проблем. Угадайте, что было после восстановления? Правильно, угадали. Поэтому я решил восстановить систему из бекапов ЕЩЕ РАЗ, теперь уже из бекапа за среду, в надежде, что уж теперь-то точно все будет хорошо. Немного пришлось пободаться с Migration Assistant, который отказывался показывать бекапы из Time Machine, поэтому пришлось загрузиться в Recovery Mode и запускать восстановление оттуда. Правда, я уже почти был готов к тому, что система откажется логиниться и из этого бекапа, потому что fuck you that’s why. Идти в Apple Store с такой проблемой было бы странно, там в Genius Bar с бета-версиями систем обычно посылают подальше (хотя, наверно, сейчас при наличии public beta, может, и попроще отношение). Так и случилось — восстановление не помогло. Дальше были выходные, когда я почти не бывал у компьютера, и наконец-то в воскресенье у меня созрел новый план: забить на бекап Time Machine, поставить систему начисто и вручную набросать файлики из разных бекапов, что у меня есть (кроме TimeMachine, у меня еще есть внешний диск, на который я примерно раз в месяц клонирую систему — на всякий случай. на нем как раз был бекап примерно месячной давности, к сожалению), ну и файлы из компьютера мне тоже удалось вытащить (там все было доступно при загрузке с внешнего диска, проблема была только в логине).
Короче, в воскресенье вечером я поставил новую систему и начал понемногу копировать на диск данные. Жалко было, конечно, времени, которое на все это уходит, но, думал я, зато “жизнь” с нового листа, так что норм. Меня только расстраивал тот факт, что я так и не понял, где была проблема, и что эта загадка останется для меня неразгаданной (забегая вперед, скажу, что BE CAREFUL WHAT YOU WISH FOR). В понедельник я более-менее набросал обратно файлы — приложения, документы, настройки из пользовательской директории, сделал перезагрузку компьютера и… думаю, даже самые недогадливые в этом месте уже поняли, что после ввода пароля на логин-экране я столкнулся все с той же проблемой — компьютер возвращался на поле ввода пароля. “”Да, тяжело начинается неделя”, подумал Штирлиц”. Стало понятно, что проблема точно кроется в файлах, которые я забросил сегодня в ~/Library/ (хотя об этом стоило бы догадаться раньше, учитывая, что второй пользователь мог логиниться нормально), и я в порыве ярости выбросил оттуда одним махом почти все, более-менее имеющее отношение к логину пользователя. В общем, неудивительно, но после этого мне удалось залогиниться этим пользователем в систему. Значит, проблема где-то среди этих файлов, осталось найти виновника.
А раз так, то можно взять еще раз восстановленную систему и экспериментировать уже на ней. Я еще раз запустил восстановление из Time Machine, подождал 10 часов (все это время я, разумеется, сидел у компьютера и гипнотизировал прогресс-бар, чтобы он быстрее бежал), и убедился, что проблема никуда не ушла — логин-скрин – пароль – логин-скрин. После восстановления я загрузился с внешнего диска и начал внимательно изучать содержимое ~/Library/ на предмет главных подозреваемых. Учитывая, что проблемы начались после манипуляций с Apple ID и методом авторизации, я предположил, что проблема может быть в ~/Library/Keychains/, поэтому я заархивировал содержимое этой папки, оригиналы удалил и сделал перезапуск.
BhZTid7CcAARASh
Я смог войти в свою учетную запись! Естественно, система слегка офигела от отсутствия связки ключей и набросилась на меня с кучей вопросов о паролях. В Keychain Access я добавил старый файл login.keychain, назначил его связкой по умолчанию, и системе сразу полегчало. Что же это было? Если просто повредился файл Keychain, то тогда восстановление из бекапов Time Machine должно было бы решать проблему, однако, этого не случилось. Честно говоря, воспроизводить проблему еще разок мне не очень хочется, но в целом я подозреваю, что в момент переключения механизмов авторизации в связке между учеткой iCloud и keychain cвет с Венеры отразился от верхних слоёв атмосферы и вызвал взрыв болотного газа, что привело к перманентной блокировке входа. Соответственно, когда происходило восстановление из бекапа, эта “сцепка” учетки iCloud и keychain каким-то образом активировалась снова и приносила мне дополнительные волнительные переживания. На систему с внешним диском, где была клонированная копия macOS beta 2, это не влияло, к счастью. Первым делом после восстановления я а) проверил, что после рестарта все работает, и б) запустил свежий бекап на внешний диск — без него было хуже.
PS Я помню, что в твиттере были люди, которые жаловались, что у них встречается похожая проблема с выбрасыванием пользователя на логин экран после входа. Надеюсь, рекомендация с манипуляциями файлом keychain им поможет. Ну и бекапы рулят!
PPS Сейчас-то, задним умом, я вспоминаю, что проблемы с кейчейном у меня понемножку стреляли на первой и второй бетах, а тут, видимо, бабахнуло уже.
PPPS Все равно не могу охватить умом тот факт, что даже после восстановления из Time Machine проблема воспроизводилась, даже если это точно был бекап, сделанный ДО манипуляций с системами верификаций.