бутлоадер что это такое
Что такое Bootloader и для чего он служит
Понимание того, как работает ваш смартфон и какие важные компоненты в этом ему помогают, определенно не повредит. В этом посте мы познакомимся с тем, что называется Bootloader, или «загрузчик». Почему он бывает открытым или закрытым и для чего он нужен. Простому пользователю работать с загрузчиком не придется, но знать о его существовании полезно.
Начнем с начала. Bootloader, или загрузчик, это программа, которая запускается каждый раз, как только вы включаете смартфон. Она отвечает за запуск нужной операционной системы. Другими словами, Bootloader запускается еще до того, как будет загружена операционная система Android. Именно эта программа позволяет запустить Android или активировать режим восстановления, к примеру.
Производители блокируют доступ к загрузчику на своих устройствах. Таким образом они запрещают пользователям запускать какую-либо другую операционную систему на устройстве, кроме предусмотренной производителем. Желающие установить кастомную прошивку прибегают к разблокировке загрузчика, хотя есть производители, которые выпускают устройства с разблокированным загрузчиком.
Bootloader устанавливается производителем смартфонов. В случае, если он заблокирован, он позволит запустить только авторизованную версию операционной системы с соответствующей электронной подписью. Способы обхода этой проверки разнятся в зависимости от производителя смартфона и, как правило, требуют root-доступ.
Стоит отметить, что неосторожные действия пользователей порой приводят к повреждению программы-загрузчика. Это одна из причин, по которой не стоит отсоединять кабель от смартфона во время прошивки или выключать электричество. Восстановление Bootloader – это очень непростая процедура, которая не имеет ничего общего с восстановлением прошивки смартфона или обновлением версии Android.
Что такое загрузчик в Android и как его разблокировать
Раньше многие владельцы Android-смартфонов занимались разблокировкой «загрузчика» (или Bootloader) — зачастую без этого было нельзя обновить устройство на более новую версию операционной системы. Сейчас простому пользователю работать с загрузчиком не придется (хотя кто его знает, может и настанет такой момент), но знать о его существовании полезно. Разберемся, почему «загрузчик» бывает открытым или закрытым, и для чего он вообще нужен.
Что такое загрузчик в Android
Bootloader — это программа. Почти такая же, как любое из установленных на вашем телефоне приложений. Отличие в том, что она запускается каждый раз, как только вы включаете смартфон. «Загрузчик» отвечает за запуск нужной операционной системы: другими словами, Bootloader запускается еще до того, как будет загружен Android, и вы увидите перед собой рабочий стол с приложениями. Именно эта программа позволяет запустить Android или активировать режим восстановления, к примеру.
Почему загрузчик заблокирован
Действительно, производители часто блокируют доступ к загрузчику на своих устройствах. Таким образом они запрещают пользователям запускать какую-либо другую операционную систему на устройстве, кроме предусмотренной производителем. Желающие установить кастомную прошивку прибегают к разблокировке загрузчика, хотя есть производители, которые выпускают устройства с разблокированным загрузчиком.
Bootloader устанавливается производителем смартфонов. В случае, если он заблокирован, он позволит запустить только авторизованную версию операционной системы с соответствующей электронной подписью.
Как разблокировать загрузчик
Загрузчик на Google Pixel
Способы обхода загрузчика разнятся в зависимости от производителя смартфона и, как правило, требуют root-доступ. На нашем сайте и в нашем Телеграм-чате можно найти множество инструкций для конкретного смартфона. Если хоть раз имели дело с загрузчиком, пройдите опрос ниже — посмотрим, сколько среди нас гиков.
Иногда производители сами позволяют разблокировать загрузчик (а зачем тогда блокировали, спрашивается?). Например, Sony недавно опубликовала инструкцию, где настоятельно рекомендуют воспользоваться для этих целей специальной утилитой, которая возьмет всю черновую работу на себя. От владельца потребуется лишь IMEI и действующий адрес электронной почты. После того как программа проверит введенные данные, вам будет предоставлен уникальный код, введя который в специальном поле, устройство будет разблокировано.
А Huawei в прошлом году запретила разблокировку загрузчика фирменных устройств, чтобы… потом снова разрешить ее. Правда, обратиться за разблокировкой могут только активные участники сообщества разработчиков, представленные на площадке XDA.
Стоит отметить, что неосторожные действия пользователей порой приводят к повреждению программы-загрузчика. Это одна из причин, по которой не стоит отсоединять кабель от смартфона во время прошивки или выключать электричество. Восстановление Bootloader – это очень непростая процедура, которая не имеет ничего общего с восстановлением прошивки смартфона или обновлением версии Android.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Прошла неделя с момента появления в моем доме умного телевизора с Android TV. Я уже успел облазить его со всех сторон, опробовать разные приложения, функции, понять основную фишку операционной системы. Знаете, за все это время у меня так и не появилось ни капли сожаления за потраченные деньги: покупка определенно стоит каждого вложенного рубля. Напомню, что для меня это совершенно новый опыт: до этого я не сталкивался с подобными устройствами, поэтому в чем-то могу ошибаться. Тем не менее, недели наблюдений было достаточно для того, чтобы сделать определенные выводы. Рассказываю, что я понял об умном устройстве.
Android и recovery
Бог Прошутто
В своей статье «Android и Root«, а так же в статье «Android изнутри или просто о сложном» (автор Dreamer…) упоминался recovery, но что это такое и что с помощью его замены на кастомный можно делать подробно расписано не было. Меж тем, как это один из важнейших компонентов в тонкой настройке телефона, который позволяет заменять прошивку или делать резервную копию текущей. В этой статье я постараюсь исправить сие досадное упущение.
Android и bootloader
Для более полного понимания того, что же такое Recovery вообще, на мой взгляд, стоит так же рассказать о том, что такое bootloader и как он со всем этим связан.
Итак, Bootloader — это загрузчик — приложение, которое самым первым запускается на вашем устройстве, считывает свою конфигурации, и на основании её либо загружает операционную систему (Android). Аналоги на настольных ОС — MBR в Windows и Grub с LILO на Linux.
Помимо загрузки ОС, загрузчик предоставляет возможность выбрать ОС для запуска (если их несколько), выбрать режим запуска ОС (например «Безопасный режим в windows»), а так же запускать вспомогательные приложения к коим и относится Recovery. В некоторых случаях загрузчик всегда предоставляет меню для выбора ОС\режимов\приложений, в других для его отображения требуется нажать определённую клавишу\комбинацию клавиш, а в третьих меню отсутствует вообще и запуск альтернатив основной ОС осуществляется нажатием клавиш и\или их комбинаций. На настольных ОС чаще всего встречаются первые два варианта, на мобильных — последние два.
Упрощённая схема загрузки ОС
Что такое Recovery
Recovery — это дополнительное приложение восстановления\сброса\модификации\замены прошивки\ОС смартфона. Стандартные recovery подавляющего большинства смартфонов позволяют выполнить только первые две операции. Кастомные, т.е. нестандартные, ставящиеся пользователем, recovery позволяют делать намного больше. Для установки кастомного recovery, как правило, требуются root-привилегии на вашем устройстве (конкретно, при установке с самого устройства, без участия компьютера) и, в некоторых случаях, модификация bootloader’a. Установка производится либо при помощи специальных приложений в маркете, либо при помощи компьютера. Так же есть возможность запускать при помощи компьютера кастомный recovery, не устанавливая его на телефон (через adb).
Инструкции по установке recovery могут различаются от телефона к телефону, посему приведены здесь не будут. Их без проблем можно найти в интернете и на русском форуме 4pda и зарубежном xda-developers в частности, но в целом, как правило, достаточно установить определённое приложения из маркета (о них ниже) и с его помощью поставить recovery.
Как можно понять из приведущего раздела: Recovery и сама прошивка друг с другом непосредственно не связаны, следовательно модификация одной из составляющих, при стандартном раскладе, не затронет другую, а это значит что если вы, скажем, запороли текущую прошивку устройства — оно не становится «кирпичом» а легко поддаётся восстановлению путём установки другой через Recovery.
«Стандартные» функции кастомных recovery
install — устанавливает прошивку\ядро\системные утилиты (например набор приложений от google для cyanogenmod) из специального файла. Такие файлы представляют из себя обычные zip-архивы с определённой структурой. Некоторые такие архивы комплектуются специальной утилитой: Aroma Installer, которая представляет собой по сути графический установщик с возможностью выбирать параметры установки. Наличие\отсутствие Aroma Installer никак не связано с качеством или популярностью прошивки\ядра\утилиты.
backup\restore — пожалуй один из самых важных компонентов — позволяет делать полную или частичную резервную копию вашей текущей системы. КРАЙНЕ рекомендуется делать полные бэкапы при смене одной прошивки на другую, или же построенную на основе другой версии Android (например при обновлении с cyanogenmod 9 до 10) и частичные (разделы boot и system) при «минорных» (т.е. в рамках одной версии, например, с 10.1.1 до 10.1.2) обновлениях прошивки. Так же современные recovery генерируют сумму md5 к архиву с бэкапом, что позволяет контролировать его целостность (отсутствие повреждений). Отключить можно, но не рекомендую. Так же хочу посоветовать хранить минимум 2 последних бэкапа. В случае если последний повредится (лично у меня такого не было, но вероятность есть), у нас есть возможность восстановиться с предпоследнего. Вероятность повреждения обоих бэкапов куда ниже, чем одного (если не рассматривать физическое повреждения носителя, где они записаны).
wipe\format — очистка\форматирование разделов внутренней памяти. Вообще форматирование в подавляющем большинстве случаев не требуется, обычно достаточно простой очистки (wipe). Разделы cache и dalvik-cache рекомендуется сбрасывать при смене прошивки. Очистка раздела data (она же Factory Reset) ведёт к сбросу всех настроек пользователя, а так же установленных им приложений, иначе говоря, прошивка возвращается к своему первоначальному состоянию. Раздел system хранит саму прошивку и, как правило, автоматически форматируется при установке новой.
Современные кастомные Recovery
ClockWorkMod \ ClockWorkMod Touch
Пожалуй самое известное кастомное Recovery, которое рекомендуется в подавляющем большинстве инструкций по прошивке и поддерживается практически всеми современными моделями смартфонов.ClockWorkMod Touch, в отличии от оригинала, имеет сенсорное меню и устанавливается только в платной версии RomManager’a. Большое преимущество CWM Touch, по сравнению с другими сенсорными recovery — возможность управление так же и физическими кнопками (кнопки громкости и выключения), что позволит, в случае проблем с сенсором, вернуть оригинальную прошивку и без проблем сдать по гарантии (если, конечно, вы не забыли сбросить что нибудь навроде счётчика прошивок в смартфонах от samsung).Из дополнительных опций можно отметить возможность создания SD-Ext раздела: грубо говоря, от карты памяти «откусывается» кусочек в отдельный раздел, форматируется в Ext2/3/4 (файловая система linux’a) и присоединяется к основной памяти смартфона: что позволяет устанавливать больше приложений, на тех устройствах, где производитель не позаботился о внутренней памяти. Размер раздела можно установить от 128Mb до 4096Mb (4Gb). |
Однако, у этого recovery есть один минус — при создании резервной копии невозможно выбрать что именно сохранять (boot\system\data) — сохраняется всё, что требует дополнительного времени и место на накопителе. Так же из собственного опыта: с CWR Touch на SGS3 не может установиться обновление CyanogenMod 10.1, полученное с помощью CyanDelta.
небольшой хинт: не обязательно ставить CWM Touch через очень дорогой Rom Manager Premium — вполне можно обойтись более дешёвыми (а то и бесплатными) средствами, навроде Mobile ODIN.
Скачать оффициальные образы recovery в img формате можно по следующей ссылке:http://www.clockworkmod.com/rommanager
В других форматах (например tar для ODIN) можно найти на xda-developers.
Так же существует модифицированная версия CWR Touch, содержащая дополнительные настройки (оформление) и возможности (выбрать что сохранять в резервной копии) — в целом весьма и весьма приятная вещь. Называется PhilZ Touch Recovery, скачать можно на xda-developers
Скачать бесплатную версию
Очень напоминает ClockworkMod Recovery, так что 4EXT можно даже принять за своеобразную надстройку — умеет всё тоже плюс чуточку больше.От CWR отличается поддержкой тем оформления (как в текстовом, так и в сенсорном режимах) и некоторыми дополнительными функциями. Кстати, Touch Recovery появился у них гораздо раньше, чем у CWR. Из дополнительных функций: возможность подключать карту памяти, как накопитель, из самого Recovery (довольно удобно при экспериментах с прошивками), а так же преобразовывать Ext3 в Ext4 и наоборот (неактуально для Android 4.x). Лично мне сенсорный режим понравился куда больше, чем в CWR — строки более широкие, т.е. легче попадать и есть иконки, которые облегчают навигацию. |
В целом этот recovery — пожалуй лучшее, что есть на данный момент: удобен, функционален, полностью бесплатен. Настоятельно рекомендую.
Чуть не забыл — при создании архива с резервной копией это чудо программерской мысли способно использовать несколько ядер вашего смартфона — что весьма положительно сказывается на скорости работы.
Устанавливается при помощи приложения GooManager
(МЕНЮ => Install OpenRecoveryScript)
Скачать бесплатную версию
Заключение
Если вы хотите выжать из своего смартфона максимум — вам наверняка захочется поставить стороннюю прошивку, и кастомное recovery в этом основной инструмент. Установить такое можно через специализированное приложение либо же при помощи компьютера (тут инструкции для каждого телефона индивидуальны). В первом случае требуется root, во втором же обрыв соединения с компьютером во время процесса прошивки может привести к плачевным последствиям.
Что касается списков поддерживаемых моделей — не обязательно их смотреть, выискивая свою модель — все описанные в статье программы для установки recovery способны самостоятельно определить модель вашего смартфона и проверить — есть ли для неё recovery.
Микроконтроллер и Bootloader. Описание и принцип работы.
Приветствую всех на нашем сайте и сегодня мы после небольшого перерыва вернемся к теме микроконтроллеров. А если быть совсем точным, то мы начинаем обсуждать одну очень интересную и важную тему, а именно использование bootloader (загрузчика) при программировании контроллеров. Сегодня мы разберем теоретическую часть — зачем bootloader нужен, как он работает и что это вообще такое. Следующая статья будет посвящена целиком и полностью практике. Забегая вперед скажу, что мы напишем свой bootloader для любимых микроконтроллеров STM32!
Итак, простыми словами, bootloader — это специальная программа, которая располагается в памяти микроконтроллера и может самостоятельно перепрограммировать его. Давайте для лучшего понимания процесса посмотрим как вообще выполняется программа, прошитая в микроконтроллер, и где она располагается.
Как вы помните из статьи, посвященной flash-памяти микроконтроллеров STM32, основная пользовательская программа начинается с первой страницы памяти, а точнее с адреса 0х08000000. То есть при подаче питания контроллер сразу же убегает по этому адресу.
При использовании загрузчика все выглядит несколько иначе. Основная программа записывается уже по другим адресам и располагается начиная, например, с адреса 0х0800A000. А область памяти (0х08000000 — 0х0800А000) целиком и полностью отдается bootloader’у. В итоге в flash-памяти контроллера у нас находятся две полноценные программы. При включении устройства управление получает bootloader (поскольку он находится в области, начинающейся со «стартового» адреса 0х08000000), а при дальнейшей работе bootloader, выполнив все свои задачи передает управление нашей основной программе, которая располагается по адресу 0х0800А000 (этот адрес мы взяли для примера). Вот небольшая схемка для демонстрации работы загрузчика:
Вроде бы понятно как устроено, но возникает вопрос — зачем все это надо? Давайте разбираться!
Первостепенной задачей bootloader’а является программирование микроконтроллера. Он не просто выполняет какие-то действия, а затем передает управление основной программе (переходит на адрес, который соответствует началу основной программы), он, в первую очередь, самостоятельно записывает эту основную программу в flash-память по нужным адресам.
Давайте разберем небольшой пример для лучшего понимания. Пусть мы создали bootloader (bootloader — точно такой же обычный проект, как и любая другая программа для микроконтроллера), который реализует взаимодействие с внешней картой памяти, ищет на карте файл программы и, если находит, записывает программу в нужную область памяти.
Небольшое отступление от основной темы… Поясню, что я тут имею ввиду под «файлом программы».
Но именно hex-файл не совсем подходит для наших целей, поскольку помимо кода нашей программы он несет в себе дополнительную служебную информацию. Чтобы ее не обрабатывать и не вытаскивать из hex-файла нужный нам код, который bootloader должен записать во flash, мы в настройках компилятора во вкладке Output попросим его генерировать нам вместо hex-файла bin-файл.
Бинарник, в отличие от hex, содержит в себе только последовательный код программы и ничего больше. То есть bootloader’у остается только читать байты из bin-файла и записывать их во flash-память. То есть в нашем примере задачей загрузчика является чтение байт из файла на карте памяти и запись их по адресам, начиная с 0х0800A000. Вот псевдокод для наглядности:
Конечно, это сильно упрощенная версия загрузчика. Тут мы в вечном цикле пытаемся открыть файл с программой, а как только это нам удается (пользователь записал на карту долгожданный файл) bootloader программирует flash-память и перескакивает на адрес записанной им же программы. После этого контроллер начинает выполнять пользовательскую программу. Еще раз повторюсь, это всего лишь псевдокод для примера, полноценный bootloader для STM32 мы обязательно напишем в следующей статье!
Все это, конечно, очень интересно, но по-прежнему, непонятно, зачем нужны все эти сложности….
С этим на самом деле все просто — вот, например, первая ситуация — есть огромное количество устройств, на заводе работники прошили в каждый контроллер (например, при помощи ST-Link) на каждой плате bootloader, который при подключении к плате флешки (в заранее предусмотренный разъем) ищет на ней файл прошивки и выполняет программирование. Основную программу, конечно же, тоже можно прошить вместе с bootloader’ом через ST-Link. Но тонкость тут в том, что проект bootloader’а остается всегда неизменным и перепрошивать его не надо, а вот версия основной программы может обновляться кучу раз в процессе тестирования устройств.
И тут уже гораздо проще один раз подключить ST-Link и прошить загрузчик, а впоследствии просто скидывать новую версию основной программы на флешку и втыкать ее в готовое устройство, где перепрошивкой займется bootloader, чем по сто раз бегать от одной платы к другой, втыкать ST-Link, при этом перенося с собой ноутбук с ST-Link Utility 🙂 Как видите, польза загрузчика очевидна!
Вторая ситуация еще лучше это демонстрирует. Устройство уже выпущено и куча экземпляров распродана пользователям. Как бы хороша не была финальная версия программы никто не застрахован от неожиданного появления ошибок в процессе эксплуатации. И тут уже человек, купивший устройство, точно не сможет разобрать его, чтобы выполнить перепрошивку через программатор. То есть программу обновить просто нереально. Совсем другое дело, если изготовители предусмотрели встроенный bootloader. Пользователь может без проблем скинуть на карту памяти или на флешку скачанный бинарник и подключить карту/флешку к устройству. Изготовителю остается только выкладывать новые версии прошивок на своем сайте!
В этом на самом деле кроется куча возможностей — изготовитель устройств может спокойно выпустить девайс на рынок с базовой прошивкой, которая реализует все нужные функции, но не содержит всяких приятных графических вещей или возможности подключения к ПК (зависит от того, что это за устройство). Производителю не нужно ломать голову над тем, чтобы выпустить с первого раза идеальную прошивку, в которой будет реализовано абсолютно все, что только можно, ведь он знает что встроенный bootloader без проблем поможет пользователю в будущем обновить программу.
В общем, о пользе и применениях загрузчика можно говорить очень и очень долго 🙂 Помимо упомянутых возможностей обновления прошивки при помощи флешки или карты памяти, bootloader может использовать какой-нибудь из интерфейсов передачи данных, например SPI, I2C или USART.
В общем-то, вроде бы мы разобрались с теоретической частью, посвященной использованию bootloader’а, но давайте еще один момент обсудим в этой статье — а именно аппаратный загрузчик микроконтроллеров STM32.
В STM32 уже есть bootloader, который инженеры ST поместили в специально отведенную область памяти микроконтроллера (System Memory). Удалить его оттуда нельзя, да и незачем 🙂 Для того, чтобы ввести контроллер в режим загрузчика необходимо подать определенные сигналы на ножки BOOT0 и BOOT1. После этого микроконтроллер готов принимать по USART новую прошивку. Для этого необходимо подключить плату к ПК, скачать специальную софтинку от ST — Flash Loader Demonstrator и загрузить в нее свой файл прошивки.
Я, честно говоря, аппаратным загрузчиком предпочитаю не пользоваться по нескольким причинам.
Во-первых, прошивка никак не шифруется, что для коммерческих устройств зачастую недопустимо. Если я использую свой собственный bootloader, то я могу сделать с bin-файлом все, что угодно, например, поменять определенные байты местами. Если такой файл попадет в руки конкурентов, то это ничего не даст, поскольку только мой bootloader знает как расшифровать бинарник. При использовании аппаратного botloader’а такое невозможно — Flash Loader Demonstrator принимает bin-файл в исходном виде, то есть все байты в нем не зашифрованы.
Во-вторых, пользователю будет необходимо подключать свою плату к ПК и скачивать дополнительный софт для перепрошивки устройства, и это не очень хорошо. Чем проще устройство в использовании, тем лучше! Но есть и плюсы аппаратного bootloader’а — он не занимает flash-память. При использовании своего загрузчика нужно иметь ввиду, что и загрузчик и основная программа должны поместиться в памяти. С аппаратным bootloader’ом такой проблемы нет — он расположен в специальной области, использовать которую программист не может.
Давайте на этом на сегодня и закончим, не пропустите статью, посвященную практической реализации загрузчика!