Перейти к содержимому

Как загрузиться в twrp recovery

  • автор:

Запуск TWRP Recovery

Запуск TWRP Recovery

Загрузить планшет или телефон в TWRP Recovery можно несколькими способами.

1. С помощью cпециальной программы, такой как GooManager, выбрав в ее меню пункт «Reboot Recovery» — «Загрузить режим Recovery».
2. С помощью нажатия определенной комбинации клавиш при включении устройства. Эта комбинация зависит от модели устройства. На многих устройствах в рекавери можно попасть, нажав при их включении одновременно кнопки уменьшения громкости и включения питания.
3. С помощью программы ADB. Если вы настроили подключение к компьютеру с помощью программы ADB, загрузить свой планшет в recovery вы можете с помощью команды:

How to Boot into Recovery (TWRP/Stock) from Fastboot Mode

Raj Patel

In this article, we will be offering to you all the guide on How to Boot into Recovery from Fastboot Mode, for both TWRP and Stock Recovery. We have shared 3 manners by which one can boot into recuperation mode from fastboot mode. The Fastboot mode or bootloader mode is quite possibly the most significant modes with regards to cutting edge level customization of any android gadget.

It is this fastboot mode that permits clients to perform different errands identified with customization like — Unlock Bootloader on Android, Install TWRP Recovery, Flash Custom ROM, and so on You can likewise play out some different capacities like reestablish NANDroid Backup, Flash Kernels, change sprinkle screen of your gadget, etc.

In the event that you are a tech nerd, you may definitely know like fastboot or bootloader mode, there is additionally a Recovery Mode. This mode is the one that encourages you with adjustments and changes on your gadget. You can streak compress records, perform plant reset and even wipe store information utilizing this model.

There are basically 2 kinds of recuperations — Stock Recovery and Custom Recovery. The previous, otherwise called ordinary mode offers restricted capacities to the client. While the last offers a more extensive range for customization and changes like blazing custom ROMs and Modules, Xposed Framework, etc.

So in the event that you also need to perform such capacities and go into TWRP or Recovery mode, at that point here is a nitty gritty guide that will help you boot the gadget into Recovery mode from Fastboot mode.

How to Boot into Recovery (TWRP/Stock) from Fastboot ModeSubstance HIDE

If you are wondering how can I reboot into Recovery from fastboot mode, then here is a detailed guide that will teach you to boot into TWRP Recovery from Fastboot recovery with 4 simple steps –

Step 1: Install SDK Platform-tools

Download And Install ADB and Fastboot on Windows, Linux, Mac

Android SDK (Special Development Kit) platform-tools form a crucial part of many customization procedures. These tools are necessary as we will get the ADB and Fastboot Binary files from them.

Step 2: Enable USB Debugging

How to Enable USB Debugging on Android Devices

  • To start with, go to Settings > About Phone.
  • Here, scroll to the bottom and Tap on Build Number 7 times.
  • Again Go back to Settings > System > Advanced.
  • Here, tap on the Developer Options > and Enable USB Debugging toggle.

Step 3: Boot your device to Fastboot mode

If you are already in Fastboot mode, you can skip this step and jump to step 4.

However, if you are yet to boot the device into Fastboot mode and then boot to TWRP or Stock Recovery mode, then follow the below steps –

  • Using USB Cables, connect your device to the PC.
  • On your PC, go to the platform-tools folder which you installed in step 1.
  • In this folder, type cmd in the address bar and hit the enter key. This will open the command prompt window.
  • Enter the below command to boot the device into Fastboot or Bootloader mode –

Now follow the below method 1 to boot into TWRP Recovery mode from Fastboot mode.

Step 4: Boot your device to TWRP Recovery

Here are 3 different methods you can use to boot your device to TWRP Recovery mode –

Method 1. Boot to Recovery from Fastboot via Commands

You can follow this method as the continuation of step 3. Assuming that you have followed step 3, your device will be in Fastboot mode and the command prompt will be open through the Platform-tools folder.

Simply enter the below command to enter into TWRP mode –

That’s it. This is the simplest way to boot into TWRP mode through Fastboot mode. In case this method didn’t work out for you, you can still follow the other two methods mentioned below.

Method 2. Boot to TWRP in A/B Partition Devices

In case you did not find the above method useful, you can try out the below one –

  • Download TWRP Recovery for your device.
  • Rename this file to twrp. The file name will now become — twrp. img
  • Move this file to the Platform-tools folder.
  • Enter the below command in the command prompt so as to boot into Recovery mode from Fastboot mode –
  • This command will boot your device into TWRP.
  • However, if you wish to install TWRP permanently on your device, go to TWRP Main Menu> Install> Install TWRP ZIP File.

For Non-A/B partition devices, you can use the below command to directly flash the file.

I hope you could boot into TWRP Recovery mode using the above method. However, If you do not find this method helpful, you can try out the below one.

Method 3. Flash TWRP to Boot Partition

    for your device.
  • Rename this file to twrp. The file name will now become — twrp. img
  • Move this file to the Platform-tools folder.
  • Enter the below command in the command prompt so as to flash TWRP img file to boot partition –
  • Enter the below command to boot your device to TWRP Recovery-
  • Move the TWRP zip file to your device.
  • In the TWRP Main menu, tap on Install and choose the TWRP zip file. Swipe right to flash the file.
  • Lastly, reboot your system using the reboot option.

That is it. I am assuming by now your device will be in TWRP Recovery mode.

Finishing up Words

I trust all of you could without much of a stretch Boot into Recovery (TWRP/Stock) from Fastboot Mode on your Android gadget. Regardless of whether you need to boot into Stock Recovery or TWRP Recovery from Fastboot mode, the above technique will be useful for both.

In the event that you are stuck at any of the above advances, don’t hesitate to tell us in the remark segment beneath. We will be happy to take care of you.

How to Boot Any Android Device to TWRP Recovery

In this tutorial, we will be sharing different methods through which you could boot your Android device to TWRP Recovery. Android ecosystem, thanks to its open-source nature, allows for tons of customizations. For everyday users, they could try out custom launchers, icon packs, themes and plentitude of other modifications. And for the tech geeks, well it gets even better. They could altogether install a new ROM based on Android. All that is required is that your device should have an unlocked bootloader, and then the floodgates get opened. Not only the custom ROMs, but there are many other tweaks like Magisk Modules, Xposed Frameworks, and Substratum Themes. Well, this is just the tip of the iceberg, if we go on writing all the benefits, then the limits will know no bounds.

And as soon as you unlock the device’s bootloader, one thing that you might be doing (or should do) is to replace your stock recovery with custom recovery. This is because, once the bootloader is unlocked, you get the passage to tweak the device’s system files. And this has unforeseen risks attached. If you end up in a bricked state or in a bootloop, then you can’t just access your device or even the stock recovery for that matter.

There are just two things that you could get your hands on: the Fastboot/ Bootloader Mode and a Custom Recovery. And once you are inside the Recovery, there’s no stopping you from getting your device back to normal working condition. This is just one of the many benefits associated with the TWRP Recovery. Before checking out the steps to boot your Android device to TWRP, let’s have a look at some of these benefits. Also, check out our guide on How To Transfer or Install Files via TWRP Recovery.

Table of Contents

TWRP & It’s Benefits

Team Win Recovery Project, or popularly known as TWRP is capable of performing tons of useful functionalities. The one we mentioned above is usually known as creating and restoring a Nandroid backup. Moreover, everything from installing a custom ROM to rooting your device requires a working custom recovery. Furthermore, flashing different types of ZIP and Image files is also carried out via TWRP. There’s also some technical stuff inside the Advanced options such as an in-built terminal window.

Well, these are just some of the benefits associated with TWRP. With that in mind, let’s check out how you could boot your device to TWRP Recovery. But before doing so, it goes without saying that your device should have a workling recovery installed in the first place. If it isn’t head over to our detailed guide on the steps to Install TWRP Recovery on any Android Device. Now proceed with the steps to boot your device to TWRP Recovery.

How to Boot your device to TWRP Recovery

Let’s check out some of the methods to boot your device to TWRP Recovery:

Method 1: Boot using Hardware keys

Different devices have different hardware keys for this purpose. But most of the devices follow the Volume Down and Power key combination. So try turning off your device and then press the Power and Volume buttons to boot your device to TWRP recovery. However, if that doesn’t do the job for you, then a simple Google search will definitely. Or there’s a universal method for the same, but for that, you need to carry out an additional step. Let’s check out.

Method 2: Use the ADB Command (Universal Method)

  1. You could also boot your Android device to TWRP Recovery using ADB Commands. But for that, you need to download and install Android SDK and Platform Tools on your PC.
  2. Next up, enable USB Debugging on your device as well. The same could be done from Developer Options (which in turn could be enabled by tapping on Build Number 7 times in the About Phone section).
  3. Once you have enabled USB Debugging, connect your device to PC via USB Cable. Now go to the platform-tools folder (of Android SDK), type cmd in the address bar and hit Enter. This will open the Command Prompt. Finally, enter the below command to boot your Android device to TWRP Recovery:
  4. If you have rooted your device, there’s another method to try out. Check out.

Method 3: Using a Third-Party App

There are many third-party apps that are capable of booting your device to TWRP Recovery. They are just meant for this purpose and does its job pretty well. For all such apps to work, our device should be rooted. if it is rooted, then you must be having the Magiks Manager app installed on your device as well. In that case, you could ditch all the other apps and simply use Magisk to boot your Android device to TWRP Recovery. Here is how it could be done:

magisk boot twrp recovery

  1. Open the Magisk Manager app on your Android device.
  2. Tap on the hamburger menu situated at the top left and select Modules.
  3. Inside the Modules menu, tap on the overflow icon situated at the top right. Select Reboot to Recovery.
  4. That’s it. Doing so will directly boot your Android device to TWRP. Apart from that, you could also boot your device to Fastboot/Bootloader Mode and EDL Mode (if supported).

Method 4: Temporary Boot to TWRP

Well, the above three methods required that your device should have TWRP Recovery installed. And doing so will replace the Stock Recovery. But what if you don’t wish to give up your stock recovery but still want to use TWRP for a single task. Well, that is indeed possible. To do so, follow the below steps:

  1. First of all, download the TWRP Recovery for your device from this article’s Downloads section. make sure only to download the image (.img) file.
  2. Next up, rename the recovery to twrp so that the complete name becomes twrp.img. Transfer it to the platform-tools folder.
  3. Connect your device to PC via USB cable and enter the below command to boot your Android device to Fastboot/Bootloader mode
  4. Your device will now be booted to the Fastboot mode. Now enter the below command to boot your device to TWRP Recovery.
  5. Here twrp.img is the name of the TWRP recovery that we have just renamed to. If you haven’t renamed it, then enter the exact same file name instead of the above.
  6. Once the device boots to TWRP Recovery, flash all that you need to do, without rebooting your device to System. Because once you do so, TWRP will be replaced with the stock recovery. In that case, you will again have to execute the above command

Conclusion

So with this, we come to the end of this guide on how to boot your Android device to TWRP Recovery. We have shared four different methods for the same. Do let us know which one is your preferred method. Likewise, if you have any queries, drop them in the comments section below. We will be back with the solution as quickly as possible. Happy Flashing!

  • Read next: Patch Stock Boot Image via Magisk and Flash it using Fastboot

About Chief Editor

Sadique Hassan

A technical geek by birth, he always has a keen interest in the Android platform right since the birth of the HTC Dream. The open-source environment always seems to intrigue him with the plethora of options available at his fingertips. “MBA by profession, blogger by choice!”

Как загрузиться в twrp recovery

TWRP, как отдельная операционная система. Структура, принципы работы, основные составляющие.

Устройство или ОС, прошивка: Все платформы.

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

Обращаясь за помощью обязательно приложите recovery.log. Как его получить можно узнать здесь

Сообщение отредактировал derak1129 — 05.08.20, 09:15

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

Сообщение отредактировал Идите Лесом — 04.09.19, 16:59

С тем, что кастомный рекавери является отдельной и независимой ОС, определились? Хорошо, идём дальше! Начинают свой запуск оба сравниваемых объекта совершенно одинаково:
— Загрузчик (который состоит из нескольких компонент, которые разбросанны по маленьким разделам памяти и поочерёдно подгружаются) будит устройство.
— Проводятся первоначальные тесты аппаратной составляющей устройства и проверка целостности частей самого загрузчика.
— Если всё нормально — запускает ядро*, имеющее в составе набор низкоуровневых драйверов для нашего девайса.
— Ядро проводит свои проверки и подгружает первый и самый приоритетный сервис-бинарник — init. Именно он заведует обработкой и выполнением сценариев запуска**.

А вот то, что будет происходить далее уже имеет отличия:
init раздела boot, следуя собственным и приложенным в подгружаемых *.rc файлах инструкциям, монтирует остальные разделы, необходимые для запуска Android OS (/system, /vendor, /data, /modem и т.д.) и запускает сервисы и службы, находящиеся, в основном, в этих разделах. Далее надевает на Linux «шкурку» java и отдает в таком виде под управление пользователю.
init раздела recovery, следуя собственным и приложенным в подгружаемых *.rc файлах инструкциям, проверяет состояние «интересующих» его разделов, а сервисы и служби запускает лишь те, которые сам и содержит. Далее надевает на Linux «шкурку», подобную веб интерфейсу***.

Что имеем в итоге? Высокую степень взаимозаменяемости консольных утилит, таблиц файловых систем, конструкций скриптов и т.д. Функции, созданные для обработки из-под OS Android после небольших правок можно выполнять, находясь в кастомном рекавери и наоборот. Примерно то, что проделывают в теме Инструкции по редактированию системных ресурсов для Android OS мы будем проворачивать здесь с TWRP (только там правится framework, SystemUI.apk, Settings.apk и т.д., мы же будем вносить изменения в «twres», «sbin» и «etc»), добиваться максимально полного контроля над кастомным рекавери, устанавливать/заменять/обновлять/удалять ПО, входящее в его состав.

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

Сообщение отредактировал Идите Лесом — 05.09.19, 22:49

Кастомный рекавери, как уже упоминалось ранее, это «доработанная» версия стандартного (идущего «из коробки»). Имеет больше возможностей, в меньшей мере ограничивает пользователя и может быть более тонко настроено (зачастую стоковое вообще не имеет настроек).
Дак как же нам заполучить это «чудо» для нашего девайса? В основном используется три способа*:
1. Создание из исходников. Если производитель Вашего устройства был так любезен, что не поленился выложить в открытый доступ исходный код программного обеспечения, которое там используется, то можно «наложить» на него исходники кастомного рекавери (вот с этим то проблем нету). Вот мы и получаем свой, родной TWRP, CWM и т.д. Собранное таким образом кастомное рекавери может получить статус официального, а девайс, для которого оно сделано, может получить статус официально поддерживаемого проэктом.
2. Портирование. Вам не так повезло? Производитель не удосужился опубликовать исходный код ПО к своему девайсу? Не будем отчаиваться — выход есть! Портирование!
Нам понадобится аппарат, который максимально подобен нашему «основой» («материнка», board или как сейчас «по-научному»), но имеет собранный и рабочий кастомный рекавери. При нынешнем разнообразии рынка устройств под управлением Android OS — это вообще не проблема! Теперь разберём стоковый и кастомный рекавери (который от чужого аппарата), заменив ядро второго упомянутого ядром от нашего девайса. Собираем обратно. Всё! В основном, если был правильно подобран «донор», этого достаточно для успешного запуска. Пользоваться в таком виде не получится, но отладить пару погрешностей — это не компилировать «с нуля», не имея исходников. В чём основной минус такого метода? Отсутствие официальной поддержки! Т.е. нужно следить за изменением в структуре прошивок и самолично вносить соответствующие изменения в свой «порт».
3. Попросить сделать Вам кастомное рекавери. Ссылка на «Стол заказов» есть в шапке, но так Вы точно пропустите всё веселье!

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

Сообщение отредактировал Идите Лесом — 30.08.19, 02:23

файлы «*.so» — это библиотеки функций, необходимые некоторым исполняемым файлам. Туда вынесена часть кода бинарника и «подтягивается» она по запросу. Практически точный аналог «*.dll» файлов в ОС Windows. Не составит особого труда догадаться, что «libaosprecovery.so», к примеру, является вспомогательным файлом бинарника «recovery». В дальнейшем не забывайте об этом! Если добавляете в свою сборку TWRP новую утилиту или обновляеете старую, то делать это стоит вместе со всеми связанными библиотеками «.*so».
busybox — «BusyBox — набор UNIX-утилит командной строки, используемой в качестве основного интерфейса во встраиваемых операционных системах. Преимуществами этого приложения являются малый размер и низкие требования к аппаратуре. Оно представляет собой единый файл. Разработка BusyBox была начата в 1996 году Брюсом Перенсом.» Википедия. Попросту это сборник бинарников, скриптов и программ, которые запакованы в один файл (обычно /system/xbin/busybox) и вызываются при обращении к этому файлу + аргумент-название необходимого бинарника (busybox sed . ) или симлинками. У каждого автора сборки свой набор «вшитых» приложений. Выход новой версии означает, в большинстве случаев, изменение автором состава этой самой сборки и/или обновление некоторых содержащихся в ней «модулей».
toybox — подобие busybox. Отличается набором апплетов.
toolbox — подобие busybox. Отличается набором апплетов.
charger — отвечает за процесс заряда АКБ, когда аппарат загружен в TWRP. Это уже можно было понять по названию файла. Решая всё тот же вопрос уменьшения размера сборки я заменил его на более старый, «весом» в 850 кб (в последних TWRP оригинальный бинарник весит 1,7+ мб). Девайс как заряжался, так и заряжается.
adbd — отвечает за обмен данными через USB разъём. Удаление делает невозможным подключение к ПК через adb интерфейс. Тоже заменил в сборке версию в 1,6 мб более старой на 350 кб. Разницы не заметил.
recovery — это, с вашего позволения, и есть TWRP. Здесь всё: функции, конструкции, начальные переменные, инструкции по работе с темами, сервисами, утилитами и т.д. и т.п.. Этоn файл и несколько дополнительных (его либы, linker, binder, crypto. ) — «движок» TWRP. При правке очередной версии не забудьде об этом и оставьте эти файлы на своём месте.
практически всё остальное — стандартные UNIX утилиты, которые скомпилированы для Android OS. Не удивляйтесь, если узнать о их функционале и использовании Вас будут «посылать» в поисковик.
twrpapp.apk — вот именно это нам постоянно предлагают установить. И именно это будет «занесено» в систему при малейшей неосторожности пользователя.
5. tmp — точка монтирования временного хранилища файлов. Использует оперативную память. Не удивляйтесь, если процесс, к примеру, распаковки туда файла объёмом >= оперативной памяти девайса, закончится с ошибкой.
5. twres — весь пользовательский интерфейс — здесь! Шрифты, графика, языковые файлы, «xml скелет» для объединения всего этого в то, чем мы привыкли пользоваться.
6. vendor — драйвера. Без комментариев.

*Набор файлов, приведённый выше, крайне примерный! Следует понимать и учитывать особенности архитектур, марок и моделей аппаратов, к которым будете пытаться применять данные наблюдения.
**В сборках TWRP 3.3.1-1 для некоторых устройств уже используется именно mksh. OrangeFOX 10+ использует bash.

Сообщение отредактировал Идите Лесом — 04.09.19, 19:56

<?xml version=»1.0″?>
<recovery>
<details>
<resolution width=»1080″ height=»1920″/>
<author>TeamWin</author>
<title>TWRP</title>
<description>splash screen</description>
<themeversion>3</themeversion>
</details>

<resources>
<font name=»font_l» filename=»RobotoCondensed-Regular.ttf» size=»52″/>
<image name=»splashlogo» filename=»splashlogo» retainaspect=»1″/>
<image name=»splashteamwin» filename=»splashteamwin» retainaspect=»1″/>
</resources>

<variables>
<variable name=»screen_width» value=»1080″/>
<variable name=»screen_height» value=»1920″/>
<variable name=»background_color» value=»#222222″/>
<variable name=»header_color» value=»#555555″/>
<variable name=»accent_color» value=»#0090CA»/>
</variables>

<pages>
<page name=»splash»>
<background color=»%background_color%»/>

<fill color=»%header_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»456″/>
</fill>

<image>
<image resource=»splashlogo»/>
<placement x=»540″ y=»456″ placement=»4″/>
</image>

<image>
<image resource=»splashteamwin»/>
<placement x=»540″ y=»1540″ placement=»4″/>
</image>

<text color=»%header_color%»>
<font resource=»font_l»/>
<placement x=»540″ y=»1590″ placement=»5″/>
<text>Recovery Project %tw_version%</text>
</text>
</page>
</pages>
</recovery>

<pages>
<page name=»splash»>
<background color=»%background_color%»/>

<fill color=»%header_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»456″/>
</fill>

<image>
<image resource=»splashlogo»/>
<placement x=»540″ y=»456″ placement=»4″/>
</image>

<image>
<image resource=»splashteamwin»/>
<placement x=»540″ y=»1540″ placement=»4″/>
</image>

<text color=»%header_color%»>
<font resource=»font_l»/>
<placement x=»540″ y=»1590″ placement=»5″/>
<text>Recovery Project %tw_version%</text>
</text>
</page>
</pages>

показываем текст Recovery Project %tw_version% (значение переменной %tw_version% нам предоставляет бинарник recovery), окрашенный в %header_color% (#555555), используя шрифт и его размер font_l (filename=»RobotoCondensed-Regular.ttf» size=»52″) по координатам в пикселах x=»540″ y=»1590″ поверх всех-привсех объектов placement=»5″.

Пока мы смотрели на splash происходило примерно следующее:
TWRP закончил выполнять последние приготовления и проверки, на основе которых присвоил значения множеству переменных. Теперь загрузился второй (это последний принудительно подгруженный xml файл — все остальные вызываются из него) кусок темы «ui.xml». Уже в нём добавлен импорт «portrait.xml» вот таким образом

<resources>
<font name=»font_l» filename=»RobotoCondensed-Regular.ttf» size=»54″/>
<font name=»font_m» filename=»RobotoCondensed-Regular.ttf» size=»42″/>
<font name=»font_s» filename=»RobotoCondensed-Regular.ttf» size=»36″/>
<font name=»fixed» filename=»DroidSansMono.ttf» size=»30″/>

<font name=»keylabel» filename=»RobotoCondensed-Regular.ttf» size=»64″/>
<font name=»keylabel-small» filename=»RobotoCondensed-Regular.ttf» size=»46″/>
<font name=»keylabel-longpress» filename=»RobotoCondensed-Regular.ttf» size=»32″/>

<image name=»logo» filename=»logo» retainaspect=»1″/>
<image name=»main_button» filename=»main_button»/>
<image name=»main_button_half_height» filename=»main_button_half_height»/>
<image name=»main_button_half_height_full_width» filename=»main_button_half_height_full_width»/>
<image name=»fab_selectfolder» filename=»fab_selectfolder» retainaspect=»1″/>
<image name=»tab_3″ filename=»tab_3″/>
<image name=»tab_4″ filename=»tab_4″/>
<image name=»file» filename=»file» retainaspect=»1″/>
<image name=»folder» filename=»folder» retainaspect=»1″/>
<image name=»unlock_icon» filename=»unlock_icon» retainaspect=»1″/>
<image name=»home» filename=»home» retainaspect=»1″/>
<image name=»back» filename=»back» retainaspect=»1″/>
<image name=»console» filename=»console» retainaspect=»1″/>
<image name=»kb_hide» filename=»kb_hide» retainaspect=»1″/>
<image name=»kb_show» filename=»kb_show» retainaspect=»1″/>
<image name=»checkbox_false» filename=»checkbox_false» retainaspect=»1″/>
<image name=»checkbox_true» filename=»checkbox_true» retainaspect=»1″/>
<image name=»radio_false» filename=»radio_false» retainaspect=»1″/>
<image name=»radio_true» filename=»radio_true» retainaspect=»1″/>
<image name=»sort_asc» filename=»sort_asc»/>
<image name=»sort_desc» filename=»sort_desc»/>
<image name=»sort_empty» filename=»sort_empty»/>
<animation name=»progress» filename=»indeterminate»/>
<image name=»progress_empty» filename=»progress_empty»/>
<image name=»progress_full» filename=»progress_fill»/>
<image name=»slider» filename=»slider»/>
<image name=»slider_used» filename=»slider_used»/>
<image name=»slider_touch» filename=»slider_touch»/>
<image name=»handle» filename=»handle»/>
<image name=»cursor» filename=»cursor» retainaspect=»1″/>
<image name=»tab_general» filename=»tab_general» retainaspect=»1″/>
<image name=»tab_timezone» filename=»tab_timezone» retainaspect=»1″/>
<image name=»tab_display» filename=»tab_display» retainaspect=»1″/>
<image name=»tab_vibration» filename=»tab_vibration» retainaspect=»1″/>
<image name=»tab_language» filename=»tab_language» retainaspect=»1″/>

<image name=»backspace» filename=»backspace» retainaspect=»1″/>
<image name=»enter» filename=»enter» retainaspect=»1″/>
<image name=»shift» filename=»shift» retainaspect=»1″/>
<image name=»shift_fill» filename=»shift_fill» retainaspect=»1″/>
<image name=»space» filename=»space» retainaspect=»1″/>
<image name=»kb_arrow_left» filename=»kb_arrow_left» retainaspect=»1″/>
<image name=»kb_arrow_right» filename=»kb_arrow_right» retainaspect=»1″/>
<image name=»kb_arrow_up» filename=»kb_arrow_up» retainaspect=»1″/>
<image name=»kb_arrow_down» filename=»kb_arrow_down» retainaspect=»1″/>
</resources>

<variables>
<variable name=»tw_samsung_navbar» value=»0″ persist=»1″/>

<variable name=»tw_hide_kb» value=»0″/>
<variable name=»screen_width» value=»1080″/>
<variable name=»screen_height» value=»1920″/>
<variable name=»status_height» value=»72″/>
<variable name=»header_height» value=»256″/>
<variable name=»navbar_height» value=»130″/>
<variable name=»content_width» value=»1008″/>
<variable name=»content_overlay_width» value=»936″/>
<variable name=»dialog_height» value=»704″/>
<variable name=»back_button_x» value=»240″/>
<variable name=»console_button_x» value=»840″/>
<variable name=»indent» value=»36″/>
<variable name=»col1_x_left» value=»72″/>
<variable name=»col1_x_header» value=»184″/>
<variable name=»center_x» value=»540″/>
<variable name=»col1_x_right» value=»576″/>
<variable name=»indent_right» value=»1044″/>
<variable name=»tab_height» value=»96″/>
<variable name=»tab_indicator_height» value=»6″/>
<variable name=»tab_y» value=»304″/>
<variable name=»tab3_width» value=»360″/>
<variable name=»tab4_width» value=»270″/>
<variable name=»tab5_width» value=»216″/>
<variable name=»tab3_col2_x» value=»360″/>
<variable name=»tab3_col3_x» value=»720″/>
<variable name=»tab4_col2_x» value=»270″/>
<variable name=»tab4_col4_x» value=»810″/>
<variable name=»tab5_col2_x» value=»216″/>
<variable name=»tab5_col3_x» value=»432″/>
<variable name=»tab5_col4_x» value=»648″/>
<variable name=»tab5_col5_x» value=»864″/>
<variable name=»tab5_centered_col1_x» value=»108″/>
<variable name=»tab5_centered_col2_x» value=»324″/>
<variable name=»tab5_centered_col4_x» value=»756″/>
<variable name=»tab5_centered_col5_x» value=»972″/>
<variable name=»btn3_col2_x» value=»384″/>
<variable name=»btn3_col3_x» value=»732″/>
<variable name=»btn4_col2_x» value=»297″/>
<variable name=»btn4_col3_x» value=»558″/>
<variable name=»btn4_col4_x» value=»819″/>
<variable name=»row1_header_y» value=»4″/>
<variable name=»row2_header_y» value=»72″/>
<variable name=»row3_header_y» value=»90″/>
<variable name=»row4_header_y» value=»168″/>
<variable name=»row1_y» value=»256″/>
<variable name=»row1a_y» value=»288″/>
<variable name=»row2_y» value=»320″/>
<variable name=»row2a_y» value=»352″/>
<variable name=»row_tab_y» value=»346″/>
<variable name=»row2_input_y» value=»381″/>
<variable name=»row3_y» value=»384″/>
<variable name=»row3_input_y» value=»413″/>
<variable name=»row3a_y» value=»416″/>
<variable name=»row4_y» value=»448″/>
<variable name=»row4_input_y» value=»477″/>
<variable name=»row4a_y» value=»480″/>
<variable name=»row5_y» value=»512″/>
<variable name=»row5a_y» value=»544″/>
<variable name=»row6_y» value=»576″/>
<variable name=»row6a_y» value=»608″/>
<variable name=»row7_y» value=»640″/>
<variable name=»row7a_y» value=»672″/>
<variable name=»row8_y» value=»704″/>
<variable name=»row8a_y» value=»736″/>
<variable name=»row9_y» value=»768″/>
<variable name=»row9a_y» value=»800″/>
<variable name=»row10_y» value=»832″/>
<variable name=»row10a_y» value=»864″/>
<variable name=»row11_y» value=»896″/>
<variable name=»row11a_y» value=»928″/>
<variable name=»row12_y» value=»960″/>
<variable name=»row12a_y» value=»992″/>
<variable name=»row13_y» value=»1024″/>
<variable name=»row13a_y» value=»1056″/>
<variable name=»row14_y» value=»1088″/>
<variable name=»row14a_y» value=»1120″/>
<variable name=»row15_y» value=»1152″/>
<variable name=»row15a_y» value=»1184″/>
<variable name=»row16_y» value=»1216″/>
<variable name=»row16a_y» value=»1248″/>
<variable name=»row17_y» value=»1280″/>
<variable name=»row17a_y» value=»1312″/>
<variable name=»row18_y» value=»1344″/>
<variable name=»row18a_y» value=»1376″/>
<variable name=»row19_y» value=»1408″/>
<variable name=»row19a_y» value=»1440″/>
<variable name=»row20_y» value=»1472″/>
<variable name=»row20a_y» value=»1504″/>
<variable name=»row21_y» value=»1536″/>
<variable name=»row21a_y» value=»1568″/>
<variable name=»row22_y» value=»1600″/>
<variable name=»row22a_y» value=»1632″/>
<variable name=»row23_y» value=»1664″/>
<variable name=»row23a_y» value=»1696″/>
<variable name=»row24_y» value=»1728″/>
<variable name=»row24a_y» value=»1760″/>
<variable name=»row25_y» value=»1792″/>
<variable name=»navbar_y» value=»1792″/>
<variable name=»navbar_btn_y» value=»1856″/>
<variable name=»keyboard_y» value=»1149″/>
<variable name=»keyboard_terminal_y» value=»1053″/>
<variable name=»background_color» value=»#1A1A1A»/>
<variable name=»accent_color» value=»#0090CA»/>
<variable name=»accent_color_semitransparent» value=»#0090CA30″/>
<variable name=»text_color» value=»#EEEEEE»/>
<variable name=»text_button_color» value=»#EEEEEE»/>
<variable name=»text_success_color» value=»#76FF03″/>
<variable name=»text_fail_color» value=»#FF0101″/>
<variable name=»highlight_color» value=»#1A1A1A80″/>
<variable name=»caps_highlight_color» value=»#22222280″/>
<variable name=»transparent» value=»#00000000″/>
<variable name=»semi_transparent» value=»#00000099″/>
<variable name=»warning» value=»#F8F8A0″/>
<variable name=»error» value=»#FF0101″/>
<variable name=»highlight» value=»#0090CA»/>
<variable name=»fileselector_linecolor» value=»#555555″/>
<variable name=»fileselector_highlight_color» value=»#555555″/>
<variable name=»fileselector_separatorheight» value=»2″/>
<variable name=»fileselector_spacing» value=»0″/>
<variable name=»fileselector_install_height» value=»1152″/>
<variable name=»fileselector_filemanager_height» value=»1376″/>
<variable name=»partitionlist_spacing» value=»0″/>
<variable name=»partitionlist_storage_height» value=»544″/>
<variable name=»partitionlist_flashimage_height» value=»544″/>
<variable name=»partitionlist_wipe_height» value=»1088″/>
<variable name=»partitionlist_mount_height» value=»832″/>
<variable name=»partitionlist_backup_height» value=»768″/>
<variable name=»listbox_timezone_height» value=»756″/>
<variable name=»listbox_settings_height» value=»960″/>
<variable name=»listbox_advanced_height» value=»700″/>
<variable name=»fastscroll_w» value=»24″/>
<variable name=»fastscroll_linew» value=»2″/>
<variable name=»fastscroll_rectw» value=»24″/>
<variable name=»fastscroll_recth» value=»108″/>
<variable name=»slidervalue_lineh» value=»3″/>
<variable name=»slidervalue_padding» value=»0″/>
<variable name=»slidervalue_sliderw» value=»72″/>
<variable name=»slidervalue_sliderh» value=»108″/>
<variable name=»slideout_height» value=»1686″/>
<variable name=»slideout_bg_height» value=»1720″/>
<variable name=»input_height» value=»64″/>
<variable name=»input_line_width» value=»3″/>
<variable name=»console_height» value=»960″/>
<variable name=»console_terminal_height» value=»950″/>
<variable name=»dialog_button_x» value=»696″/>
<variable name=»pattern_x» value=»126″/>
<variable name=»pattern_dot_dia» value=»32″/>
<variable name=»pattern_line_w» value=»12″/>
<variable name=»pattern_size» value=»828″/>
</variables>

<templates>
<template name=»page»>
<background color=»%background_color%»/>

<fill color=»%accent_color%»>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%header_height%»/>
</fill>

<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»key»>home</action>
</button>

<fill color=»#00000030″>
<condition var1=»tw_simulate_actions» var2=»0″/>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%status_height%»/>
</fill>

<fill color=»%text_fail_color%»>
<condition var1=»tw_simulate_actions» var2=»1″/>
<placement x=»0″ y=»0″ w=»%screen_width%» h=»%status_height%»/>
</fill>

<text color=»%text_color%»>
<condition var1=»tw_no_cpu_temp» var2=»1″/>
<font resource=»font_m»/>
<placement x=»%indent%» y=»%row1_header_y%»/>
<text>%tw_version%</text>
</text>

<text color=»%text_color%»>
<font resource=»font_m»/>
<placement x=»%center_x%» y=»%row1_header_y%» placement=»5″/>
<text>%tw_time%</text>
</text>

<text color=»%text_color%»>
<conditions>
<condition var1=»tw_no_battery_percent» var2=»0″/>
<condition var1=»tw_battery» op=»>» var2=»0″/>
<condition var1=»tw_battery» op=»<» var2=»101″/>
</conditions>
<font resource=»font_m»/>
<placement x=»%indent_right%» y=»%row1_header_y%» placement=»1″/>
<text><@battery_pct=Battery: %tw_battery%></text>
</text>

<fill color=»#000000″>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»%navbar_y%» w=»%screen_width%» h=»%navbar_height%»/>
</fill>

<button>
<condition var1=»tw_samsung_navbar» op=»!=» var2=»1″/>
<placement x=»%back_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»back»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>back</action>
</button>

<button>
<condition var1=»tw_samsung_navbar» op=»=» var2=»1″/>
<placement x=»%back_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»console»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»overlay»>slideout</action>
</button>

<button>
<placement x=»%center_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»home»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>home</action>
</button>

<button>
<condition var1=»tw_samsung_navbar» op=»!=» var2=»1″/>
<placement x=»%console_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»console»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»overlay»>slideout</action>
</button>

<button>
<condition var1=»tw_samsung_navbar» op=»=» var2=»1″/>
<placement x=»%console_button_x%» y=»%navbar_btn_y%» placement=»4″/>
<image resource=»back»/>
<condition var1=»tw_busy» var2=»0″/>
<action function=»key»>back</action>
</button>

<action>
<touch key=»power»/>
<action function=»togglebacklight»/>
</action>

<template name=»progress_bar»>
<progressbar>
<placement x=»%indent%» y=»%row17a_y%»/>
<resource empty=»progress_empty» full=»progress_full»/>
<data name=»ui_progress»/>
</progressbar>

<animation>
<placement x=»%indent%» y=»%row17a_y%»/>
<resource name=»progress»/>
<speed fps=»24″ render=»2″/>
<loop frame=»1″/>
</animation>
</template>

Сообщение отредактировал Идите Лесом — 31.08.19, 01:12

<button style=»button_quarter_width»>
<placement x=»%indent%» y=»%row16a_y%»/>
<text><@tz_offset_none=None></text>
<action function=»set»>tw_time_zone_guioffset=0</action>
</button>

<button style=»button_quarter_width»>
<placement x=»%btn4_col2_x%» y=»%row16a_y%»/>
<text><@tz_offset_15=15></text>
<action function=»set»>tw_time_zone_guioffset=15</action>
</button>

<button style=»button_quarter_width»>
<placement x=»%btn4_col3_x%» y=»%row16a_y%»/>
<text><@tz_offset_30=30></text>
<action function=»set»>tw_time_zone_guioffset=30</action>
</button>

<button style=»button_quarter_width»>
<placement x=»%btn4_col4_x%» y=»%row16a_y%»/>
<text><@tz_offset_45=45></text>
<action function=»set»>tw_time_zone_guioffset=45</action>
</button>

<checkbox>
<placement x=»%indent%» y=»%row18a_y%»/>
<font resource=»font_m» color=»%text_color%»/>
<text><@use_dst_chk=Use daylight savings time (DST)></text>
<data variable=»tw_time_zone_guidst»/>
<image checked=»checkbox_true» unchecked=»checkbox_false»/>
</checkbox>

<slidervalue>
<placement x=»indent» y=»%row15a_y%» w=»%content_width%»/>
<data variable=»tw_time_zone_guioffset» min=»0″ max=»59″/>
</slidervalue>

<checkbox>
<placement x=»%indent%» y=»%row19_y%»/>
<font resource=»font_m» color=»%text_color%»/>
<text><@use_dst_chk=Use daylight savings time (DST)></text>
<data variable=»tw_time_zone_guidst»/>
<image checked=»checkbox_true» unchecked=»checkbox_false»/>
</checkbox>

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»key»>home</action>
</button>

<button>
<condition var1=»tw_busy» var2=»0″/>
<placement x=»0″ y=»0″/>
<image resource=»logo»/>
<action function=»reboot»/>
</button>

<page name=»main2″>
<template name=»page»/>

<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>

<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text><@install_btn=Install></text>
<actions>
<action function=»queueclear»/>
<action function=»set»>tw_selectimage=0</action>
<action function=»page»>install</action>
</actions>
</button>

<page name=»my_own_page_1″>
<template name=»page»/>

<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>

<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text><@install_btn=Install></text>
<actions>
<action function=»queueclear»/>
<action function=»set»>tw_selectimage=0</action>
<action function=»page»>install</action>
</actions>
</button>

] <page name=»my_own_page_1″>
<template name=»page»/>

<text style=»text_m»>
<condition var1=»tw_no_cpu_temp» var2=»0″/>
<placement x=»%col1_x_header%» y=»%row4_header_y%»/>
<text>%tw_version%</text>
</text>

<button style=»main_button»>
<placement x=»%indent%» y=»%row2a_y%»/>
<text>Busybox ins.</text>
<action function=»cmd»>b=»busybox»
$ umount /system 2>dev/null
$ mount -o rw /system 2>dev/null
for F in $($ find /system -type d -iname «xbin»); do
$ cp -f /sbin/$b $/$b
chown 0:0 «$/$b»
chmod 755 «$/$b»
$ —install -s $
$ umount /system 2>dev/null
</action>
</button>

Прикрепленное изображение

Сообщение отредактировал Идите Лесом — 04.09.19, 02:32

Пришло время заглянуть внутрь этой операционной системы, увидеть её состовляющие и узнать «кто за что здесь отвечает». Здесь и далее в теме все примеры распаковки/запаковки образов boot и recovery будут приведены с использованием Android Image Kitchen (в дальнейшем просто «кухня», ссылка на неё в шапке) от osm0sis в операционной системе Windows. Т.е. не стоит воспринимать процесс дословно, если Вы пользуетесь другим средством или набором средств.
Для начала убедимся, что все умеют работать с кухней:
Установив/распаковав её в любом удобном для нас месте (для меня это «Рабочий стол»), заглянем внутрь. Здесь мы видим текстовый файл с перечнем всего, что было использовано при создании, одну (пока одну) папку, в которой содержится необходимое утилите ПО, и три «bat-файла» (далее просто «батники»): «cleanup.bat», «repackimg.bat» и «unpackimg.bat». Что они делают:
— unpackimg.bat — распаковует лежащий рядом с ним файл, имеющий расширение «.img», и имя, отличное от «new-image.img» (так кухня называет собранные в ней образы и, поэтому, не считает необходимым продолжать работу с ними).
— repackimg.bat — перепаковует распакованный ранее образ, учитывая правки пользователя. Файл на выходе будет иметь название «new-image.img».
— cleanup.bat — удаляет из кухни все результаты СВОЕЙ работы. Сюда входят папки «ramdisk» и «split_img», включая их содержимое, и файл «new-image.img». Все остальные файли остаются на месте.

Начинаем изучение содержимого TWRP. Возьмём интересующий нас образ и распакуем его. Увидим, что появилось две новые папки: «ramdisk» и «split_img».

Для упрощения и согласования информации, изложенной далее, предположим, что образ имеет название «twrp.img». Коротко о содержимом «split_img»:
Здесь расположены примерно* следующие файлы:
twrp.img-base
twrp.img-board
twrp.img-cmdline
twrp.img-hash
twrp.img-headerversion
twrp.img-imgtype
twrp.img-kerneloff
twrp.img-oslevel
twrp.img-osversion
twrp.img-pagesize
twrp.img-ramdisk.cpio.gz **
twrp.img-ramdiskcomp
twrp.img-ramdiskoff
twrp.img-secondoff
twrp.img-tagsoff
twrp.img-zImage

Для чего эти файлы:
-base — сообщает базовый offset (пример содержимого «80000000»).
-board — сообщает целевую платформу (пример содержимого «msm8937»), может быть пустым.
-cmdline — сообщает некоторые команды запуска ядра: платформу (androidboot.hardware=), состояние SElinux, которое будет использовано при запуске (androidboot.selinux=), тип сборки (buildvariant=) и т.д..
-hash — сообщает метод хеширования (пример содержимого «sha1»).
-headerversion — сообщает версию заголовка (пример содержимого «0»).
-imgtype — сообщает формат образа (пример содержимого «AOSP»).
-kerneloff — сообщает offset ядра (пример содержимого «00008000»).
-oslevel — сообщает Security Patch Level (пример содержимого «2019-07»).

-osversion — сообщает целевую версию Android OS (пример содержимого «9.0.0»).
-pagesize — сообщает размер одного блока (пример содержимого «4096»).
-ramdisk.cpio.gz — содержит ramdisk распакованного образа в сжатом виде.
-ramdiskcomp — сообщает ифнормацию о формате, в котором упакован ramdisk*** (пример содержимого «gzip»).
-ramdiskoff — сообщает offset содержащегося ramdisk (пример содержимого «01000000»).
-secondoff — сообщает offset (чего конкретно не разобрался, пример содержимого «00f00000»).
-tagsoff — сообщает offset atags (пример содержимого «00000100»).
-zImage — ядро****.

*Т.к. структура образа boot/recovery вариируется в зависимости от марки, модели, платформы, взглядов на жизнь производителя и текущего положения галактик в отношении «синего карлика», то нужно считать пример обобщённым и учитывать возможные отличия.
**twrp.img-ramdisk.cpio.gz — это пример распакованной части образа, содержащей «ramdisk». Почему пример? Потому, что это архив в чистом виде. Расширение «.gz» будет присутствовать только в том случае, если «ramdisk» сжат в формате gzip. Но могут быть и другие! Неполный перечень в виде «расширение — формат»:
gz — gzip
lzo — lzop
xz — xz
lzma — lzma (иногда тоже xz)
bz2 — bzip2
lz4 — lz4
***Это очень важный момент и мы будем активно и охотно его использовать. Для того, чтобы собранный нами TWRP помещался в раздел /recovery телефона, он должен подходить по размеру. Но мы ведь хотим «запихнуть» в нашу сборку всего-привсего и много-примного! Чтобы уместить всё «добро» будем плотнее сжимать ramdisk, изменяя формат сжатия. gzip не сильно нам поможет сделать сборку компактной — лучше использовать lzma. Вот для этого изменяем в файле «twrp.img-ramdiskcomp» содержащееся там «gzip» (к примеру) на «lzma». Всё! Значение заменяем только раз. С этого момента и далее наша сборка будет сжиматься гораздо плотнее. Но! Для использования этого способа сжатия оно должно поддерживаться ядром!
****TWRP способно использовать для работы практически любое ядро, собранное для Вашего устройства. Заменить его на более актуальное иногда полезно, а иногда и просто необходимо! Для поддержки упомянутого ранее сжатия ramdick в lzma может потребоваться взять zImage от boot из свежей кастомной прошивки или из сборки TWRP, в которой поддержка уже реализована. Также версия ядра влияет на то, способно ли будет наше кастомное рекавери расшифрововать для работы раздел /data. Запомните этот момент!

/.android/adbkey.pub в /adb_keys чтобы не отключать ro.secure.
Это ключик для adb. Помогает при unauthorized состоянии. индивидуален для каждого юзера каждого компа на котором запускается adb. Наверняка все видели запрос подтверждения доступа по adb после вайпа или при подключении нового компа к девайсу. Вот в этот момент на девайсе сохраняется публичный ключ adb. Сохраняется он в файл /data/misc/adb/adb_keys (напоминает

/.ssh/authorized_keys, только без наворотов — ключ и всё). При портировании прошивок эта проблема (device unauthorized) бывает, если порт в бутлупе и не догружается до «гуёв» (пользовательского интерфейса (рабочего стола)). Ещё можно упомянуть про то, что adbd из user-прошивок не имеет возможности переключения в root-режим через adb root. Для работы этой фичи надо заменять adbd (впрочем, это уже скорее про boot.img, а не recovery.img).

Сообщение отредактировал Идите Лесом — 06.09.19, 23:39

Пример добавления в интерфейс TWRP кнопки и программирования её на выполнение shell скрипта уже изложен в теме. Теперь посмотрим, как ещё можно это использовать.

Собственно утилиты:

Сообщение отредактировал Идите Лесом — 29.02.20, 09:57

Зачем? Уже известно множество случаев неправильной работы апплетов из «стокового» busybox TWRP. Утилита mount, к примеру, не была способна примонтировать образ раздела в ext4, а sed упорно не хотел производить простейшие операции со строками в файлах. Чтобы адекватно работали все патчи, функции и «плюшки» настоятельно рекомендую загружать busybox из надёжных источников и поддерживать его в актуальном состоянии.
Варианты:
https://busybox.net/downloads/binaries

Сообщение отредактировал Идите Лесом — 05.09.19, 22:08

Сообщение отредактировал Идите Лесом — 21.01.20, 16:14

<language>
<display>Русский</display>
<!— Translated by Jemmini; modified by agur4ik, SevenMaxs, S-trace 2017 —>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *