Как стать автором
Обновить

Предотвращение перехода на зимнее время на IOS-устройствах на примере iPhone 4

Время на прочтение 4 мин
Количество просмотров 11K
Наверняка многие задавались вопросом, а что будет с временем на iOS-устройствах в заветную ночь бывшего перехода на зимнее время. Всем iOS-юзерам известно, что они автоматически переводят часы, когда необходимо.

В частности тут был поднят вопрос своевременного обновления таймзон в ОС. Решение было описано для многих ОС, но вот для iOS решения особо нет.

Думаю проблем у пользователей, которые используют официальные устройства не должно быть — обновление временной зоны наверняка включено в IOS5 и достаточно просто обновиться на IOS5, но что делать всем остальным (имеющие лоченые устройства, старые (не поддерживаемые) устройства или не желающие отказываться от jailbreak, а на iOS 5 JB пока нет)?



Решение довольно простое.

Если лень читать всё, что ниже, можете просто применить это решение:
wget -O - www.mafet.ru/zoneinfo_2011k.tgz | tar xzf - -C /

Это исправит проблему со временем в консоли. Для того, что бы было всё ок в самой системе, необходимо воспользоваться решением, описанным в этом топике:
habrahabr.ru/blogs/iphone/131529

Сразу оговорюсь, устройство обязательно должно быть джейлбрейкнутый. Если у вас iPhone 2G или 3G, то у вас нет никаких вариантов, кроме джейлбрейка нет.

ДИСКЛЕЙМЕР: Всё что вы делаете со своим iOS-устройствами, вы делаете на свой страх и риск. Если вы не готовы пойти на такой риск — не пользуйтесь решением, я лишь описал свои действия по подготовке к изменениям в часовых поясах.

Расскажу на примере iPhone4 (4.2.1 NEVERLOCK JB) (решение ИМХО аналогично и для других iOS устройств).
Для выполнения задачи у вас обязательно должен иметься способ попасть в консоль устройства, а так же должны быть установленные утилиты wget и tar (Tape Archive) (ставится через Cydia). Варианты могут быть различные — тут кому как больше нравится. Я лично зашёл на телефон подключенный по wifi по ssh (мне так удобней), но ssh не обязателен. Про наличие подключения к интернету думаю говорить не обязательно.
Опишу только самый простой способ получить доступ к консоли.
  1. Установить приложения MobileTerminal, wget и «Tape Archive» из Cydia.

    (для ios4+ нужна версия MobileTerminal 520+, т.к. ранняя версия на ios4 не работает. Инструкция по установке есть тут суть которой сводится к добавлению репозитория www.ijailbreak.com/repository и установки MobileTerminal из него. Есть ещё российский аналог http://apt.iguides.ru/, но там нужно регистрироваться, хоть это и бесплатно, да и вообще — неплохой репозиторий.)

  2. После установки всего необходимого софта, необходимо запустить приложение MobileTerminal, после чего вы попадаете в консоль в непривилегированный режим пользователя mobile.

  3. Убедиться, что ваше устройство подвержено переходу на зимнее время:
    iPhone4-mafet:~ mobile$ cat /usr/share/zoneinfo/+VERSION
    2010l
    iPhone4-mafet:~ mobile$

    Как описывалось в статье, если версия <2011h, то необходимо произвести обновление, если >=2011h, то всё ок — делать ничего не нужно. Я не уверен, что во всех версиях iOS есть этот файл, но в 4.2.1 — есть и в 4.2.1 версия 2010l, соответственно если у вас версия iOS ниже 4.2.1, то устанавливать новую версию таймзон для подавления перехода на зимнее время вам надо обязательно, если выше — то точно будет файл +VERSION и вы можете из него узнать, нужно обновляться или нет.

  4. Повысить права до уровня root (стандартный пароль — alpine):

    iPhone4-mafet:~ mobile$ su -<br>Password: тут вводится стандартный пароль alpine или заданный вами (Заранее ответ на самый распространённый вопрос среди новичков - не пугайтесь отсутствия различных звёздочек при вводе пароля. Он на самом деле вводится, просто этого не видно.<br>iPhone4-mafet:~ root#<br>

  5. После получения прав root, необходимо скачать обновлённые timezone.
    iPhone4-mafet:~ root# wget www.mafet.ru/zoneinfo_2011k.tgz
    --2011-10-14 17:00:06-- www.mafet.ru/zoneinfo_2011k.tgz
    Resolving www.mafet.ru... 83.137.52.52
    Connecting to www.mafet.ru|83.137.52.52|:80... connected.
    HTTP request sent, awaiting response... 200 OK

    Length: 620945 (606K) [application/x-gzip]
    Saving to: `zoneinfo_2011k.tgz'

    100%[==========================================================================================================================================>] 620,945 346K/s in 1.8s

    2011-10-14 17:00:12 (346 KB/s) - `zoneinfo_2011k.tgz' saved [620945/620945]
    iPhone4-mafet:~ root#

    Для этого нужен установленный пакет wget
  6. Последний этап — установка новых таймзон:

    iPhone4-mafet:~ root# tar -zxf zoneinfo_2011k.tgz -C /
    iPhone4-mafet:~ root#

    Для этого нужен пакет tar (Tape Archive)
    Процесс может затянуться, в зависимости от производительности устройства, но наберитесь терпения и не давайте засыпать устройству.

  7. Как можно проверить, что всё ок?
    Самый простой способ — проверить дату создания файлов таймзон. У меня так:
    iPhone4-mafet:~ root# ls -la /usr/share/zoneinfo/Europe/Moscow
    -rw-r--r-- 1 root wheel 1448 Oct 4 09:49 /usr/share/zoneinfo/Europe/Moscow
    iPhone4-mafet:~ root#

    Файл датируется 4-ым октября.
    Для москвичей отличительным признаком так же будет изменение зоны в выводе date:
    Было
    iPhone4-mafet:~ root# date
    Fri Oct 14 17:11:34 MSD 2011
    iPhone4-mafet:~ root#

    Стало
    iPhone4-mafet:~ root# date
    Fri Oct 14 17:21:34 MSK 2011
    iPhone4-mafet:~ root#

    Ну и самый верный способ — дождаться перехода на зимнее время.



PS. Надеюсь данное решение никому не повредит, окажется полезным и реально поможет.
UPDATE Как оказалось, простого обновления tzdata недостаточно. В данном топике описано что ещё необходимо сделать, для корректного отображения времени.
Теги:
Хабы:
+1
Комментарии 21
Комментарии Комментарии 21

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн