AppStudio

Про неработающий iCloud на хакинтошах

20.11.2011 • Автор: AppStudio • Инструкции • Теги: , ,

Сохранить: Комментариев: 7

Про неработающий iCloud на хакинтошах hackcloud

Количество писем, в которых обладатели хакинтошей спрашивают у нас, почему у них не работает сервис iCloud, с каждой неделей только растёт. Чтобы не отвечать на каждое письмо одно и то же, попробуем разобраться в проблеме в отдельном материале.

На самом деле, коварство Apple тут не причём – в iCloud нет никакой проверки на то, хакинтош у вас или настоящий Мак. Корни проблемы кроются совершенно в другом и весьма неожиданном месте. Виновник проблемы – неверный идентификатор сетевого интерфейса Ethernet. Это звучит как бред, но причина именно в этом. Как ни странно, если сетевые интерфейсы на вашем компьютере воспринимаются системой в неверном порядке, вы получаете целый букет разнообразных проблем:

  • iCloud откажется подключаться
  • Mac App Store не будет принимать ваш пароль
  • FaceTime не захочет совершать звонки
  • Time Machine может выдавать ошибки при бэкапах

Чтобы избежать этих проблем, нужно всего лишь заставить Mac OS X воспринимать Ethernet как встроенный (для этого есть специальное свойство built-in) и присвоить ему идентификатор en0.

Между прочим, на эти же проблемы жалуются многие пользователи реальных Маков, достаточно заглянуть на форумы поддержки Apple и убедиться в этом. Зато у хакинтошников есть гораздо больше действенных способов решения проблемы :)

Способы решения мы расположим в порядке нарастания сложности:

1. Причина номер 1 – отсутствие в настройках загрузчика специальной опции, активирующей патч, присваивающий Ethernet-интерфейсу свойство built-in. Для Chameleon в файле /Extra/org.chameleon.boot.plist нужно добавить секцию:

<key>EthernetBuiltIn</key>
<string>Yes</string>

Если вы пользуетесь XPC, то в файле /EFI/XPC/settings.plist нужно добавить или дополнить секцию:

<key>InjectEthernet</key>
	<dict>
		<key>Vendor</key>
		<string>0x10ec</string>
		<key>Device</key>
		<string>0x8168</string>
	</dict>

Поля Vendor и Device надо заменить на идентификаторы производителя и модели Ethernet-карточки. Проще всего узнать их из свойств устройства в Диспетчере задач Windows.

2. В файле настроек вашего загрузчика также важно проверить наличие UUID. Это уникальный идентификатор вашего оборудования, который определяется на основе MAC-адреса сетевой карточки. Учтите, что если UUID меняется, то Mac OS X начинает считать, что это уже другой компьютер. Неприятные последствия этого состоят в сбросе ряда настроек системы, а самое неприятное последствие – сброс авторизации в iTunes Store и App Store. Поэтому перед экспериментами с UUID обязательно деавторизуйтесь в iTunes!

В Chameleon UUID задаётся в файле /Extra/SMBIOS.plist в секции:

<key>SMUUID</key>
<string>00000000-0000-1000-8000-000000000000</string>

В XPC за идентификатор отвечает ключ PlatformUUID в файле setting.plist. UUID может включать любые цифры и буквы от A до F. Если не хочется фантазировать, можете ввести нули, а последние цифры заменить на MAC-адрес сетевой карточки. Он узнается в свойствах системы (Яблочко в менюбаре-Об этом компьютере-Подробнее-Отчёт о системе-Сеть-Ethernet-MAC-адрес).

3. Ещё одна вероятная причина – устаревший загрузчик. Если вы используете Chameleon, первым делом обновите его на последние билды. Дело в том, что встроенный в загрузчик патч, присваивавший сетевым интерфейсам правильные номера, в последние месяцы дорабатывался, но стало только хуже. Проблема с этим патчем решилась лишь относительно недавно.

4. Если всё в порядке, а iCloud и другие сервисы Apple всё равно не работают, надо проверить, какие идентификаторы присвоены сетевым интерфейсам. Для этого опять надо заглянуть в свойства сети (Яблочко в менюбаре-Об этом компьютере-Подробнее-Отчёт о системе-Сеть). На нашем скриншоте всё в порядке:

Про неработающий iCloud на хакинтошах en0 500x355Всё в порядке потому, что Ethernet получил идентификатор en0. Если у вас он получает идентификатор en1 или en2, то с большой долей уверенности можно утверждать, что ничего работать не будет.

Сбросить идентификаторы можно следующим образом:

  • отключитесь от всех сетей (сеть электропитания не в счёт :)
  • зайдите в настройки системы, в пульт “Сеть”. По очереди слева выберите все пункты и нажимайте минус внизу, пока не удалите все интерфейсы:

Про неработающий iCloud на хакинтошах net 500x443

  • удалите (или переместите в безопасное место) файлы /Библиотеки/Preferences/SystemConfiguration/com.apple.network.identification.plist и /Библиотеки/Preferences/SystemConfiguration/NetworkInterfaces.plist
  • перезагрузитесь
  • зайдите в пульт настроек “Сеть” и нажмите плюс. Выберите интерфейс “Ethernet”
  • перезагрузитесь
  • зайдите в свойства сетей и проверьте, получил ли Ethernet идентификатор en0. Если да, можно добавлять остальные интерфейсы в пульте настроек сети

5. Наконец, если ваша сетевая карта прописана в DSDT, убедитесь, что в её свойствах указано свойство built-in. Это должно выглядеть как-то так:

Device (LAN)
                {
                        Name (_ADR, 0x01)
                        Method (_DSM, 4, NotSerialized)
                        {
                           Store (Package (0x04)
                               {
                                 "built-in",
                                 Buffer (0x01)
                                 {
                                     0x01
                                 },
                                 "device_type",
                                 Buffer (0x09)
                                 {
                                    "ethernet"
                                 }
                                }, Local0)
                            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                            Return (Local0)
                        }
                  }

Надеемся, что до четвёртого и пятого способов у вас дело не дойдёт. Как показывает практика, чаще всего хватает обновления загрузчика. Удачи вам с хакинтошами ;)

Похожие статьиКнопки социальных сетей:

 

Комментариев: 7

  1. twitter.com Даниил пишет:

    Есть такая очень удобная программа — UUID Generator. Гуглится на раз. Встроена в Champlist. Создаёт правильный и рабочий UUID.

    • AppStudio AppStudio пишет:

      она создаёт случайный UUID на базе Мак-адреса. смысла в ней нет, можно и вручную любые цифры вбить.
      и между прочим, “правильного и рабочего” UUID совершенно недостаточно для работы iCloud, Mac App Store и прочих перечисленных фич – главное, чтобы Ethernet числился в системе как en0

      • twitter.com Даниил пишет:

        Да ну, вот прям любые можно вбить и прокатит? Честно говоря, Я удивлён. Думал, что UUID — вещь важная, типа как serial для активации программ, и IIUD Generator — типа как keygen.

  2. ska2html пишет:

    У меня тоже облакое сначала не работало, но не было прописано EthernetBuiltIn в хамелеоне. После того как прописал – все ок)
    Возможно не в тему, но я уже пол года сижу на льве, хакинтоше, ожидал внезапных багов и экранов смерти, но этого нет) все работает как часы, даже скучно стало :)

    • twitter.com Даниил пишет:

      То же самое :) как обновился до Lion — большинство проблем исчезло. И обновления даже не боюсь ставить. Всё равно на соседнем диске старенький Snow Leopard.

      • ska2html пишет:

        :)
        А я не боюсь обновления т.к у меня тайм машина работает)) я так понимаю, что при восстановлении просто хамелеон не восстановится, но его заново установить не проблема.
        Данил, а как по ощущениям лион? не кажется что медленней работает чем снежок?

        • twitter.com Даниил пишет:

          Да, как-то… не знаю даже. Запускал недавно Snow Leopard — вроде бы, то же самое. Не знаю.

Пожалуйста, не забывайте о правилах комментирования
Интересующие вас вопросы мы рекомендуем задавать в нашем разделе Q&A