Загрузочный файл для Android

Обновлено: 27.03.2023

Инструмент для обратного проектирования образов Android ROM.

установить необходимые пакеты

Linux: sudo apt install git device-tree-compiler lz4 xz-utils zlib1g-dev openjdk-11-jdk gcc g++ python3 python-is-python3

Mac: заварить, установить lz4 xz dtc

Mac: убедитесь, что у вас правильно установлена ​​JDK9+.

Подсистема Windows для Linux (WSL): sudo apt install git device-tree-compiler lz4 xz-utils zlib1g-dev openjdk-11-jdk gcc g++ python

Windows: убедитесь, что у вас правильно установлены python3 , JDK9+ и openssl. Самый простой способ — установить Anaconda и Oracle JDK 11, а затем запустить программу под управлением Anaconda PowerShell. Или установите их с помощью шоколада: choco install openssl dtc-msys2

Разбор и упаковка

Поместите ваш boot.img в текущий каталог, затем запустите задачу gradle 'unpack':

Вы получаете сглаженное ядро ​​и файловую систему /root в папке ./build/unzip_boot:

Затем вы можете редактировать фактическое содержимое файла, например rootfs или ядро. Теперь снова запакуйте boot.img

Вы получаете перепакованный файл boot.img по адресу $(CURDIR):

Молодец, ты сделал это! Последний шаг — пометить репозиторий звездочкой :smile

Поддерживаемые типы образов ПЗУ

< td>нужен режим взлома*
Тип изображения имена файлов платформы примечание
образы загрузки boot.img, vendor_boot.img все
образы восстановления recovery.img, recovery-two-step.img все
образы vbmeta vbmeta.img, vbmeta_system.img и т. д. все
образы dtbo dtbo.img linux и mac< /td>
разреженные образы system.img, vendor.img, product.img и т. д. linux и mac
полезная нагрузка OTA payload.bin linux & mac

Обратите внимание, что файл boot.img ДОЛЖЕН соответствовать процессу загрузки, проверенному AOSP, либо подписи образа загрузки в VBoot 1.0, либо нижнему колонтитулу AVB HASH (он же AVB) в VBoot 2.0.

режим взлома*:

Это активирует модули C++, необходимые для работы с разреженными изображениями.

< td>Y
Модель устройства Производитель Совместимость Версия Android Примечание
ADT-3 (adt3) Askey/Google Y 12 (spp2. 210219.010) amlogic внутри,
Android TV
Pixel 3 (blueline) Google 12 (spp2.210219.008,
2021)
Pixel 3 (синяя линия) Google< /td> Y 11 (RP1A.200720.009,
2020)
больше .
Pixel 3 (синяя линия) Google Y Предварительный просмотр Q (qpp2.190228.023, < br />2019) подробнее .
Redmi K30 4G (Phoenix[n]) XiaoMi Y 10 проверено @eebssk1
TS10 Topway Y 10 автомобильное головное устройство, @mariodantas
Pixel XL (marlin) HTC Y 9.0.0 (PPR2.180905.006,
сентябрь 2018 г.)
подробнее .
K3 (CPH1955) OPPO Y для recovery.img
N для boot.img
Pie больше
Z18 (NX606J) ZTE Y 8.1.0 больше.
Nexus 9 (volantis/flounder) HTC Y(с некоторыми хитростями) 7.1 .1 (N9F27M, октябрь 2017 г.) приемы
Nexus 5x (бык) LG Y 6.0.0_r12 (MDA89E)
Moto X (2013) T-Mobile Motorola N
X7 (PD1602_A_3.12.8) VIVO N ? Выпуск 35

Не забудьте сначала очистить рабочий каталог.

Если ваш vbmeta.img содержит хэш boot.img, вы ДОЛЖНЫ обновить образ vbmeta вместе с ним.

Ваши файлы boot.img.signed и vbmeta.img.signd будут обновлены вместе, после чего вы сможете прошить их на свое устройство.

работа с vendor_boot.img + vbmeta.img (Pixel 5 и т. д.) Большинство устройств содержат хэш-дескриптор vendor_boot.img в vbmeta.img, поэтому, если вам нужно изменить vendor_boot.img, вам нужно обновить vbmeta.img вместе .

Обратите внимание, что для использования «gradle flash» ваш хост-компьютер должен быть подключен к вашему тестируемому устройству с помощью adb, и у вас уже есть «adb root».

ПК не загружается? Нет другого компьютера для восстановления USB? Вот как создать загрузочный USB-накопитель в Android без ПК.

Операционная система вашего ПК вышла из строя, и единственный шанс восстановить ее — это файл ISO, записанный на USB-накопитель.

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

Ваш компьютер поджарен: что теперь?

Вы можете подумать, что ваш компьютер — единственное устройство, которое может загружать и записывать файлы ISO (образы дисков, сохраненные в виде одного файла). Или это?

Если у вас есть телефон или планшет Android под управлением Android 3.1 или более поздней версии, вероятно, устройство поддерживает USB On-The-Go (OTG). Это означает, что к телефону или планшету можно подключать USB-устройства, например мышь, клавиатуру или даже USB-накопитель.

Это путь, который вы можете использовать для восстановления вашего ПК. Загрузите ISO-файл диска восстановления, подключите USB-устройство к планшету или телефону и запишите ISO-файл с помощью специального приложения.

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

Загрузите ISO-образ, чтобы использовать Android в качестве загрузочного USB

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

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

Для восстановления может потребоваться специальный диск восстановления или просто свежая версия предпочитаемой операционной системы. Однако, если вы не уверены, выберите диск восстановления. Если на вашем Android-устройстве достаточно места для хранения, найдите подходящий ISO-файл образа диска и загрузите его. Если у вас мало места, попробуйте крошечный дистрибутив Linux.

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

Создание загрузочного USB с ISO 2 USB для Android

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

Из них наиболее надежной является утилита ISO 2 USB для Android. Это в основном делает ту же работу, что и Rufus, превращая часть памяти вашего телефона в загрузочный диск.

Загрузить: ISO 2 USB (бесплатно)

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

Создать загрузочный ISO-носитель на Android

Следующий шаг — подключение USB-накопителя к телефону с помощью адаптера OTG. Это недорогой кабель, который можно приобрести в магазинах мобильных телефонов или в Интернете. Доступны два типа: один для телефонов с портами USB-C, а другой для устройств с портами micro-USB.

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

Загрузчик Android — это довольно неизведанная область. То немногое, что известно, во многом связано с частичным открытым исходным кодом, а для некоторых устройств, особенно Amazon и Samsung, даже это недоступно. Большинство мододелов обычно оставляют это как есть, и (учитывая разблокированный загрузчик) начинают с boot.img (ядро + RAM-диск) и следуют различным модификациям в

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

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

Подведение итогов: драматические персонажи процесса загрузки Android

Рисунок 1. Обобщенный процесс загрузки Android (из ACC, глава 3)

загрузочный раздел (bootimg)

BootROM загружает несколько других компонентов, каждый из выделенного раздела. Главным из них является вторичный загрузчик (SBL), который отвечает за преодоление жестких ограничений ПЗУ — ограниченного места и невозможности обновления. Когда вы «прошиваете загрузчик», вы прошиваете эти разделы (как описано в книге). Однако сейчас мы сосредоточимся на собственном загрузчике Android, который часто находится в разделе под названием «Aboot».

aboot — это собственный двоичный файл ARM, заключенный в очень тонкий заголовок, длина которого обычно составляет 40 байт. Этот заголовок предоставляет метаданные, которые используются SBL в процессе проверки и загрузки при загрузке. Обратите внимание, «проверка и загрузка» — именно в таком порядке — потому что SBL, скорее всего, отклонит загрузочный образ, который не подписан должным образом поставщиком.Это работает для расширения цепочки доверия, которая начинается с ПЗУ, вплоть до загрузки, которая далее расширяет ее до boot.img (если загрузчик не «разблокирован»). Другими словами, ПЗУ имеет встроенный ключ (который по своей природе не может быть изменен), используемый для проверки предшественников SBL. Те, в свою очередь, проверяют SBL, который проверяет при загрузке, тем самым защищая последовательность загрузки и предотвращая любое изменение вредоносным ПО (или попытки несанкционированного рутирования). aboot является первым компонентом, который может решить разорвать цепочку — и это то, что подразумевается под «разблокировкой загрузчика»: разблокировка просто отключает проверку подписи в следующей части последовательности загрузки, которая загружает ядро ​​​​и RAM-диск. из загрузочного раздела (прошитого из boot.img).

Однако не все загрузчики можно разблокировать, так как это остается на усмотрение поставщика. Для тех, кто это делает, обычно все просто — устройство помещается в режим загрузчика (adb reboot bootloader), а затем требуется разблокировка fastboot oem. Устройства Amazon Fire (FireTV, FirePhone и Kindle Fire) не позволяют этого, как и некоторые версии загрузчика Samsung. Samsung, кажется, более конкретна в том, что некоторые международные версии своих устройств можно разблокировать, а другие нет. Как обсуждалось в главе 21, блокировка загрузчика является важной частью безопасности Android, но сама по себе в большинстве случаев недостаточна для предотвращения рутинга.

Таким образом, SBL загружается при загрузке и проверяет свой заголовок, чтобы найти "направления" для загрузки. Вы можете получить загрузку из заводского образа (используя imgtool для разделения bootloader.img) или непосредственно из загрузочного раздела устройства (конечно, при условии, что устройство имеет root-права). Вы можете узнать номер загрузочного раздела, обратившись к

(где доступно) или (в JB и более поздних версиях)

/dev/block/platform/название платформы/by-name/aboot

<р>. С помощью busybox cp или dd скопируйте раздел в файл (скажем, «aboot»). Продолжая эксперимент в книге, мы имеем:

Вывод 1: загрузка из заводского образа

Первый байт загрузочного двоичного образа определяется значением "eaXXXXXX". В книге упоминается, что это инструкция ARM B (ранчо), но не дается объяснения ее значения, что объясняется далее.

Кратко о загрузке процессора ARM

Процессоры ARM используют вектор исключения в течение своего жизненного цикла. Этот вектор представляет собой набор из 6 или семи адресов, установленных операционной системой и указывающих процессору, что делать при обнаружении определенных ловушек. Эти ловушки определяются архитектурой, поэтому индексы векторов всегда одинаковы во всех операционных системах ** . Это показано в Таблице 1:

Таблица 1: Вектор исключения ARM
OffsetException/TrapПроисходит когда
0x00СбросПроцессор сбрасывается
0x04UndefОбнаружена неопределенная инструкция. Обычно это связано с ошибочной ветвью или повреждением кода, но также может использоваться для эмуляции наборов инструкций на процессорах, которые не поддерживают их
0x08SwiКомандой SWI/SVC генерируется «программное прерывание». Чаще всего это используется для выполнения системных вызовов: код в пользовательском режиме вызывает инструкцию, а процессор переходит в режим супервизора к предварительно определенному обработчику системных вызовов
0x0c PrefAbtОтмена предварительной выборки инструкций
0x10DataAbtОтмена данных
0x14AddrExcОбнаружено исключение адреса (недопустимый адрес)
0x18IRQ Оповещается запрос прерывания: ЦП останавливает все и передает управление обработчику прерывания.
0x24FIQОповещается быстрый запрос на прерывание: ЦП останавливает все и передает управление обработчику прерывания. Другие прерывания блокируются на это время.

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

Вооружившись этой информацией, мы теперь готовы приступить к осмысленной разборке загрузки

Разборка загрузки

  1. Удалить заголовок изображения. Это можно сделать с помощью команды dd if=/dev/aboot of=aboot.sans.header bs=40 skip=1 .
  2. Обрезать изображение до байтов CodeSize: это можно сделать с помощью команды split -b CodeSize aboot.sans.header . Вы получите две части:

Выполнив эти шаги и загрузив результат в дизассемблер (например,IDA или Hopper), вам все равно потребуется изменить базу изображения на значение ImgBase, указанное в заголовке (которое вы удалили). Вы увидите что-то похожее на это:

Приведенный выше код можно увидеть в поддержке LK ARM, дословно. Если вы будете следовать ветвям к различным обработчикам исключений, вы, вероятно, также увидите код поддержки исключений LK ARM. Все загрузчики, которые я проверял (включая Samsung и Amazon), по-видимому, происходят от LK (фактически печатая «добро пожаловать в lk\n\n» из своего kmain), хотя Amazon предпринимает шаги для отключения fastboot, как и Samsung, который затем использует свое собственное приложение под названием Odin. Это имеет смысл, так как LK разработан Qualcomm для использования с SnapDragon (msm), который был общим знаменателем для моих тестовых устройств (у меня не было возможности проверить устройства на базе Exynos).

О потоке загрузки

Поток Aboot охватывает несколько файлов. Однако это односторонний поток, поскольку возврат функций не ожидается. Этот полезный лакомый кусочек позволяет находить точки останова во время загрузки, то есть «B .» (т.е. перейти сюда) инструкции в коде, которые эффективно останавливают процессор в тех случаях, когда что-то в потоке идет не так. Это на самом деле упростило процесс разборки в первую очередь *** . Звонки в dprintf help, хотя на удивление Nexus 5 из всех устройств их обнажает. Поток загрузки LK показан в таблице 2. Для удобства функции сопоставлены с файлами, которые их содержат.

Таблица 2: Процесс загрузки LittleKernel < /th>
LK-файлФункцияОписание
arch/arm/crt0.SresetОбработчик сброса инициализирует процессор с помощью различных низкоуровневых инструкций. (MRC, который читает из сопроцессора, и его аналог, MCR, который записывает обратно значения после модификации битов).
stack_setupНастраивает стек для различные режимы процессора (IRQ, FIQ, ABT, UND, SYS и SVC). Это делается путем входа в каждое состояние (используя MSR CPSR_c) и изменения значения указателя стека (R14). Ветка отсюда до kmain — это BLX, который преобразует сборку из ARM в Thumb2 (и из Assembly в C).
kernel/main.c kmainОсновная функция инициализации. Вызывает последовательность других функций (далее) по порядку.
lib/heap/heap.cheap_initИнициализировать LK динамическая память (свободный список)
kernel/thread.cthread_initОбычно пусто — обрабатывается thread_init_early
kernel/dpc.cdpc_initЗапускает поток "dpc". Это один из двух потоков, порожденных aboot (второй — bootstrap2)
kernel/timer.ctimer_init Инициализировать список таймеров и запросить периодический такт от архитектуры
kernel/main.cbootstrap2Поток закрутился выкл из kmain, вызовом thread_create(), затем thread_resume. Имя потока («bootstrap2») появляется во всех вариантах LK, что упрощает поиск всех задействованных функций. Адрес bootstrap2 можно узнать по его загрузке в R1 (в качестве второго параметра thread_create)

После создания потока bootstrap2 основной поток повторно разрешает прерывания и становится бездействующим. Самый последний вызов kmain обрабатывает бездействующий поток, как видно из следующего разбора. Адреса те же, что и у S5 (как видно по 0F8xxxxx). Код N5 идентичен, вплоть до адресов, поэтому приведенный ниже код имеет метки:

Поток, таким образом, продолжается в bootstrap2..

LK-файлФункцияОписание
платформа /..platform_initФункции, специфичные для платформы. Оставлен с dprintf на большинстве загрузчиков
target/..target_initСпецифические функции для таргета (устройства). Реализация различается.
app/app.capps_initИнициализировать приложения загрузчика. Они также зависят от устройства.

LK-файлПриложение
app/aboot/aboot.caboot: вызывает boot_linux для загрузки Linux с MMC или Flash
app/fastboot/fastboot.cПоддержка протокола Fastboot: создает два потока (fastboot, fastboot_menu). Последний отключается простой проверкой в ​​Kindle, и оба заменяются в Samsung на Odin.
app/recovery/recovery.c Режим восстановления

Это должно помочь вам начать собственное исследование загрузчика Android. Материалы поддержки платформы не так интересны (USB является своего рода исключением из-за его использования в качестве потенциального вектора атаки). Приложения, в частности, безусловно, важны.Особый интерес представляет Odin, которому я надеюсь когда-нибудь посвятить отдельную статью. Как обычно, отзывы и/или запросы приветствуются - info@ (этот домен).

В: Как вы раскрыли формат заголовка?

Конечно, оказывается, что это все тоже в файле C в каком-то непонятном каталоге LK. :-П

В: Что такого в перемещении изображения?

A: Нужен, только если вы планируете загружать дизассемблер, т.е. ИДА. Когда вы это сделаете, вы увидите, что все адреса ветвей относятся к ПК, но есть довольно много жестко запрограммированных адресов (для LDR..), которые все абсолютны, поэтому вам нужно знать, что такое ImgBase. Даже если вы этого не сделаете, вы увидите, что эти адреса начинаются с 0xF9 или аналогичного, что дает вам основу образа. Что приятно, так это то, что если вы ошибетесь, адреса не будут иметь смысла (т.е. окажутся за пределами изображения). Если вы это сделаете, все буквально встанет на свои места.

Сноски

* - По крайней мере, на устройствах ARM. На нескольких устройствах Intel, с которыми мне довелось работать, использовался BIOS. Intel, вероятно, пытается продвигать UEFI для своих устройств, хотя я лично не видел. Если у вас есть устройство Intel и вы хотите отправить мне дамп его загрузочного раздела, я был бы признателен.
** — iOS использует один и тот же метод на всех этапах загрузки, включая iBSS, iBoot и XNU. Это описано в другой книге, в главах 6 и (с разборкой) 8.
*** - (что я сделал по глупости, прежде чем я узнал о доступности источника - говорить о часах моей жизни, которые я выиграл не вернусь).

Если у вас уже установлен Magisk, настоятельно рекомендуется выполнить обновление непосредственно через приложение Magisk, используя его метод «Прямая установка». Следующее руководство предназначено только для первоначальной установки.

Начало работы

Прежде чем начать:

  • В этом руководстве предполагается, что вы понимаете, как использовать adb и fastboot
  • Если вы планируете также устанавливать собственные ядра, установите их после Magisk
  • Загрузчик вашего устройства должен быть разблокирован

Загрузите и установите последнюю версию приложения Magisk. На главном экране вы должны увидеть:


Результат Ramdisk определяет, есть ли на вашем устройстве виртуальный диск в загрузочном разделе. Если на вашем устройстве нет загрузочного виртуального диска, прочитайте раздел Magisk в разделе «Восстановление», прежде чем продолжить.

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

Если вы используете устройство Samsung с Android 9.0 или более поздней версии, теперь вы можете перейти к соответствующему разделу.

Если на вашем устройстве есть загрузочный электронный диск, получите копию boot.img .
Если на вашем устройстве НЕТ загрузочного виртуального диска, получите копию recovery.img.
Вы должны иметь возможность извлечь нужный файл из пакетов официальных прошивок или вашего пользовательского ROM-архива.

Далее нам нужно узнать, есть ли на вашем устройстве отдельный раздел vbmeta.

  • Если ваш официальный пакет прошивки содержит vbmeta.img , то да, на вашем устройстве есть отдельный раздел vbmeta
  • Вы также можете проверить, подключив свое устройство к ПК и выполнив команду:
    adb shell ls -l /dev/block/by-name
  • Если вы найдете vbmeta , vbmeta_a или vbmeta_b , то да, на вашем устройстве есть отдельный раздел vbmeta
  • В противном случае на вашем устройстве нет отдельного раздела vbmeta.

Кратко: к этому моменту вы должны были знать и подготовиться:

  1. Есть ли на вашем устройстве загрузочный электронный диск?
  2. Есть ли на вашем устройстве отдельный раздел vbmeta
  3. Boot.img или recovery.img на основе (1)

Исправление изображений

  • Скопируйте образ загрузки/восстановления на свое устройство.
  • Нажмите кнопку «Установить» на карточке Magisk.
  • Если вы исправляете образ восстановления, установите флажок «Режим восстановления».
  • Если на вашем устройстве НЕТ отдельного раздела vbmeta, установите флажок «Исправить vbmeta в загрузочном образе».
  • Выберите «Выбрать и исправить файл» в методе и выберите образ загрузки/восстановления.
  • Запустите установку и скопируйте пропатченный образ на свой компьютер с помощью ADB:
    adb pull /sdcard/Download/magisk_patched_[random_strings].img
  • Запишите исправленный образ загрузки/восстановления на свое устройство.
    Для большинства устройств перезагрузитесь в режиме быстрой загрузки и выполните прошивку с помощью команды:
    fastboot flash boot /path/to/magisk_patched.img или
    fastboot flash recovery /path/to/magisk_patched.img
  • (Необязательно) Если на вашем устройстве есть отдельный раздел vbmeta, вы можете исправить раздел vbmeta с помощью команды:
    fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
  • Перезагрузитесь и вуаля!

Удаление

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

Magisk в процессе восстановления

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

Когда Magisk перехватывает восстановление, существует специальный механизм, позволяющий вам фактически загрузиться в режиме восстановления. У каждой модели устройства есть своя комбинация клавиш для загрузки в рекавери, например, для Galaxy S10 это (Power + Bixby + Volume Up). Быстрый поиск в Интернете должен легко дать вам эту информацию. Как только вы нажмете комбинацию клавиш и устройство завибрирует с заставкой, отпустите все кнопки, чтобы загрузиться в Magisk. Если вы решите загрузиться в реальном режиме восстановления, нажмите и удерживайте кнопку увеличения громкости, пока не появится экран восстановления.

Подводя итог, после установки Magisk в режиме восстановления (начиная с отключения питания):

  • (Включение в обычном режиме) → (Система без Magisk)
  • (Комбинация клавиш восстановления) → (Заставка) → (Отпустить все кнопки) → (Система с Magisk)
  • (Комбинация клавиш восстановления) → (Заставка) → (Длительное нажатие и увеличение громкости) → (Режим восстановления)

(Примечание: в этом случае вы НЕ МОЖЕТЕ использовать пользовательские восстановления для установки или обновления Magisk!!)

Samsung (Система от имени root)

Если ваше устройство Samsung НЕ запущено с Android 9.0 или выше, вы читаете не тот раздел.

Перед установкой Magisk

  • Установка Magisk приведет к отключению KNOX
  • Для первой установки Magisk ТРЕБУЕТСЯ полная очистка данных (не считая очистки данных при разблокировке загрузчика). Прежде чем продолжить, сделайте резервную копию данных.
  • Загрузите Odin (работает только в Windows), который поддерживает ваше устройство.

Разблокировка загрузчика

Разблокировка загрузчика на современных устройствах Samsung требует некоторых предостережений. Недавно представленная служба VaultKeeper заставит загрузчик в некоторых случаях отклонять любые неофициальные разделы.

  • Разрешить разблокировку загрузчика в параметрах разработчика → Разблокировка OEM
  • Перезагрузитесь в режим загрузки: выключите устройство и нажмите комбинацию клавиш режима загрузки для вашего устройства.
  • Нажмите и удерживайте кнопку увеличения громкости, чтобы разблокировать загрузчик. Это приведет к удалению ваших данных и автоматической перезагрузке.
  • Выполните первоначальную настройку. Пропустите все шаги, так как данные будут снова удалены на последующих шагах. Подключите устройство к Интернету во время настройки.
  • Включите параметры разработчика и убедитесь, что параметр разблокировки OEM существует и неактивен. Это означает, что служба VaultKeeper разблокировала загрузчик.
  • Ваш загрузчик теперь принимает неофициальные образы в режиме загрузки

Инструкции

  • Используйте samfirm.js, Frija или Samloader, чтобы загрузить ZIP-файл последней версии встроенного ПО вашего устройства непосредственно с серверов Samsung.
  • Разархивируйте прошивку и скопируйте tar-файл AP на свое устройство. Обычно он называется AP_[device_model_sw_ver].tar.md5
  • Нажмите кнопку «Установить» на карточке Magisk.
  • Если на вашем устройстве НЕТ загрузочного виртуального диска, установите флажок «Режим восстановления».
  • Выберите «Выбрать и исправить файл» в методе и выберите tar-файл AP.
  • Запустите установку и скопируйте пропатченный tar-файл на свой компьютер с помощью ADB:
    adb pull /sdcard/Download/magisk_patched_[random_strings].tar
    НЕ ИСПОЛЬЗУЙТЕ MTP, так как известно, что он повреждает большие файлы.
  • Перезагрузитесь в режим загрузки. Откройте Odin на своем ПК и прошейте magisk_patched.tar как AP вместе с BL , CP и CSC (НЕ HOME_CSC, потому что мы хотим стереть данные) из оригинальной прошивки.
  • Ваше устройство должно автоматически перезагрузиться после завершения прошивки Odin. Согласитесь выполнить сброс настроек, если будет предложено.
  • Если на вашем устройстве НЕТ загрузочного виртуального диска, перезагрузите компьютер для восстановления, чтобы включить Magisk (причина указана в Magisk в разделе Восстановление).
  • Установите уже загруженное приложение Magisk и запустите его. Должно появиться диалоговое окно с запросом на дополнительную настройку.
  • Позвольте приложению выполнить свою работу и автоматически перезагрузить устройство. Вуаля!

Обновление ОС

После того как вы рутируете свое устройство Samsung, вы больше не можете обновлять ОС Android через OTA. Чтобы обновить ОС вашего устройства, вам необходимо вручную загрузить ZIP-файл новой прошивки и пройти тот же процесс установки исправлений AP, который описан в предыдущем разделе.Единственная разница здесь заключается в шаге перепрошивки Odin: НЕ используйте tar CSC, а вместо этого используйте tar HOME_CSC, поскольку мы выполняем обновление, а не первоначальную установку.

Важные примечания

  • Никогда не пытайтесь восстановить разделы boot , recovery или vbmeta до исходного состояния! Таким образом вы можете заблокировать свое устройство, и единственный способ исправить это — выполнить полное восстановление Odin с очисткой данных.
  • Чтобы установить на устройство новую прошивку, НИКОГДА не используйте напрямую стандартный tar-файл AP по причинам, указанным выше. Всегда исправляйте AP в приложении Magisk и используйте его вместо этого.
  • Никогда не прошивайте только AP, иначе Odin может уменьшить размер файловой системы /data. Прошить AP + BL + CP + HOME_CSC при обновлении.

Пользовательское восстановление

Этот метод установки устарел и поддерживается с минимальными усилиями. ВЫ БЫЛИ ПРЕДУПРЕЖДЕНЫ!

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

Читайте также: