На чем основана ios
История операционных систем Apple. Часть 1. Дографическая эпоха
Начинаю перевод весьма основательного труда Амита Сингха по истории операционных систем Apple. Часть картинок добавлена при переводе для наглядности. Планирую 3 или 4 части, смотря как будет получаться по объему. В этой части посмотрим, что было до Macintosh и Apple Lisa.
Первые байты кода
В конце 1975 года Стив Возняк завершил прототип компьютера, который вскоре станет известен как Apple I. Возняк в то время работал в НР. Но этот проект был им неинтересен, так что он попросил дать им вольную. 1 апреля 1976 года Стив Джобс, Стив Возняк и инженер из Atari Рональд Уэйн основали Apple. Первым продуктом под этим именем был компьютер Возняка.
Apple I
Apple I был основан на 8-битном процессоре MOS Technology 6502, с частотой меньше 1 МГц. Это был упрощенный вариант более дорогого чипа Motorola 6800. Примерно аналогичным по параметрам был и Intel 8080, но он при этом был дороже. У компьютера был встроенный выход на телевизор, разъемы для 8 Кб памяти, интерфейсы клавиатуры и кассетного магнитофона. Корпус, БП, клавиатура и телевизор в комплект не входили, покупатель должен был раздобыть их самостоятельно.
Apple I подключался к телевизору через антенный вход и мог отображать 24 строки по 40 символов. Стартовая цена была 666 долларов 66 центов, в комплект, кроме материнской платы, входили 4 Кб памяти и кассета с Apple BASIC.
Операционной системы как таковой у Apple I не было, зато была прошивка под названием System Monitor. Размер ее был всего 256 байт, не Кб. Она позволяла работать с командной строкой с помощью клавиатуры и экрана, смотреть содержимое памяти, набирать и запускать программы, и так далее.
По сравнению с UNIX (шестое издание на то время, см. habrahabr.ru/post/194160), назвать прошивку Apple I операционной системой не поворачивается язык. С другой стороны, UNIX-совместимый компьютер стоил тогда десятки тысяч долларов. Намного более дешевый Apple I был предназначен для широких масс гиков любителей.
Apple II
Apple I был на конвеере меньше года, зато следующая модель, Apple II, прожила намного дольше. Apple II основан на том же процессоре 6502, но проектировался Возняком как интегрированный компьютер. Клавиатура была встроена прямо в корпус. Это был первый ПК, способный работать с цветной графикой.
Линейка Apple II была довольно разнообразной: Apple II+, IIe, IIc, IIc+, IIe Enhanced, IIe Platinum, и наконец 16-битный IIgs в 1986 году. (IIgs тут не вполне уместен, потому что был сделан на новой платформе и новом процессоре, но умел работать в режиме совместимости с старыми Apple II — прим. перев.) Некоторые из этих моделей также были проапгрейжены в ходе выпуска.
Для Apple II было создано несколько операционных систем.
Apple DOS
Вскоре после релиза Apple II в 1977 году стало очевидно, что без дисковода компьютер жить не будет. Возняк разработал прекрасный флоппи-дисковод Disk II. (этот эпизод хорошо описан в мемуарах Возняка. Очень рекомендую — прим. перев.) К дисководу понадобилась и дисковая операционная система. Первая версия Apple DOS 3.1 (не только Windows NT начала нумерацию с тройки — прим. перев.) вышла в июле 1978 года.
Никакого отношения к еще не вышедшей MS-DOS система не имела. В то время диски были роскошью, поэтому абрревиатура DOS активно использовалась для пиара, примерно как сегодня приставка i.
Такая странная нумерация получилась из-за того, что один из программистов, Пол Лафтон, фактически заменил номер версии номером билда. Все началось с 0.1, а бета-версия была под номером 3.0.
Apple Pascal
p-System была разработана в Университете Калифорнии и Сан-Диего (UCSD) и пользовалась большой популярностью в 70-х и начале 80-х годов. Это была портируемая операционная система, де-факто — виртуальная машина, выполняющая байткод p-code. Самый популярный язык разработки — UCSD Pascal. В Apple его модифицировали для Apple II. Марк Аллен и Ричард Гливс, студенты UCSD, разработали интерпретатор для 6502 летом 1978 года. В 1979 году на базе этой разработки вышел Apple II Pascal. Apple Pascal выпускался пять лет.
Apple CP/M
Microsoft разработал сопроцессорную плату Softcard в 1980 году. Изначально она называлась Microsoft Z-80 SoftCard, но потом ее переименовали во избежание судебной тяжбы с Zilog. Карта позволяла запускать на Apple II программы для процессора Z-80 и ОС CP/M. В те годы под нее было много софта. Из полезного и популярного можно вспомнить dBase и WordStar.
Были и другие сопроцессорные карты, с поддержкой различных процессоров. Карта Stellation Mill с процессором Motorola 6809 позволяла запускать на компьютерах Apple операционную систему реального времени OS-9.
Apple SOS
Apple III выпустили в 1980 году для бизнес-пользователей. Новая ОС, SOS, официально получила свое название из-за сложности и продвинутости (Sophisticated Operating System), но реально один из разработчиков увековечил имя своей дочери — Sara’s Operating System. Каждая программа загружала в память также и операционную систему. На диске было ядро SOS.kernel, интерпретатор SOS.Interp и набор драйверов SOS.Driver.
SOS эволюционировала в Apple ProDOS.
Apple ProDOS
Поиск источников вдохновения
В 1984 году Apple выпускает Macintosh, а в 1983 — Apple Lisa. Здесь будет уместно вернуться в 1968 год. До появления UNIX, до основания Apple и Microsoft. За 17 лет до выхода Windows 1.0.
NLS: oNLine System
Дадим слово самому Энгельбарту.
Суть этого проекта вкратце такова: представь, что у тебя в офисе есть компьютер с экраном, который работает на тебя весь день и моментально откликается на твои действия. Сколько можно было бы дополнительно заработать с таким помощником? Мы стремились именно к такой картине.
Энгельбарт показал первую мышь. Указывающее устройство с тремя кнопками и пятном-”жучком” на экране. Снизу была два перпендикулярных колеса, на каждом по потенциометру. Если возить мышкой по поверхности, жучок на экране ползает соответственно перемещению.
Аккордная клавиатура
Другая новинка на этой презентации — пятипальцевая аккордная клавиатура. Она позволяет вводить 2**5-1 = 31 символ. Минус единица сооветствует всем ненажатым клавишам.
Работа с документами
Энгельбарт показал, что текст можно вводить, перетягивать, копипастить, форматировать, прокручивать, иерархически группировать, и так далее. Созданный текст можно сохранить в файле с метаданными типа имени автора и времени создания. Если использовать мышку, то все это несложно и быстро. Энгельбарт называл общий механизм всего этого view control.
Система была удобна для написания кода. Блоки кода можно было сворачивать, работало автодополнение. Также поддерживалась разметка, которая позволяла форматировать документ в соответствии с назначением, например для печати.
Гипертекст и карты изображений
С помощью гипертекста Энгельбарт реализовал переходы между фрагментами текста. Это может быть переход к результату поиска или просто переход по видимой или невидимой гиперссылке.
Система также поддерживала рисование. В картинки тоже можно было встраивать гиперссылки на манер современных карт изображений, image map.
Слово “гипертекст” придумал Тед Нельсон, а саму идею приписывают Ванневару Бушу. Он был советником по науке Франклина Рузвельта, и в 1945 году предложил ассоциацию вместо индексирования как способ связи фрагментов информации.
Поиск
Был реализован мощный инструментарий поиска с весами ключевых слов и выводом результата в виде гипертекста.
Экран можно было разделить на две части, одна из которых статичная, а вторая интерактивная. Например, при чтении мануала появилось непонятное слово. Можно было открыть во втором окне словарь и уточнить его значение. В целом, это было похоже на HTML-фреймы.
Совместная работа
Также можно было совместно работать над документами, править чужой текст, оставлять заметки соавторам — почти как Гитхаб.
Также можно было оставить сообщение конкретному человеку, а не пользователю вообще. Программируемый фильтр позволял показывать разное содержимое файла различным пользователям.
Интерактивная совместная работа
А еще показывали живую видеоконференцию. Можно было даже показывать удаленным пользователям одно и то же изображение на экране, но предоставить разные права доступа. Например, один редактирует, а второй наблюдает в рид-онли.
Результат
Энгельбарт утверждал, что такая система позволит пользователям эффективно справляться со сложной информацией, в которой контент представляет собой концепции. NLS должна была стать инструментом для навигации по структурам, которые не могут быть отображены простым текстом.
Энгельбарт также работал над созданием ARPANet. В планах был специальный сервис для работы с актуальной информации о сети и ответов на вопросы типа “Кто предоставляет этот сервис?”, “Какой протокол мне надо использовать?”, “Какие хосты онлайн, а какие отключены?”.
Активно использовалась концепция бутстрепинга. Краткий смысл: “Мы создаем этот инструмент, чтобы с его помощью создать еще лучшие инструменты”.
Даже такие инновации не спасли NLS. Институт прекратил финансирование. Многие разработчики перебрались в новый проект Xerox PARC, где они планировали создать распределенную сетевую версию NLS. Энгельбарт ушел в телефонную компанию Tymshare. По иронии судьбы, его офис был недалеко от Apple.
Smalltalk
Разработка Xerox PARC очень сильно изменила подход к компьютерным интерфейсам вообще. Первую версию Smalltalk выпустили на PARC в 1972 году. Это был первый полностью объектно-ориентированный язык. В основе лежал язык Simula. Была также среда разработки с оконным интерфейсом. На Smalltalk написали много чего интересного для той платформы: WYSIWYG редактор, софт для захвата и редактирования звука, анимации и так далее.
Позже, глядя на Smalltalk, разработали язык Objective-C. Главный разработчик Smalltalk Алан Кей был основателем проекта PARC. В конце 60-х он предложил идею чего-то в духе современного КПК под названием Dynabook. Позже он работал во многих крупных компьютерных компаниях, включая Apple, на должности главного по науке.
Xerox Alto
В Xerox не забывали и о персональных компьютерах в сегодняшнем смысле этого слова. В результате получился Xerox Alto. У него был 16-битный процессор, вертикальный экран с разрешением 606х808, клавиатура обычная и аккордная, трехкнопочная мышь с шаром и красивый корпус. Были в наличии интерфейсы для принтера, плоттера, Ethernet со скоростью 2.94 Mbps. Поддерживалась сеть и сетевая печать, но не было виртуальной памяти. В 1979 году в эксплуатации было около 1500 станций Alto. Они продавались и сторонним покупателям.
Кау устроена iOS
Содержание статьи
Mac OS X
Операционная система, установленная сегодня на все маки и (в измененном виде) на айдевайсы, ведет свою историю аж с 1988 года, который в мире IT известен также тем, что стал годом выпуска первой бета-версии операционной системы NeXTSTEP. Сама NeXTSTEP была детищем команды разработчиков Стива Джобса, который к тому времени уже покинул Apple и основал компанию NeXT, которая занялась разработкой компьютеров для образовательных нужд.
В момент своего появления на свет NeXTSTEP была поистине передовой операционной системой, которая включала в себя множество технологических новаций. В основе ОС лежало модифицированное микроядро Mach, дополненное компонентами ядра FreeBSD, включая эталонную реализацию сетевого стека. Более высокоуровневые компоненты NeXTSTEP были написаны с использованием языка Objective-C и предоставляли разработчикам приложений богатый объектно-ориентированный API. Система была снабжена развитым и весьма удобным графическим интерфейсом (ключевые компоненты которого сохранились в OS X и даже iOS) и мощной средой разработки, включавшей в себя в том числе известный всем современным разработчикам визуальный дизайнер интерфейса.
После провала NeXT и возвращения Стива Джобса в компанию Apple в 1997 году NeXTSTEP легла в основу проекта Rhapsody, в рамках которого началась разработка системы-наследника Mac OS 9. В 2000 году из Rhapsody был выделен открытый проект Darwin, исходники которого опубликованы под лицензией APSL, а уже в 2001 году появилась на свет OS X 10.0, построенная на его основе. Спустя несколько лет Darwin лег в основу операционной системы для готовящегося к выпуску смартфона, о котором до 2007-го, кроме слухов, не было известно почти ничего.
XNU и Darwin
Условно начинку OS X / iOS можно разделить на три логических уровня: ядро XNU, слой совместимости со стандартом POSIX (плюс различные системные демоны/сервисы) и слой NeXTSTEP, реализующий графический стек, фреймворк и API приложений. Darwin включает в себя первые два слоя и распространяется свободно, но только в версии для OS X. iOS-вариант, портированный на архитектуру ARM и включающий в себя некоторые доработки, полностью закрыт и распространяется только в составе прошивок для айдевайсов (судя по всему, это защита от портирования iOS на другие устройства).
По своей сути Darwin — это «голая» UNIX-подобная ОС, которая включает в себя POSIX API, шелл, набор команд и сервисов, минимально необходимых для работы системы в консольном режиме и запуска UNIX-софта. В этом плане он похож на базовую систему FreeBSD или минимальную установку какого-нибудь Arch Linux, которые позволяют запустить консольный UNIX-софт, но не имеют ни графической оболочки, ни всего необходимого для запуска серьезных графических приложений из сред GNOME или KDE.
Ключевой компонент Darwin — гибридное ядро XNU, основанное, как уже было сказано выше, на ядре Mach и компонентах ядра FreeBSD, таких как планировщик процессов, сетевой стек и виртуальная файловая система (слой VFS). В отличие от Mach и FreeBSD, ядро OS X использует собственный API драйверов, названный I/O Kit и позволяющий писать драйверы на C++, используя объектно-ориентированный подход, сильно упрощающий разработку.
iOS использует несколько измененную версию XNU, однако в силу того, что ядро iOS закрыто, сказать, что именно изменила Apple, затруднительно. Известно только, что оно собрано с другими опциями компилятора и модифицированным менеджером памяти, который учитывает небольшие объемы оперативки в мобильных устройствах. Во всем остальном это все то же XNU, которое можно найти в виде зашифрованного кеша (ядро + все драйверы/модули) в каталоге /System/Library/Caches/com.apple.kernelcaches/kernelcache на самом устройстве.
Уровнем выше ядра в Darwin располагается слой UNIX/BSD, включающий в себя набор стандартных библиотек языка си (libc, libmatch, libpthread и так далее), а также инструменты командной строки, набор шеллов (bash, tcsh и ksh) и демонов, таких как launchd и стандартный SSH-сервер. Последний, кстати, можно активировать путем правки файла /System/Library/LaunchDaemons/ssh.plist. Если, конечно, джейлбрейкнуть девайс.
На этом открытая часть ОС под названием Darwin заканчивается, и начинается слой фреймворков, которые как раз и образуют то, что мы привыкли считать OS X / iOS.
Фреймворки
Darwin реализует лишь базовую часть Mac OS / iOS, которая отвечает только за низкоуровневые функции (драйверы, запуск/остановка системы, управление сетью, изоляция приложений и так далее). Та часть системы, которая видна пользователю и приложениям, в его состав не входит и реализована в так называемых фреймворках — наборах библиотек и сервисов, которые отвечают в том числе за формирование графического окружения и высокоуровневый API для сторонних и стоковых приложений
Как и во многих других ОС, API Mac OS и iOS разделен на публичный и приватный. Сторонним приложениям доступен исключительно публичный и сильно урезанный API, однако jailbreak-приложения могут использовать и приватный.
В стандартной поставке Mac OS и iOS можно найти десятки различных фреймворков, которые отвечают за доступ к самым разным функциям ОС — от реализации адресной книги (фреймворк AddressBook) до библиотеки OpenGL (GLKit). Набор базовых фреймворков для разработки графических приложений объединен в так называемый Cocoa API, своего рода метафреймворк, позволяющий получить доступ к основным возможностям ОС. В iOS он носит имя Cocoa Touch и отличается от настольной версии ориентацией на сенсорные дисплеи.
Далеко не все фреймворки доступны в обеих ОС. Многие из них специфичны только для iOS. В качестве примеров можно привести AssetsLibrary, который отвечает за работу с фотографиями и видео, CoreBlueTooth, позволяющий получить доступ к синезубу, или iAd, предназначенный для вывода рекламных объявлений в приложениях. Другие фреймворки существуют только в настольной версии системы, однако время от времени Apple переносит те или иные части iOS в Mac OS или обратно, как, например, случилось с фреймворком CoreMedia, который изначально был доступен только в iOS.
Все стандартные системные фреймворки можно найти в системном каталоге /System/Library/Frameworks/. Каждый из них находится в своем собственном каталоге, называемом бандлом (boundle), который включает в себя ресурсы (изображения и описание элементов интерфейса), хидеры языка си, описывающие API, а также динамически загружаемую библиотеку (в формате dylib) с реализацией фреймворка.
Одна из интересных особенностей фреймворков — их версионность. Один фреймворк может иметь сразу несколько разных версий, поэтому приложение, разработанное для устаревших версий системы, будет продолжать работать, даже несмотря на изменения, внесенные в новые версии ОС. Именно так реализован механизм запуска старых iOS-приложений в iOS 7 и выше. Приложение, разработанное для iOS 6, будет выглядеть и работать именно так, как если бы оно было запущено в iOS 6.
SpringBoard
Уровнем выше находятся приложения, системные и устанавливаемые из магазина приложений. Центральное место среди них занимает, конечно же, SpringBoard (только в iOS), реализующее домашний экран (рабочий стол). Именно оно запускается первым после старта системных демонов, загрузки в память фреймворков и старта дисплейного сервера (он же менеджер композитинга, он же Quartz Compositor), отвечающего за вывод изображения на экран.
SpringBoard — это связующее звено между операционной системой и ее пользователем, графический интерфейс, позволяющий запускать приложения, переключаться между ними, просматривать уведомления и управлять некоторыми настройками системы (начиная с iOS 7). Но также это и обработчик событий, таких как касание экрана или переворот устройства. В отличие от Mac OS X, которая использует различные приложения и демоны-агенты для реализации компонентов интерфейса (Finder, Dashboard, LaunchPad и другие), в iOS почти все базовые возможности интерфейса пользователя, в том числе экран блокировки и «шторка», заключены в одном SpringBoard.
В отличие от других стоковых приложений iOS, которые располагаются в каталоге /Applications, SpringBoard наравне с дисплейным сервером считается частью фреймворков и располагается в каталоге /System/Library/CoreServices/. Для выполнения многих задач он использует плагины, которые лежат в /System/Library/SpringBoardPlugins/. Кроме всего прочего, там можно найти, например, NowPlayingArtLockScreen.lockboundle, отвечающий за отображение информации о проигрываемой композиции на экране блокировки, или IncomingCall.serviceboundle, ответственный за обработку входящего звонка.
Начиная с iOS 6 SpringBoard разделен на две части: сам рабочий стол и сервис BackBoard, ответственный за коммуникации с низкоуровневой частью ОС, работающей с оборудованием (уровень HAL). BackBoard отвечает за обработку таких событий, как касания экрана, нажатия клавиш, получение показания акселерометра, датчика положения и датчика освещенности, а также управляет запуском, приостановкой и завершением приложений.
SpringBoard и BackBoard имеют настолько большое значение для iOS, что, если каким-либо образом их остановить, вся система застынет на месте и даже запущенное в данный момент приложение не будет реагировать на касания экрана. Это отличает их от домашнего экрана Android, который является всего лишь стандартным приложением, которое можно остановить, заменить или вообще удалить из системы (в этом случае на экране останутся вполне рабочие кнопки навигации и строка состояния со «шторкой»).
Приложения
На самой вершине этой пирамиды находятся приложения. iOS различает встроенные (стоковые) высоко привилегированные приложения и сторонние, устанавливаемые из iTunes. И те и другие хранятся в системе в виде бандлов, во многом похожих на те, что используются для фреймворков. Разница заключается лишь в том, что бандл приложения включает в себя несколько иную метаинформацию, а место динамической библиотеки занимает исполняемый файл в формате Mach-O.
Стандартный каталог хранения стоковых приложений — /Applications/. В iOS он абсолютно статичный и изменяется только во время обновлений системы; пользователь получить к нему доступ не может. Сторонние приложения, устанавливаемые из iTunes, напротив, хранятся в домашнем каталоге пользователя /var/mobile/Applications/ внутри подкаталогов, имеющих вид 4-2-2-2-4, где два и четыре — это шестнадцатеричные числа. Это так называемый GUID — уникальный идентификатор, который однозначно идентифицирует приложение в системе и нужен в том числе для создания изолированной песочницы (sandbox).
Sandbox
В iOS песочницы используются для изолирования сервисов и приложений от системы и друг от друга. Каждое стороннее приложение и большинство системных работают в песочнице. С технической точки зрения песочница представляет собой классический для мира UNIX chroot, усиленный системой принудительного контроля доступа TrustedBSD MAC (модуль ядра sandbox.kext), которая отрезает приложениям не только доступ к файлам за пределами домашнего каталога, но и прямой доступ к железу и многим системным функциям ОС.
В целом заключенное в sandbox приложение ограничено в следующих возможностях:
Все эти ограничения соответствуют sandbox-профилю (набору ограничивающих правил) container и применяются к любому стороннему приложению. Для стоковых приложений, в свою очередь, могут применяться другие ограничения, более мягкие или жесткие. В качестве примера можно привести почтовый клиент (профиль MobileMail), который в целом имеет такие же серьезные ограничения, как и сторонние приложения, но может получить доступ ко всему содержимому каталога Library/. Обратная ситуация — SpringBoard, вообще не имеющий ограничений.
Вторая проблема — это защита системы от самой себя и пользователя. Баги могут существовать как в стоковом софте от Apple, так и в головах юзеров. Sandbox защищает от обоих. Даже если злоумышленник найдет дыру в Safari и попытается ее эксплуатировать, он все равно останется в песочнице и не сможет навредить системе. А юзер не сможет «сломать свой любимый телефончик» и не напишет гневных отзывов в адрес Apple. К счастью, знающие люди всегда могут сделать jailbreak и обойти защиту sandbox (собственно, в этом и есть смысл джейлбрейка).
Многозадачность
Одна из самых спорных особенностей iOS — это реализация многозадачности. Она вроде бы и есть, а с другой стороны, ее нет. В сравнении с традиционными настольными ОС и пресловутым Android iOS не является многозадачной операционной системой в привычном смысле этого слова и не позволяет приложениям свободно работать в фоне. Вместо этого ОС реализует API, который приложение может использовать для выполнения отдельных задач, пока оно находится в фоновом режиме.
Впервые такой API появился в iOS 4 (до этого фоновые задачи могли выполнять только стоковые приложения) и наращивался по мере развития операционной системы. Сегодня (речь идет об iOS 7) так называемый Background API позволяет делать следующее:
Такие ограничения на работу в фоне необходимы в первую очередь для того, чтобы сохранить заряд батареи и избежать лагов интерфейса, так знакомых пользователям Android, где приложения могут делать в фоне все что захотят. На самом деле Apple настолько сильно заботится о сохранении батареи, что даже реализовала специальный механизм для группировки фоновых действий приложений и их запуска в нужные моменты, например тогда, когда смартфон активно используется, подключен к Wi-Fi-сети или к зарядному устройству.
Выводы
Стоит сказать, что за время своего развития и последующего переезда в мобильные девайсы NeXTSTEP не только не растеряла все свои достоинства, но и приумножила их. Можно долго слушать россказни сотрудников Google, уверяющих, что Android разрабатывался без оглядки на iOS, но факт остается фактом: многие архитектурные решения Android позаимствовал именно у iOS. И не потому, что так было проще, а благодаря их красоте и эффективности.
Шесть стадий загрузки iOS
4 Ядро. Здесь все как обычно. Ядро производит инициализацию оборудования, после чего передает управление демону launchd.
5 Launchd. Это первичный процесс iOS и Mac OS X, он подключает файловые системы, запускает демоны/службы (например, backupd, configd, locationd), дисплейный сервер, фреймворки, а на последнем этапе загрузки отдает управление SpringBoard. В iOS и Mac OS X launchd используется как замена стандартного /bin/init в UNIX, однако его функциональность гораздо шире.
6 SpringBoard. Вот и экран блокировки!
Первые четыре этапа в этой цепи образуют chain of trust, реализованный с помощью сверки цифровой подписи загружаемого компонента. Цифровую подпись имеют LLB, iBoot и ядро, что позволяет исключить внедрение в цепочку хакнутого загрузчика или ядра, которые могут быть использованы для загрузки сторонней операционной системы или джейлбрейка. Единственный способ обойти этот механизм — найти дыру в одном из загрузчиков и воспользоваться ею для обхода проверки. В свое время было найдено несколько таких дыр в Boot ROM (наиболее известен эксплойт limera1n от geohot, актуальный для iPhone 1–4), а в начале 2014 года и в iBoot (хакер iH8sn0w, эксплойт так и не был опубликован).
Удерживая кнопку «Домой» при включении iPhone, можно заставить iBoot загрузиться в так называемый режим восстановления (Recovery), который позволяет восстановить прошивку iOS или обновить ее, используя iTunes. Однако механизм автоматического OTA-обновления использует другой режим, именуемый DFU (Device Firmware Upgrade), который активируется на раннем этапе загрузки сразу после Boot ROM и реализован в двух компонентах: iBSS и iBEC. По сути, это аналоги LLB и iBoot, конечная цель которых — не загрузить ОС, а перевести смартфон в режим обновления.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.