Пишем свой bootloader / Хабр

fastboot stretch Новости
Содержание
  1. Что такое bootloader и зачем разблокировать загрузчик на xiaomi
  2. И так, какой язык вы должны знать, чтобы написать boot loader
  3. Введение
  4. Шаги, чтобы разблокировать загрузчик без пк для android
  5. Bios прерывания и очистка экрана
  6. Cdisplay — реализация
  7. Startpoint.asm — реализация
  8. Архитектура программы
  9. Бутлоадер фирмы chip45
  10. Загрузка и подготовка необходимых файлов
  11. Как заблокировать загрузчик xiaomi: популярные причины блокировки bootloader
  12. Как разблокировать загрузчик bootloader и установить кастомный recovery (инструкция)
  13. Какой компилятор вам нужен
  14. Необходимые условия для разблокировки загрузчика устройств android
  15. Перезагрузка девайса в режим bootloader
  16. Преимущества разблокированного загрузчика
  17. Работа с disk explorer для ntfs
  18. Риски и последствия
  19. Рутирование вашего android устройства без использования пк
  20. Создание виртуальной машины
  21. Способы восстановления через стандартное приложение recovery
  22. Установка zip-пакетов
  23. Электроника для всех
  24. Узнайте больше о Huawei

Что такое bootloader и зачем разблокировать загрузчик на xiaomi

Упрощенно говоря, загрузчик – это специальная программа, запускаемая в процессе включения телефона еще до момента загрузки ОС. Именно Bootloader отвечает за порядок выполнения и активацию системных операций (например, за загрузку операционной системы), а также обеспечивает возможность перехода в системные меню (в том числе в режим восстановления).

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

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

Если необходимая прошивка создана сторонним разработчиком или заточена под другую версию смартфона, то без разблокировки загрузчика поставить такую прошивку не получится. А ведь установка модифицированной (кастомной) прошивки зачастую открывает доступ к целому ряду ранее скрытых дополнительных опций, благодаря которым можно оптимизировать функционал, повысить производительность и даже увеличить автономность работы смартфона.

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

В некоторых случаях стремление разблокировать загрузчик Xiaomi объясняется банальной необходимостью, ведь некоторые компании продают китайские версии телефонов под видом европейских аналогов (читайте об отличиях глобальной и китайской версий Xiaomi).

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

И так, какой язык вы должны знать, чтобы написать boot loader

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

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

Если вы знаете Java или C#, то к сожалению это не поможет для нашей задачи. Дело в том, что код Java и C#, который производится после компиляции является промежуточным. Специальная виртуальная машина используется, для последующей обработки(Java машину для Java и .NET для C#), преобразовывая промежуточный код в инструкции для процессора.

И так, для разработки простого загрузчика вы должны знать, C или C , а также было бы не плохо если вы знаете немного Ассемблера.

Введение

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

SPI

, I2C или RS-232. Однако существуют и загрузчики, основанные на программной реализации таких интерфейсов как USB и

1-Wire

.

Для микроконтроллеров AVR существует несметное количество готовых бутлоадеров, и в большинстве случае мы можем спокойно использовать их в своих устройствах, не утруждая себя написанием собственного загрузчика.  В этой статье мы рассмотрим один из таких бутлоадеров, который разработан и свободно распространяется фирмой Chip45, и разберемся как его использовать.

Шаги, чтобы разблокировать загрузчик без пк для android

Теперь, когда вы рутировали свое устройство, вы можете использовать определенный приложения для установки кастомного рекавери. И как только вы установите собственное рекавери на ваше устройство Android, загрузчик разблокируется.

Flashify – одно из лучших приложений для установки пользовательского восстановления на Android через root. Это позволяет прошивать любой файл изображения в вашем устройстве Android, используя root-доступ.

Не только это, но он может даже загрузить последнюю версию TWRP и прошить ее. Чтобы использовать это приложение для разблокировки загрузчика вашего устройства Android, следуйте инструкциям инструкции нижеприведенный:

Шаг 1:

Перейти к Google Play Store на вашем устройстве Android или посетите этот ссылка на скачивание и установите приложение Flashify на свое устройство.

Шаг 2:

После этого откройте это приложение на своем устройстве и разрешите все необходимые разрешения.

Шаг 3:

Как только это будет сделано, выберите опцию Recovery, которая откроет небольшое всплывающее окно.

Шаг 4:

Здесь выберите «Загрузить TWRP» и выберите свое устройство Android из списка устройств.

Шаг 5:

Наконец, следуйте инструкциям на экране, после чего на вашем устройстве будет установлено собственное восстановление TWRP. И загрузчик вашего устройства Android будет успешно разблокирован без использования ПК. Теперь вы можете установить любые пользовательские ПЗУ, восстановлениеили другие моды на вашем устройстве Android без каких-либо проблем.

Bios прерывания и очистка экрана


Чтобы вывести сообщение на экране, мы должны очистить его для начала. Мы будем использовать специальные BIOS прерывания для этой цели.

BIOS предлагает ряд прерываний для работы с железом, таким как видеокарта, клавиатура, системный диск. Каждое прерывание имеет следующую структуру:

int [number_of_interrupt];

Где «number_of_interrupt» является числом прерывания.

Каждое прерывание имеет некоторое количество параметров, которые должны быть установлены до его вызова. Регистр процессора — ah, всегда несет ответственность за количество функций для текущего прерывания, и другие регистры обычно используются для других параметров текущей операции.


mov al, 02h; настройка графического режима 80x25 (текст) 
mov ah, 00h; код функции изменения видео режима
int 10h; вызов прерывания

Мы будем рассматривать только те прерывания и функции, которые будут использоваться в нашем приложении. Нам понадобится:

int 10h, function 00h – выполняет меняет видео режим и очищает экран; 
int 10h, function 01h – устанавливает тип курсора; 
int 10h, function 13h – показывает строку на экране;

Cdisplay — реализация

  // CDisplay.h

#ifndef __CDISPLAY__
#define __CDISPLAY__

//
// colors for TextOut func
//

#define BLACK			0x0
#define BLUE			0x1
#define GREEN			0x2
#define CYAN			0x3
#define RED			0x4
#define MAGENTA		0x5
#define BROWN			0x6
#define GREY			0x7
#define DARK_GREY		0x8
#define LIGHT_BLUE		0x9
#define LIGHT_GREEN		0xA
#define LIGHT_CYAN		0xB
#define LIGHT_RED	                0xC
#define LIGHT_MAGENTA   	0xD
#define LIGHT_BROWN		0xE
#define WHITE			0xF

#include "Types.h"
#include "CString.h"

class CDisplay
{
    public:
    static void ClearScreen();

    static void TextOut(
        const char far* inStrSource,
        byte            inX = 0,
        byte            inY = 0,
        byte            inBackgroundColor   = BLACK,
        byte            inTextColor         = WHITE,
        bool            inUpdateCursor      = false
    );

    static void ShowCursor(
        bool inMode
    );
};

#endif // __CDISPLAY__

// CDisplay.cpp

#include "CDisplay.h"

void CDisplay::TextOut( 
        const char far* inStrSource, 
        byte            inX, 
        byte            inY,  
        byte            inBackgroundColor, 
        byte            inTextColor,
        bool            inUpdateCursor
        )
{
    byte textAttribute = ((inTextColor) | (inBackgroundColor << 4));
    byte lengthOfString = CString::Strlen(inStrSource);

    __asm

    {		
        push    bp
        mov     al, inUpdateCursor
        xor	     bh, bh	
        mov     bl, textAttribute
        xor	     cx, cx
        mov     cl, lengthOfString
        mov     dh, inY
        mov     dl, inX  
        mov     es, word ptr[inStrSource   2]
        mov     bp, word ptr[inStrSource]
        mov     ah, 13h
        int	     10h
        pop	     bp
    }
}
void CDisplay::ClearScreen()
{
    __asm

    {
        mov  al, 02h
        mov  ah, 00h
        int     10h
    } 
}

void CDisplay::ShowCursor(
        bool inMode
        )
                                 
{
    byte flag = inMode ? 0 : 0x32;

    __asm
    {
        mov     ch, flag
        mov     cl, 0Ah
        mov     ah, 01h
        int     10h
    }
}

Startpoint.asm — реализация

;------------------------------------------------------------
.286							   ; CPU type
;------------------------------------------------------------
.model TINY						   ; memory of model
;---------------------- EXTERNS -----------------------------
extrn				_BootMain:near	   ; prototype of C func
;------------------------------------------------------------
;------------------------------------------------------------   
.code   
org				07c00h		   ; for BootSector
main:
				jmp short start	   ; go to main
				nop
						
;----------------------- CODE SEGMENT -----------------------
start:	
        cli
        mov ax,cs               ; Setup segment registers
        mov ds,ax               ; Make DS correct
        mov es,ax               ; Make ES correct
        mov ss,ax               ; Make SS correct        
        mov bp,7c00h
        mov sp,7c00h            ; Setup a stack
        sti
                                ; start the program 
        call           _BootMain
        ret
        
        END main                ; End of program

Архитектура программы

Мы разрабатываем загрузчик для себя. Его задачами являются только следующие:

  1. Правильная загрузка в память по адресу 0000:7 C00.
  2. Вызов BootMain функции, которую мы написали в языке высокого уровня.
  3. Вывести на дисплей фразу — ”Hello, world…”, from low-level.

Архитектура программы.

Первый объект это StartPoint, который написан исключительно в ассемблере, поскольку в языках высокого уровня нет необходимых нам инструкции. Это говорит компилятору, какой тип памяти должен использоваться, и адрес команды в RAM, которая должна выполняться после его чтения. Он также исправляет регистры процессора и передает управление функции BootMain, которая написано на языке высокого уровня.

Следующий объект- BootMain — является аналогом main, что, в свою очередь является основной функцией в которой сконцентрированы все функции программы.

Классы CDisplay и CString заботиться о функциональной части программы и выводит сообщение на экран. Как вы можете видеть на предыдущей картинки, класс CDisplay использует класс CString в своей работе.

Бутлоадер фирмы chip45

2. Простая и удобная графическая оболочка для работы с загрузчиком, а также наличие ее портов под несколько операционных систем (Windows, Linux, Mac OS X).

3. Простой командный интерфейс для работы через терминальные программы.

4. Использование для обмена данными UART модуля, что позволяет загружать прошивку в микроконтроллер по RS-232 или USB, в случае использования USB-UART преобразователя.

5. Поддержка интерфейса RS-485.

6. Возможность чтения/записи EEPROM памяти.

7. Автоматическая установка скорости обмена UART`a с хостом независимо от тактовой частоты микроконтроллера.

8. Дополнительные возможности по активации загрузчика, путем отправки произвольной строки.

9. Требуемый размер загрузочной секции – 1024 слова (2 Kб flash памяти)

Запись загрузчика в микроконтроллер состоит из следующих шагов:

– устанавливаем размер загрузочной секции равной 1024-м словам,
– устанавливаем конфигурационный бит BOOTRST,
– запрещаем деление тактовой частоты, если есть бит CLKDIV8,
– запрещаем работу сторожевого таймера, если он включен битом WDTON,
– выбираем подходящую под наш микроконтроллер прошивку,
– записываем ее в микроконтроллер с помощью любого программатора.

Основную сложность у новичков здесь может вызвать правильная установка конфигурационных битов. С ними часто происходит путаница, потому что некоторые программаторы воспринимают 1 в конфигурационном бите, как незапрограммированное состояние, 0 – как запрограммированное, а некоторые наоборот. Первый вариант соответствует datasheet`ам микроконтроллеров AVR (смотрите картинку выше).

   Единственно, могу вас успокоить – неправильная установка этих битов не заблокирует возможность программирования микроконтроллера обычным программатором.

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

– запускаем программу Chip45boot2 GUI (она должна быть установлена),

– устанавливаем нужный COM порт и скорость обмена,

– выбираем hex файл для загрузки в микроконтроллер,

– нажимаем кнопку “Connect to Bootloader”,

– сбрасываем микроконтроллер,

– если в программе загорелся индикатор успешного коннекта, записываем в микроконтроллер прошивку, нажав на кнопку “Program Flash”,

– запускаем приложение, нажав кнопку “Start Application”

  Программа Chip45boot2 GUI также позволяет активировать загрузчик путем отправки произвольной строки. Конечно, для этого в микроконтроллере уже должна быть  прошивка, поддерживающая такую возможность. 

   Это может быть удобно, если устройство на микроконтроллере не имеет доступной кнопки сброса, ну, например, оно намертво закрыто в корпусе. 

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

Загрузка и подготовка необходимых файлов

Fastboot и ADB являются взаимодополняющими друг друга инструментами из состава Android SDK. Загружаем инструментарий полностью или скачиваем отдельный пакет, содержащий только АДБ и Фастбут. Затем распаковываем полученный архив в отдельную папку на диске С.

Через Fastboot возможна запись как отдельных разделов памяти Андроид-девайса, так и прошивок-обновлений целым пакетом. В первом случае понадобятся файлы-образы в формате *.img, во втором – пакет(ы) *.zip. Все файлы, которые планируются к использованию, должны быть скопированы в папку, содержащую распакованные Fastboot и ADB.

Пакеты *.zip не распаковываем, необходимо лишь переименовать загруженный файл(ы). В принципе имя может быть любым, но не должно содержать пробелов и русских букв. Для удобства следует использовать короткие имена, к примеру update.zip.

Как заблокировать загрузчик xiaomi: популярные причины блокировки bootloader

Целесообразность блокировки загрузчика Сяоми обоснована несколькими причинами:

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

Если эти моменты для вас существенны, то лучше заблокировать загрузчик Xiaomi. Тем более сделать это можно буквально за полчаса, и далее мы расскажем, как именно нужно производить блокировку.

Важно: Все действия по блокировке загрузчика Xiaomi вы проводите сознательно – исключительно на свой страх и риск. В ближайших планах производителя числится установка программных запретов на внесение пользователями изменений в функционал телефона.

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

Как разблокировать загрузчик bootloader и установить кастомный recovery (инструкция)

В данной статье приводится пошаговая инструкция, которая поможет даже неопытному пользователю успешно разблокировать загрузчика 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 ***

здесь *** обозначают имя Recovery.

Я при установке CWM ввожу такую команду:

fastboot flash recovery recovery-clockwork-6.0.4.3-mako.img

Нажимаем Enter. Загрузка Recovery произошла.

Зайти в Recovery Mode – reboot system now.

Итак, Recovery успешно установлен!

Mobile Monitoring – удобный сервис для слежения за смартфоном на Андроид

Какой компилятор вам нужен

Чтобы использовать технологию смешанного кода, нужно по крайней мере два компилятора: для ассемблера и для C/C , а также компоновщик который объединит объектные файлы(.obj) в один исполняемый файл.

Теперь, давайте поговорим о некоторых особых моментов. Есть два режима функционирования процессора: реальный и защищенный режим. Реальный режим является 16-битным и имеет некоторые ограничения. Защищенный режим является 32-битным и полностью используется операционной системой.

Когда компьютер только начинает работу, процессор работает в 16-битном режиме. Таким образом, чтобы написать программу и получить исполняемый файл, вам понадобится компилятор и компоновщик для ассемблера для 16-битного режима. Для C/C вам потребуется только компилятор, который умеет создавать объектные файлы для 16-битного режима.

Современные компиляторы сделаны для 32-разрядных приложений, поэтому мы не сможем их использовать.

Я пробовал несколько бесплатных и коммерческих компиляторов для 16-битного режима и выбрал продукт от Microsoft. Компилятор вместе с компоновщиком для ассемблера, C и C включены в Microsoft Visual Studio 1.52, его можно скадать с официального сайта компании. Некоторые подробности о компиляторов которые нам нужны приведены ниже.

ML 6,15 — компилятор ассемблера от Microsoft для 16-битного режима.LINK 5,16 — компоновщик, который умеет создавать COM-файлы для 16-битного режима. CL — С, С компилятор для 16-битного режима.

Вы также можете использовать несколько альтернативных вариантов.

DMC — бесплатный компилятор для компиляции ассемблера, C, C для 16 и 32-битном режиме Digital Mars.LINK — бесплатный компоновщик для компилятора DMC.

Есть также некоторые продукты от Borland.

BCC 3,5 — С, С компилятор, который умеет создавать файлы для 16-битного режима.TASM — компилятор асемблера для 16-битного режима.TLINK — компоновщик, который может создавать файлы COM для 16-битного режима.

Все примеры кода в этой статьи, были разработаны с инструментами от Microsoft.

Необходимые условия для разблокировки загрузчика устройств android

Поскольку мы не используем ПК для этой процедуры, мы должны выполнить все шаги на самом устройстве Android. безопасный метод для этого будет первым, чтобы рутировать устройство Android. После этого используйте root-доступ для установки пользовательского восстановления, которое успешно разблокирует загрузчик без компьютера на вашем Android-устройстве. Из-за этого мы разделили это руководство на две важные части.

Первый корень устройства, так что вы можете использовать приложения, которые требуют root-доступа. После этого мы будем использовать конкретный приложение, которое использует root-доступ для прошивки кастомного рекавери.

Как только это будет сделано, загрузчик вашего устройства Android будет успешно разблокирован. Но прежде чем продолжить, убедитесь, что прошли следующие предпосылки Очки один за другим:

Шаг 1:

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

Шаг 2:

Отладка USB должна быть включена на вашем устройстве Android, чтобы это руководство работало успешно. Для этого сначала перейдите в раздел «О телефоне» в приложении «Настройки» вашего устройства Android.

Теперь нажмите восемь раз на строить Номер, который откроет опции разработчика. После этого перейдите в раздел «Параметры разработчика» и включите отладку по USB на своем устройстве Android.

Шаг 3:

Сделайте резервную копию всех важных данных на вашем устройстве Android на внешнем устройстве. Процесс разблокировки загрузчика обычно приводит к стиранию внутренней памяти вашего устройства Android.

Так что если вы не создаете резервное копирование, вы в конечном итоге потеряете ценные данные, которые были сохранены на вашем устройстве Android.

Должен прочитать: Скрыть приложения на Android

Перезагрузка девайса в режим bootloader

1. Чтобы устройство принимало команды, посылаемые пользователем через Фастбут, оно должно быть перезагружено в соответствующий режим. В большинстве случаев достаточно послать в девайс со включенной отладкой по USB специальную команду через adb:

adb reboot bootloader

2. Устройство перезагрузится в нужный для прошивки режим. Затем проверяем правильность подключения с помощью команды:

fastboot devices

3. Перезагрузку в режим fastboot можно также осуществить с помощью соответствующего пункта в TWRP Recovery (пункт «Fastboot» меню «Перезагрузка» («Reboot»).

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

Исключительно для примера можно рассмотреть продукцию компании Xiaomi. В этих устройствах загрузка в фастбут-режим осуществляется с помощью нажатия на выключенном аппарате кнокпки «Громкость-» и, удерживая ее, клавиши «Питание».

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

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

Получение root-прав предоставит вам очень большой набор возможностей, которые до этого были недоступны. Вы получите полный контроль на гаджетом, переделав его на собственный лад. Станет возможно:

  • Значительно облегчить работу с устройством: ставить любые скрипты, модули и прошивки.
  • Убрать навигационное меню или панель уведомлений из поля зрения.
  • Восстановить удаленные файлы.
  • Сменить надоедливые ярлыки и иконки на те, что по душе.
  • Ставить искусственные лимиты на интернет-траффик.
  • Удалить встроенные в софт приложения от производителя, которые не удаляются привычным путем.
  • Изменить скорость процессора.
  • Убрать надоедливую рекламу.
  • Установить на гаджете любую стороннюю программу, не используя магазин приложений Google Play.

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

Работа с disk explorer для ntfs

После запуска программы мы идем в наш диск (File-> Drive). В появившемся окне идем в раздел логические диски и выбираем наш созданный диск(в моем случае это Z).

Теперь мы выбираем меню пункт View как Hex команды. В это появившемся окне мы можем видеть информацию диска в 16-разрядном представлении, разделенная на сектора. Сейчас у нас только 0-ли, так как диск пуст, пока что.

Сейчас мы должны записать наш загрузчик в первый сектор. Мы устанавливаем маркер в положение 00, как это показано на предыдущей картинке. Чтобы скопировать загрузчик мы используем пункт меню Edit->Paste from file command. В открывшемся окне укажите путь к файлу и кликните Open.

Вы также должны записать подпись 55AAh по позиции 1FE от начала сектора. Если вы не сделаете это, BIOS проверит последние два байта, и не найдя указанную подписи, будет считать что этот сектор не является загрузочным и не загрузит его в память.

Для переключения в режим редактирования нажмите клавишу F2 и напишите необходимые номера — 55AAh подписи. Чтобы выйти из режима редактирования нажмите ESC.

Теперь нам нужно подтвердить записанные данные.

Чтобы применить записанное мы идем в Tools-> Options, теперь мы идем в пункт Mode и выбираем метод записывания — Virtual Write и нажмите кнопку Write.

Большую часть рутинных действий закончили, наконец, и теперь вы можете видеть, что мы разработали с самого начала этой статьи. Давайте вернемся к VwWare чтобы отключить виртуальный диск (File->Map or Disconnect Virtual Disks … and click Disconnect).

Давайте запустим виртуальную машину. Мы видим теперь, как из глубины царства машинных кодов появляются знакомые строки — «Hello World… », from low-level…”.

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

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

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

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

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

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

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

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

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

Рутирование вашего android устройства без использования пк

После того, как вы прошли весь раздел предварительных условий, вы можете продолжить впереди процесса укоренения. Как и для разблокировки загрузчика вашего Android-устройства, обычно для рутирования необходим компьютер.

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

В этой статье мы будем использовать Kingoroot приложение для устройств Android. Это приложение для smartphones что по сути корень вашего устройства в один клик. Вы можете выполнить указанные шаги один за другим, чтобы успешно рутировать устройство Android без использования ПК:

Шаг 1:

Перейдите по этой ссылке и загрузите последнюю версию Kingoroot на свое устройство Android.

Шаг 2:

После того, как APK был загружен, используйте любой файловый менеджер по вашему выбору и установите файл APK на вашем Android устройстве.

Шаг 3:

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

Шаг 4:

Наконец, запустите процесс рутирования в Kingoroot, и как только он будет завершен, перезагружать ваш смартфон, чтобы рутировать его успешно. Теперь вы можете использовать любые приложения для Android, для работы которых требуется root-доступ.

Создание виртуальной машины

Нам понадобится VmWare версия программы 5.0, 6.0 или выше. Чтобы проверить загрузчик мы создадим новую виртуальную машину с минимальным размером диска, например, 1 Gb. Отформатируйте его в файловую систему NTFS. Теперь нам нужно отобразить отформатированный жесткий диск на VmWare в качестве виртуального диска. Для этого выберите:

File->Map or Disconnect Virtual Disks…

После этого появится окно. Там вы должны нажать кнопку «Map». В следующем появившемся окне вы должны указать путь к диску. Теперь Вы также можете выбрать букву диска.

Не забудьте снять флажок «Open file in read-only mode (recommended)». После того как выполнили все выше описанные индикации диск должен быть доступен в режиме только для чтения чтобы избежать повреждения данных.

После этого мы можем работать с диском виртуальной машины, как с обычными логическим диском в ОС Windows. Теперь мы должны использовать Disk Explorer для NTFS 3,66 чтобы записать загрузочную запись с позиции 0.

Способы восстановления через стандартное приложение recovery

Восстановление Bootloader возможно через режим Recovery, так как эти программы крайне взаимосвязаны. Если портативное устройство перезапускается при включении, то стоит попробовать войти в режим внутреннего меню портативного гаджета и провести сброс до заводских настроек.

Для начала владелец устройства открывает режим Recovery. Делается это при включении смартфона или планшета. Во время запуска пользователь зажимает условленные сочетания клавиш на корпусе аппарата. Чаще попадаются следующие комбинации:

  • Кнопка уменьшения громкости и клавиша блокировки экрана.
  • Регулятор увеличения громкости звука и Power.
  • Обе кнопки регулировки громкости и блокировка экрана.
  • Клавиши «Домой» и Power.

Если сочетание кнопок выбрано верно, то на рабочем экране устройства появится опция Recovery. Остаётся только запустить восстановление в специальной вкладке — Wipe Data/Factory Reset.

После чего произойдёт полная перезагрузка системы и сброс до заводских настроек, что вернёт Bootloader в рабочее состояние.

Установка zip-пакетов

Для записи в девайс, к примеру OTA-обновлений, или полного комплекта составляющих ПО, распространяемых в формате *.zip, используется fastboot-команда:

update

1. Убеждаемся, что устройство находится в режиме фастбут и корректно определяется системой, а затем делаем очистку разделов «cache» и «data». Это удалит все данные пользователя из устройства, но является в большинстве случаев необходимым шагом, так как позволяет избежать множества ошибок при прошивке и дальнейшей работе программного обеспечения. Выполняем команду:

fastboot –w

2. Записываем zip-пакет с прошивкой. Если это официальное обновление от производителя, используется команда:

fastboot update update.zip

В других случаях применяем команду

fastboot flash update.zip

3. После появления надписи «finished. total time….» прошивка считается завершенной.

Электроника для всех

Почти все микроконтроллеры серии Mega с памятью от 8КБ могут прошиваться через бутлоадер

. Фишка удобная и применяется довольно часто, однако подробного мануала как работать с бутлоадером наAVRя в свое время не нашел и пришлось разбираться самостоятельно. С той поры мало что изменилось. Пора бы дать подробное описание как выбрать, скомпилировать, прошить и в дальнейшем использоватьbootloaderдля AVR.

Ликбез

Что же это такое бут и с чем его едят.BootLoaderэто всего лишь небольшая программка которая сидит в специальной области памяти микроконтроллера и слушает какой-либо интерфейс. Обычно этоUART, но бывает иSPI,USBи дажеSoftUSBбутлоадеры.

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

‘у и сам прошить ее во флеш. Или, наоборот, считать прошивку из флеша и выдать черезUART, считать или записатьEEPROM, подрыгать ножками. Да что угодно. Но обычно все же с помощью бута осуществляют прошивку микроконтроллера без применения спец программатора.

Если разрешающего условия при старте нет, то бут завершает свою работу и передает управление основной программе.

Зачем он нужен вообще?

В самом деле, зачем эти сложности? Зачем тратить и без того малое количество памяти на какую то вспомогательную утилиту? А порой иначе и нельзя! Вот, представь, стоит у тебя девайс где нибудь под землей на большой глубине. Или на высоченной башне куда лезть и лезть, или девайсов у тебя таких миллион?

А связь у тебя с девайсом поUARTкакому нибудь или радиоканалу. И вот надо прошить девайс свежей версией прошивки. Выкапывать, лезть на башню или тыкать в каждый из девайсов шнур программатора… это же сдохнуть можно! А так дал девайсу общий сброс, приказал удаленно бутлоадеру всосать новую прошивку и вуаля!

Мало того, с помощью бута можно сильно облегчить обслуживание коммерческих устройств. Например, такая простая вещь как обновление прошивки, которую поддерживает масса девайсов вроде плееров или сотовых телефонов и которую делает обычный юзер. Выходит прошивка доступна и конкурентам? А вот фигу! Она шифрованая, а бутлоадер содержит ключ для ее дешифровки, дешифрует на лету и заливает во флеш. Красота, правда?

Недостатков у любого бутлоадера два — самый главный в том, что он отжирает часть флеша. Это неизбежное зло. Второй, не менее весомый, то что он стартует первый и если не позаботиться о грамотном алгоритме входа в бут, то девайс может сделать это самопроизвольно, записав в себя черт знает что. Такая беда была, ЕМНИП, со старыми GSM модулями SIM300DZ

у которых часто ВНЕЗАПНО при неправильном выключении питания слетала прошивка. А просто модуль входил в бут режим и наведенные помехи на входах устраивали ему армагедец.

Откуда Bootloader берется в контроллере?

Многие современные МК уже изначально, с завода, идут с прошитым bootloader’ом. В AVR же ничего подобного нет, поэтому его надо прошить самостоятельно. Да, программатор потребуется. Обычный ISP, любой — Громова, STK200, Пять проводков, USBAsp да тысячи их.

Bootloader в AVR

Что происходит при старте контроллера? В нормальном состоянии процессор начинает по одной выполнять инструкции из памяти программ, начиная с нулевого адреса. Вот так это примерно выглядит в ATmega16, в других все аналогично, только адреса другие.

Но если активировать Fuse бит BOOTRST

то процессор будет стартовать не с нулевого адреса, а с адреса начала Boot сектора. Этот сектор расположен в самом конце памяти программ и его размер задаетсяFUSEбитамиBOOTSZх.

Вот как, например, выглядит таблица соответствия битов BOOTSZх и размера загрузочной области для ATMega16:

Обрати внимание на то, что адрес задается в словах. Учитывая то, что одна команда в AVR занимает одно слово, то в самом скромном варианте бутлоадера нам надо уложиться в жалкие 128 команд, а в самом жирном в нашем распоряжении аж 1024 команды. Кроме всего прочего, у бутлоадера есть еще куча разных битов конфигурации разрешающие запись или чтение из памяти программ, организующие защиту от копирования и прочие фишечки.

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

Выбор bootloader’a

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

  • Должен быть написан на Си (Бейсике, Паскале — нужное подчеркнуть). При всей моей любви к ассемблеру тут однозначно рулит Си. Дело в том, что удобно постоянно юзать один и тот же код, просто перекомпилируюя его под свой процессор. С ассемблером это довольно затруднительно, даже несмотря на единое ядро у AVR возникает куча различий на уровне периферии. Например, в ATmega8 регистр UART зовется как UDR, а в ATmega88 его обозвали уже UDR0 и обращаться к нему через команды IN/OUT уже нельзя — только через LDS/STS (т.к. из-за сильно разросшейся периферии его адресация вылезла за пределы досягаемости команды IN/OUT). Как результат — нативный ассемблерный код приходится править ручками. Хоть это и не сложно (обычно прокатывает автозамена), но не наш метод. Плюс ко всему, размер бутлоадера у нас меняется фиксироваными кусками. А поскольку, например, в самый маленький сегмент полнофункциональный бутак все равно не влезет, хоть ты заизвращайся с кодом, в более толстый же сегмент уже без напряга влезает Сишный код. Так что экономии особой тут не нароешь.
  • ; Должен поддерживаться родным софтом, в частности AVRProg’ом который идет в составе студии. Да, это немного громоздко, но зато не требует стороннего софта.
  • Должен позволять писать как во флеш, так и в EEProm
  • Должен быть не слишком жирным. Оптимально 512 слов. Меньше найдешь вряд ли, больше уже излишество.
  • Должен быть под WinAVR (т.к. я юзаю именно этот компилер)

В результате был нарыт проект Martin Thomas’a из Германии «AVRPROG compatible boot-loader» который идеально вписался в мои требования. Я лишь чуть чуть подправил его код под свои нужды.

И сейчас я покажу тебе как юзать эту замечательную программулину.

Итак, тебе нужна AVR Studio и WinAVR (она же AVR GCC). Если ничего этого ты еще не ставил, то сначала поставь студию, а потом сверху накати на нее WinAVR тогда они сцепятся друг с другом и будут работать в единой связке. WinAVR

Оцените статью
Huawei Devices
Добавить комментарий