Reboot to Bootloader что это такое на Android? Что такое bootloader, его разблокировка, и зачем мне это нужно

Приветствую всех на нашем сайте и сегодня мы после небольшого перерыва вернемся к теме микроконтроллеров. А если быть совсем точным, то мы начинаем обсуждать одну очень интересную и важную тему, а именно использование bootloader’а (загрузчика) при программировании контроллеров. Сегодня мы разберем теоретическую часть – зачем нужен, как он работает и что это вообще такое. Следующая статья будет посвящена целиком и полностью практике. Забегая вперед скажу, что мы напишем свой для любимых микроконтроллеров STM32 😉

Итак, простыми словами, – это специальная программа, которая располагается в памяти микроконтроллера и может самостоятельно перепрограммировать его. Давайте для лучшего понимания процесса посмотрим как вообще выполняется программа, прошитая в микроконтроллер, и где она располагается.

Как вы помните из статьи, посвященной Flash-памяти микроконтроллеров STM32 , основная пользовательская программа начинается с первой страницы памяти, а точнее с адреса 0х08000000 . То есть при подаче питания контроллер сразу же убегает по этому адресу)

При использовании загрузчика все выглядит несколько иначе. Основная программа записывается уже по другим адресам и располагается начиная, например, с адреса 0х0800A000 . А область памяти (0х08000000 0х0800А000 ) целиком и полностью отдается bootloader’у . В итоге в flash-памяти контроллера у нас как бы находятся две полноценные программы. При включении устройства управление получает (поскольку он находится в области, начинающейся со “стартового” адреса 0х08000000 ), а при дальнейшей работе , выполнив все свои задачи передает управление нашей основной программе, которая располагается по адресу 0х0800А000 (этот адрес мы взяли для примера). Вот небольшая схемка для демонстрации работы загрузчика:

Вроде бы понятно как устроено, но возникает вопрос – зачем все это надо?

Давайте разбираться…

Первостепенной задачей bootloader’а является программирование микроконтроллера. Он не просто выполняет какие-то действия, а затем передает управление основной программе (переходит на адрес, который соответствует началу основной программы), он, в первую очередь, самостоятельно записывает эту основную программу в flash-память по нужным адресам.

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

Небольшое отступление от основной темы… Поясню, что я тут имею ввиду под “файлом программы”.

Когда мы создаем проект (Keil, IAR – без разницы), то на выходе (после сборки проекта) мы получаем скомпилированный файл для прошивки в микроконтроллер. Чаще всего мы использовали .hex файл программы. Так вот именно этот файл нам и нужен в данном случае. Но именно hex-файл не совсем подходит для наших целей, поскольку помимо кода нашей программы он несет в себе дополнительную служебную информацию. Чтобы ее не обрабатывать и не вытаскивать из hex-файла нужный нам код, который bootloader должен записать во flash, мы в настройках компилятора во вкладке Output попросим его генерировать нам вместо hex-файла bin-файл . Бинарник, в отличие от hex , содержит в себе только последовательный код программы и ничего больше. То есть bootloader’у остается только читать байты из bin-файла и записывать их во flash-память. То есть в нашем примере задачей загрузчика является чтение байт из файла на карте памяти и запись их по адресам, начиная с 0х0800A000 . Вот псевдокод для наглядности:

Конечно, это сильно упрощенная версия загрузчика 😉 Тут мы в вечном цикле пытаемся открыть файл с программой, как только это нам удается (пользователь записал на карту долгожданный файл) программирует flash-память и перескакивает на адрес записанной им же программы. После этого контроллер начинает выполнять пользовательскую программу. Еще раз повторюсь, это всего лишь псевдокод для примера, нормальный, работающий мы обязательно напишем в следующей статье)

Все это, конечно, очень интересно, но по-прежнему, непонятно, зачем нужны все эти сложности….

С этим на самом деле все просто – вот, например, первая ситуация – есть огромное количество устройств, на заводе работники прошили в каждый контроллер (например, при помощи ST-Link) на каждой плате , который при подключении к плате флэшки (в заранее предусмотренный разъем) ищет на ней файл прошивки и выполняет программирование. Основную программу, конечно же, тоже можно прошить вместе с bootloader’ом через ST-Link. Но тонкость тут в том, что проект bootloader’а остается всегда неизменным и перепрошивать его не надо, а вот версия основной программы может обновляться кучу раз в процессе тестирования устройств. И тут уже гораздо проще один раз подключить ST-Link и прошить загрузчик, а впоследствии просто скидывать новую версию основной программы на флэшку и втыкать ее в готовое устройство, где перепрошивкой займется , чем по сто раз бегать от одной платы к другой, втыкать ST-Link, при этом перенося с собой ноутбук с ST-Link Utility… Как видите, польза загрузчика очевидна 😉

Вторая ситуация еще лучше это демонстрирует. Устройство уже выпущено и куча экземпляров распродана пользователям. Как бы хороша не была финальная версия программы никто не застрахован от неожиданного появления ошибок в процессе эксплуатации. И тут уже человек, купивший устройство, точно не сможет разобрать его и подпаяться, чтобы выполнить перепрошивку через программатор. То есть программу обновить просто нереально. Совсем другое дело, если изготовители предусмотрели встроенный bootloader. Пользователь может без проблем скинуть на карту памяти или на флэшку скачанный бинарник и подключить карту/флэшку к устройству. Изготовителю остается только выкладывать новые версии прошивок на своем сайте =) В этом на самом деле кроется куча возможностей – изготовитель устройств может спокойно выпустить девайс на рынок с базовой прошивкой, которая реализует все нужные функции, но не содержит всяких приятных графических вещей или возможности подключения к ПК (зависит от того, что это за устройство). Производителю не нужно ломать голову над тем, чтобы выпустить с первого раза идеальную прошивку, в которой будет реализовано абсолютно все, что только можно, ведь он знает что встроенный без проблем поможет пользователю в будущем обновить программу.

В общем, о пользе и применениях загрузчика можно говорить очень и очень долго…;) Помимо упомянутых возможностей обновления прошивки при помощи флэшки или карты памяти, может использовать какой-нибудь из интерфейсов передачи данных, например SPI, I2C или USART.

В общем-то, вроде бы мы разобрались с теоретической частью, посвященной использованию bootloader’а , но давайте еще один момент обсудим в этой статье – а именно аппаратный загрузчик микроконтроллеров STM32.

У STM32 уже есть , который инженеры ST поместили в специально отведенную область памяти микроконтроллера (System Memory ). Удалить его оттуда нельзя, да и незачем =) Для того, чтобы ввести контроллер в режим загрузчика необходимо подать определенные сигналы на ножки BOOT0 и BOOT1. После этого микроконтроллер готов принимать по USART новую прошивку. Для этого необходимо подключить плату к ПК, скачать специальную софтинку от ST – Flash Loader Demonstrator и загрузить в нее свой файл прошивки.

Я, честно говоря, аппаратным загрузчиком предпочитаю не пользоваться по нескольким причинам. Во-первых, прошивка никак не шифруется, что для коммерческих устройств зачастую недопустимо. Если я использую свой собственный , то я могу сделать с bin-файлом все, что угодно, например, поменять определенные байты местами. Если такой файл попадет в руки конкурентов, то это ничего не даст, поскольку только мой знает как расшифровать бинарник. При использовании аппаратного botloader’а такое невозможно – Flash Loader Demonstrator принимает bin-файл в исходном виде, то есть все байты в нем не зашифрованы. Во-вторых, пользователю будет необходимо подключать свою плату к ПК и скачивать дополнительный софт для перепрошивки устройства, и это не очень хорошо. Чем проще устройство в использовании, тем лучше 😉 Но есть и плюсы аппаратного bootloader’а – он не занимает flash-память. При использовании своего загрузчика нужно иметь ввиду, что и загрузчик и основная программа должны поместиться в flash-памяти. С аппаратным bootloader’ом такой проблемы нет – он расположен в специальной области памяти, использовать которую программист не может.

Давайте на этом на сегодня и закончим, не пропустите статью, посвященную практической реализации загрузчика!

В данной статье приводится пошаговая инструкция, которая поможет даже неопытному пользователю успешно разблокировать загрузчика bootloader и установить кастомный recovery Cyanogen Mod .

Ваши данные подлежат удалению. Если вам необходимо сохранить важную информацию – рекомендуем сделать бэкап. Все ваши действия вы совершаете на собственный страх и риск. Отметим, что автор не несет ответственности за «окирпичивание» смартфона пользователя.

Готовимся к установке

1. Качаем и устанавливаем драйвера. Сделать это можно, перейдя по нашей ссылке ниже.

2. Распаковываем архив в любом месте на жестком диске.
3. Отключаем телефон.
4. Запускаем телефон в режиме fastboot, для чего следует нажать «громкость -», и, удерживая ее, нажать «Power».
5. На ПК отобразится сообщение об обнаружении нового устройства.
6. Зайти в диспетчер устройств (путь: Панель управления – Система – Диспетчер устройств).
7. Найти неизвестное устройство, которое обычно обозначается в виде желтого треугольника с восклицательным знаком.
8. Дважды щелкнуть по нему.
9. В окне, которое появилось, надо нажать: Обновить драйвер – Выполнить поиск драйвера на этом ПК – Выбрать драйвера из перечня установленных драйверов – Установить с диска – Выбрать папку, куда были распакованы драйвера – Поставить флажок на «Поиск в подпапках» - завершить установку драйверов.
10. Устройство полностью готово к дальнейшим манипуляциям.
11. Скачать ADB и Fastboot согласно разрядности операционной системы: для x32/86 или x64. Распаковать архив в выбранную вами папку. Надо, чтобы путь не содержал русских букв (кириллицы) и цифр. Я, к примеру, распаковываю папку в d:\ADB.

12. Скачать кастомный Recovery: CWM и кинуть *.img файл в ту же папку, что ADB.

Разлочка Bootloader

Сначала следует произвести разлочку Bootloader на смартфоне. С этой целью необходимо подключить смартфон к ПК и перевести его в fastboot-режим. Чтобы перевести вданный режим, надо отключить телефон и в ходе выключения нажать и удерживать две кнопки: «Громкость –» и «Power». В Fastboot-режиме на дисплее смартфона появится зеленый робот, у которого вскрыт живот.

Далее вам предстоит запустить командную строчку: пуск – в строчке «выполнить» написать «cmd» (без кавычек) – сверху должно появиться «cmd.exe» - кликнуть правой кнопкой мыши «cmd.exe» - Запуск с правами администратора.

После этого заходим в папку, в которой находится ADB (в моем случае она расположена на пути d:\ADB):сначала я ввожу «d» (кавычки вводить не нужно) и нажимаю Enter – ввожу «cd ADB» и снова нажимаю Enter. Окно командной строки теперь выглядит так:

С целью разлокировки Bootloader надо ввести такую команду:

fastboot oem unlock

Принимаем разблокировку путем нажатия кнопки «Громкость +» и подтверждаем действие нажатием кнопки «power».

Итак, Bootloader разблокирован. Теперь перезагружаемся в систему. Смартфон введет необходимые изменения, загрузится,после чего следует осуществить первичную настройку от Гугл (я многое пропускаю, так как телефон еще разбудет перешит). Дальше – запуск fastboot и установка кастомного Recovery.

Теперь устанавливаем кастомный Recovery. С этой целью надо ввести в командную строку команду

fastboot flash recovery ***

– это, по сути, тот же компьютер, который и работает по похожим принципам. При включении у него также сначала стартует специальная программа, подобная компьютерному BIOS-у и происходит опрос имеющихся устройств. Лишь после этого запускается собственно операционная система, всю красоту которой мы видим на экране. На компьютере мы можем при старте компьютера нажать клавишу Delete или F2 и попасть в настройки BIOS , а уж там при желании можно много чего сделать. Но возможно ли это на смартфоне? Да, на большинстве устройств можно зайти в эти настройки до старта операционной системы, и сделать это очень просто.

Использование функции Reboot to Bootloader на устройствах Android.

Что такое Reboot to Bootloader на устройстве с Android

В переводе с английского «bootloader» означает «загрузчик». Эта важнейшая часть программного обеспечения любого смартфона или планшета запускает ядро операционной системы и другие важные программы. Этот загрузчик срабатывает сразу после того, как вы включаете свой телефон, и он прошел этап тестирования. Работа его не видна, но очень важна. Слово «reboot» означает «перезагрузка». Что такое «reboot to bootloader» для Android в таком случае? Это значит промежуточный этап между стартом устройства и запуском загрузчика. Именно в этой точке вы находитесь, когда заходите в BIOS компьютера – он уже прошёл этап тестирования и вполне работает, но операционная система еще не запускалась. В смартфоне или планшете на базе Android тоже есть возможность войти в меню Reboot to Bootloader – эта функция так и называется. Для этого нужно выключить устройство, а затем включить его, удерживая одновременно кнопки включения и уменьшения громкости. На устройствах Samsung вместо громкости можно удерживать кнопку Home. На некоторых аппаратах эта функция заблокирована и войти в меню не получится. Используя возможности этой функции, вы действуете на свой страх и риск. Так можно безвозвратно испортить своё устройство!

Чем может быть полезна функция Reboot to Bootloader

После запуска этой функции вы увидите меню, которое на разных устройствах может отличаться. Все надписи в нём на английском языке. Управление осуществляется кнопками регулировки громкости – для перемещения по пунктам вверх и вниз, кнопкой Home для выбора пункта и боковыми кнопками, если около них есть варианты выбора. В меню обычно есть пункты, где можно посмотреть детальную информацию по имеющимся устройствам, протестировать их работу или работу всей системы. Также здесь можно разблокировать загрузчик, исправить программные ошибки, и даже загрузить другую прошивку. Обычно, чтобы получить Root-права , устанавливают какую-нибудь стороннюю программу, но она не гарантирует результата. Получить эти права можно, просто разблокировав загрузчик. Также появляется возможность отладить приложения и деинсталлировать даже неудаляемые обычными средствами – под ними могут скрываться некоторые вирусы. Можно очистить кэш – скопление множества «мусорных» файлов, которые постоянно накапливаются при работе системы. Иногда это помогает, когда устройство работает со сбоями и часто «глючит». Наконец, в этом меню есть возможность откатить устройство к заводским настройкам и вернуть ему былую стабильность и работоспособность.

В это меню нельзя заходить без специальных знаний – есть риск превратить устройство в «кирпич». К тому же, вся информация там на английском языке, поэтому обязательно надо ориентироваться в том, что написано.

  • Неправильные действия могут привести к появлению разных ошибок в операционной системе. Удаление важных компонентов может привести к тому, что она вовсе не сможет загрузиться.
  • Есть опасность повреждения данных, хранящихся на устройстве, не только на флешке, но и в основной памяти. Поэтому предварительно нужно сохранить важные файлы на другой носитель, например, скопировать на компьютер.

Всё это означает, что использовать функцию Reboot to Bootloader может только лишь человек, обладающий нужными навыками и знаниями, а не обычный пользователь.

Что такое bootloader, его разблокировка, и зачем мне это нужно?

Каждый телефон, работающий под OS Android, имеет bootloader (загрузчик), который инструктирует ядро операционной системы для загрузки в нормальном режиме. У каждого устройства своя версия bootloader. Загрузчик обычно блокируется на устройствах Android, поскольку производители хотят, чтобы вы придерживались версий Android, специально предназначенных для их оборудований.

Если вы хотите установить модифицированную версию OS (Custom ROM), вам необходимо разблокировать загрузчик. Говоря на языке человека обычного: разблокировка загрузчика позволит устанавливать измененные прошивки, с разнообразными «вкусностями» на ваш телефон Android.

Начнем, пожалуй, с всемирно известного бренда HTC. В 90% случаев этот способ срабатывает, остальные 10% отведем на проблемы программного характера, подделки китайских умельцев, а также модели, в которых отсутствует визуальная часть загрузчика, вообще конечно он есть, но скрыт от глаз.

Первый шаг , регистрация http://htcdev.com/ . Скачиваем драйвера ADB с нашего сайта, программу HTC Sync с официального сайта http://www.htc.com/ua в ней будут все необходимые драйвера на ваше устройство. Возможно, вам также понадобится Java http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Шаг второй , создаём в корне диска С папку и даем ей имя Android. В эту папку распаковываем : adb.exe, AdbWinApi.dll, fastboot.exe. HTC Sync можно удалить, а можете и отключить в системе, чтобы не мешала при подключении устройства к компьютеру.

Шаг третий , переводим телефон в режим bootloader (загрузчик). Вариант первый, если телефон со съёмной батареей, вынимаем акб, вставляем, зажимаем качельку громкости (-) и питание. Держим пока телефон не перегрузится в вышеупомянутое состояние bootloader. Выглядит он вот так.

Вариант второй , для пользователей более продвинутых, телефон включен, стоит разрешение на функции «отладка по usb разрешена» работаем через командную строку Пуск -> Выполнить и введите имя программы cmd.exe. Появится окно

После вводим команду CD C:\Android жмем Enter получаем ответ C:\Android>. Дальше вводим команду adb devices, ответ должен быть:

List of devices attached HC413MW00787 device

Команда вводится для проверки соединения с ПК, если серийник определился значит все ок, и продолжаем дальше. Если нет, тогда проверяем «отладка по usb разрешена» а также установлены ли драйвера ADB. Следующая команда переводит телефон в нужный нам режим: adb reboot-bootloader жмем enter,


Теперь обращаем внимание на телефон, должно быть так как на первом изображении.

Преступим к разблокировке, все происходит с помощью консоли, нужных команд сайта https://www.htcdev.com/ а также вашей электронной почты которая использована при регистрации.

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


Если вашей модели нет в списке выбираем то что обведено, иначе ищем свою. Я, к примеру, всегда выбираю этот пункт не зависимо, работает. После нажимаем зеленую кнопку с продолжением, получаем вот такое:


Ставим две «птички» нажимаем на кнопку Proceed to Unlock Instructions.


В этом окне есть инструкция при подготовке, она на английском, мы ее пропускаем. Прокручиваем страницу вниз и переходим к пятому шагу. Далее следует продолжение инструкции. Прокручиваем к самому низу:

В это пустое окно мы будем вставлять информацию полученную для разблокировки.

Для этого возвращаемся к консоли, и вводим команду fastboot oem get_identifier_token жмем enter

На выходе получаем:


То, что обведено красным необходимо выделить, скопировать и вставить в то пустое окно на изображении выше. Нажать на кнопку Submit. Как скопировать и вставить? Нажатием правой кнопкой мышки, получаем меню, в котором выбираем пометить, выделяем нужную нам площадь. Нажимаем Enter. В консоли для того чтобы скопировать нужные значения используется именно enter

Загрузчик (bootloader, Hboot) – это программа, которая контролирует ядро операционной системы вашего девайса, что бы он загружлся в нормальном режиме. Причем это касается не только Android, но и других устройств имеющих ОС, например ПК, ноутбук и даже старый кнопочный телефон. Кроме того, именно загрузчик дает разрешение на установку каких-либо программ и прошивок. По этой причине пользователей интересует заводская разблокировка загрузчика на андроид телефоне.

Hboot активируется при включении устройства, и представляет собой аналог Bios в компьютере. Он подготавливает все данные для ядра, загружает его в память, после чего происходит непосредственный запуск системы. Если же её целостность нарушена или что-то мешает, благодаря загрузчику можно попасть в режим восстановления, что бы очистить данные, или произвести сброс до заводских установок. Для этого перед включением устройства, зажмите клавиши питания и понижения громкости, и не отпускайте их до момента загрузки (в некоторых случаях комбинация кнопок может отличаться).

Почему загрузчик заблокирован

Производители осуществляют блокировку по двум причинам:

1. Обязать владельца использовать ту операционную систему, которая была разработана для его устройства.

2. Обеспечения безопасности. Многие смартфоны и планшеты продаются через интернет или розничную сеть. И в том и другом случае, продавец или посредник может по своему усмотрению добавить софт рекламного или вредоносного характера, которого быть не должно. По этой же причине компания Xiaomi стала блокировать bootloader устройств, выпущенных после 2016 года, из-за многочисленных жалоб на наличие вирусов в их прошивке (которых изначально не было).

Преимущества разблокированного загрузчика

Разблокированный bootloader открывает перед пользователем ровно те же возможности, что и на ПК, а именно:

  1. Прошить любую операционную систему (доступную для вашего устройства).
  2. Установка отдельных модулей, ядер ОС, приложений, патчей.
  3. Свободно мигрировать между стандартными прошивками, особенно если они основаны на разной версии Android.
  4. Без особого труда создавать резервные копии текущей ОС и\или приложений, а также восстанавливать их без использования ПК.
  5. Использовать Dual-Boot и устанавливать две и боле операционные системы, как во внутреннюю память, так и на внешнюю SD карту.
  6. Шире возможности восстановления, в случае неудачной прошивки.

И это далеко не весь список возможностей после заводской разблокировки андроид.

Как снять блокировку

Каждое устройство имеет собственную версию загрузчика, а значит, способ разблокировки будет отличаться, в зависимости от модели и фирмы производителя. При подаче заявления блокировку может снять сама компания (особенно если вы разработчик Android), но чаще всего, это происходит путем взлома, найденных ранее уязвимостей в системе.

Риски и последствия

Самовольная разблокировка загрузчика, лишает вас гарантийного обслуживания. Кроме того, ваше устройство становится менее безопасным и уязвимым к хакерским атакам. Открытый bootloader позволяет обойти установленные пароли, получить доступ к личной информации или стереть всё и поставить другую прошивку.


Вывод

Сильно переживать из-за проблем с загрузчиком не стоит, особенно когда речь касается личной информации. В найденных или похищенных устройствах чаще всего стирают данные, и редко кто будет что-то восстанавливать. Открытый bootloader больше нужен продвинутым пользователям, которые знают, что с этим делать, регулярно что-то прошивают и экспериментируют.

Оставляйте ваши вопросы в комментариях к статье ниже – мы постараемся ответить.

Статья была Вам полезна?

Поставьте оценку - поддержите проект!