Сборка TWRP Recovery

Ponfertato

Кирилл, просто 1.kirill
16.12.2018
234
57
116
В данной теме обсуждается сборка из исходных кодов,
одного из самых распространенных recovery для смартфонов на базе Android OS - TWRP Recovery.


 
Последнее редактирование модератором:
  • Спасибо
Благодарности: Lord_X, Beatboxer, Vasilich и 8 других

MrYacha

Любитель оранжевого
Разработчик
17.12.2018
14
33
0
orangefox.tech
Ponfertato 1.kirill, "Устанавиливаем Repo" Тут лишнее, уберите, в скрипте и так он установится, собсно, это я писал комманду-скрипт на установку всего для друга, потом пошла в инструкции). Далее axel более не нужен, ибо он добавлен в скрипт установки

Итого. Удалим "Установка Repo" и удалим axel

cd ~ && sudo apt install git -y && git clone https://github.com/akhilnarang/scripts && cd scripts && sudo bash setup/android_build_env.sh && sudo bash setup/install_android_sdk.bash && cd && echo "done!"
 
  • Спасибо
Благодарности: Vasilich, Ponfertato и Dozerators

Bodya-Kolibass

Новичок
16.12.2018
10
31
70
Устройство
Xiaomi Redmi 5
M MrYacha, Я бы вообще эту позицию перенес в полезное (ну согласитесь, очень многое из этой репы не нужно начинающему юзеру, только больше запутывает), а для старта (начинающим) дал список пакетов рекомендованных гуглем.
 

Ponfertato

Кирилл, просто 1.kirill
16.12.2018
234
57
116
Bodya-Kolibass Bodya-Kolibass, готов прислушаться! Если есть желание, то можно разбить шапку по полезным постам
 
  • Спасибо
Благодарности: Vasilich

Bodya-Kolibass

Новичок
16.12.2018
10
31
70
Устройство
Xiaomi Redmi 5
Ponfertato 1.kirill, Не нужно ничего разбивать. Всё шикарно оформлено. Красиво и интересно и полезно. Просто начальная (стартовая для новичков) инструкция должна быть максимально приближена к сухой технической инструкции от Гугля, только с более понятными, человеческими объяснениями (с конкретными практическими примерами, как это отображено в вашей инструкции). То есть это должны быть азы, основы.
Всё остальное это "обвесы", "полезности", "удобности" - да называйте это как хотите. Их место здесь, в теме, но не в основной инструкции. После приобретения опыта и навыков сборки, каждый выберет для себя сам приемлемые инструменты создания окружения, а выдавать чей-то "самопал" за неотъемлемую часть сборки, ну это как минимум не правильно. ИМХО конечно же.
 
  • Спасибо
Благодарности: Vasilich и hyperion70

Ponfertato

Кирилл, просто 1.kirill
16.12.2018
234
57
116
Bodya-Kolibass Bodya-Kolibass, я вас услышал... Первым делом я хочу сделать инструкцию по написанию конфигов и монтированию разделов на своём опыте...
Тут ведь тема по сборке TWRP из исходников - отсюда и переписанная наскоро инструкция (хоть и мною оформленная, с правками мистера Яши)

Чуть позже думаю развить эту тему и объединить сюда как Qcom, так и MTK ньюансы в сборке... А что? Тут можно разгуляться на славу и при этом оформить всё достаточно качественно для прочтения и восприятия
 
  • Спасибо
Благодарности: Vasilich, gaguga и Bodya-Kolibass

hyperion70

#include <calmness.h>
16.12.2018
142
436
120
53
github.com
Флаги для BoardConfig.mk

  • Дефолтные значения (если не указано иначе)
    BOARD_HAS_NO_REAL_SDCARD: = true
    TW_USE_TOOLBOX: = true
    TW_EXCLUDE_SUPERSU: = true
    TW_EXCLUDE_MTP: = true
    TW_OEM_BUILD: = true
  • Добавить поддержку EXT4
    TARGET_USERIMAGES_USE_EXT4: = true
  • Отключить / включить SELinux.
    TWHAVE_SELINUX: = true
  • Удалить поддержку MTP
    TW_EXCLUDE_MTP: = true
  • Без тайм-аута экрана
    TW_NO_SCREEN_TIMEOUT: = true
  • Отключает возможность разбивки SDCard, и может сэкономить некоторое пространство, если TWRP не помещается в вашем разделе
    BOARD_HAS_NO_REAL_SDCARD: = true
  • Для большинства современных смартфонов эмуляция внутр. флешки
    RECOVERY_SDCARD_ON_DATA: = true
  • HTC Dumlock для устройств, которым это необходимо
    TW_INCLUDE_DUMLOCK: = true
  • Если устройство имеет recovery в качестве второго подраздела boot.img
    TW_HAS_NO_RECOVERY_PARTITION: = true
  • Что бы исключит ошибку "Не найден раздел BOOT"
    TW_HAS_NO_BOOT_PARTITION: = true
  • Без перезагрузки в bootloader
    TW_NO_REBOOT_BOOTLOADER: = true
  • Без перезагрузки в recovery
    TW_NO_REBOOT_RECOVERY: = true
  • Не показывать процент заряда батареи
    TW_NO_BATT_PERCENT: = true
  • То же, что и выше, для температуры процессора
    TW_NO_CPU_TEMP: = true
  • Меняет код кнопки включения на пользовательский.
    TW_CUSTOM_POWER_BUTTON: = 107
  • Всегда использовать rm -rf вместо wipe
    TW_ALWAYS_RMRF: = true
  • Запретить размонтирование /system
    TW_NEVER_UNMOUNT_SYSTEM: = true
  • Отключает USB-OTG
    TW_NO_USB_STORAGE: = true
  • Путь к lun-файлу на устройстве
    TARGET_USE_CUSTOM_LUN_FILE_PATH: = "/sys/devices/platform/mt_usb/musb-hdrc.0.auto/gadget/lun%d/file"
  • Добавляет кнопку перезагрузки в Самсунговский Odin-mode
    TW_HAS_DOWNLOAD_MODE=true
  • Блокирует FS EXT4 для разделов SD-EXT
    TW_SDEXT_NO_EXT4
  • Принудительное использование / proc / cpuinfo для определения идентификатора устройства.
    TW_FORCE_CPUINFO_FOR_DEVICE_ID: = true
  • Для старых устройств.
    TW_NO_EXFAT_FUSE: = true
  • Поддержка расшифровки /data
    TW_INCLUDE_CRYPTO - Общие модули дешифрования
  • На некоторых устройствах имя папки резервной копии TWRP будет отображать 0000000000 если cpuinfo не имеет серийного номера. С этим флагом будет использован ro.product.model в качестве имени папки
    TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID: = true
  • Управление яркостью экрана (у большинства значение по дефолту)
    TW_BRIGHTNESS_PATH: = /sys/devices/platform/s3c24xx-pwm.0/pwm-backlight.0/backlight/pwm-backlight.0/backlight
  • Второй вариант пути для вышеуказанного
    TW_SECONDARY_BRIGHTNESS_PATH: =
  • Максимальная яркость для предотвращения повреждения дисплея
    TW_MAX_BRIGHTNESS: = 255
  • Яркость по умолчанию для TWRP (<ЗНАЧЕНИЕ>/255*100%)
    TW_DEFAULT_BRIGHTNESS: = 150
  • Пользовательский путь считывания значений заряда батареи
    TW_CUSTOM_BATTERY_PATH: = /sys/class/power_supply/battery/batt_attr_text
  • Если не отображается температура ЦПУ
    TW_CUSTOM_CPU_TEMP_PATH: = true
  • Отключает возможность шифровать резервные копии с помощью пароля
    TW_EXCLUDE_ENCRYPTED_BACKUPS: = true
  • Путь к кастомному init.rc
    TARGET_RECOVERY_INITRC:=
  • Установка языка по умолчанию
    TW_DEFAULT_LANGUAGE: = EN-US
  • Архитектура
    TARGET_ARCH: = arm
  • Использовать ToyBox, вместо Busybox
    TW_USE_TOOLBOX: = true
  • Не использовать бинарники для exFAT
    TW_NO_EXFAT: = true
  • Не использовать SuperSU
    TW_EXCLUDE_SUPERSU: = true
  • Дополнительно использовать framebuffer for png (вроде работает и так)
    TW_INCLUDE_FB2PNG: = true
  • Включают LogCat демон для отладки
    TWRP_INCLUDE_LOGCAT: = true
  • Смотрите здесь:
    TARGET_RECOVERY_DEVICE_MODULES : = true
  • Включает mkfs.f2fs для форматирования разделов как F2FS
    TARGET_USERIMAGES_USE_F2FS
  • TW_THEME := - задаёт ориентацию и разрешение экрана таким образом, что при загрузке TWRP оно делает правильный выбор разрешения автоматически, без явного указания разрешения. Варианты такие:
    TW_THEME := watch_mdpi - для андроид-часов +
    TW_ROUND_SCREEN: = true - с круглым экраном

    TW_THEME := portrait_mdpi - портретная ориентация, разрешение среднее (middle)
    TW_THEME := portrait_hdpi - портретная ориентация, разрешение высокое (high)
    TW_THEME := landscape_mdpi - альбомная, среднее
    TW_THEME := landscape_hdpi - альбомная, высокое
  • Используйте собственную тему, указав путь в исходниках.
    TW_CUSTOM_THEME=
  • TW_X_OFFSET- смешени по оси X
    TW_Y_OFFSET - смещение по оси Y
    TW_W_OFFSET - изменение размера по ширине
    TW_H_OFFSET - изменение размера по высоте
    Начало отсчёта - левый верхний угол.
  • Набор дополнительных языков (например японский)
    TW_EXTRA_LANGUAGES
  • Пользовательское имя устройства для MTP
    TW_MTP_DEVICE=NAME
  • Использование RGBA, RGBX, ARGB в зависимости от характеристик дисплея.
    TARGET_RECOVERY_PIXEL_FORMAT=
  • Определяет отступы по краям экрана.
    TARGET_RECOVERY_OVERSCAN_PERCENT
  • Укажите файл .ttf, который будет использоваться в качестве шрифта по умолчанию.
    BOARD_USE_CUSTOM_RECOVERY_FONT
  • Возможно поможет при отсутствии изображения на экране
    BOARD_CUSTOM_GRAPHICS
  • Ориентация тач-скрина
    RECOVERY_TOUCHSCREEN_SWAP_XY
    RECOVERY_TOUCHSCREEN_FLIP_X
    RECOVERY_TOUCHSCREEN_FLIP_Y
  • Для устройств на базе x86
    TW_HAVE_X86_ACCELERATED_PIXELFLINGER
  • Оптимизация для ARM-NEON
    ARCH_ARM_HAVE_NEON
  • Точка монтирования
    TW_INTERNAL_STORAGE_PATH
    TW_INTERNAL_STORAGE_MOUNT_POINT
    TW_EXTERNAL_STORAGE_PATH
    TW_EXTERNAL_STORAGE_MOUNT_POINT
  • Добавляет в черный список устройство ввода прерывающее обработку касаний в twrp. Оригинальное описание .
    Зачастую используется для того, что бы убрать курсор с экрана twrp, путем добавления в этот список устройства "hbtp_vm" (virtual mouse device).
    TW_INPUT_BLACKLIST: = "input device"
  • Поворот экрана LCD 180 градусов
    BOARD_HAS_FLIPPED_SCREEN=true
  • RECOVERY_GRAPHICS_FORCE_USE_LINELENGTH - исправление кривой (в прямом смысле) графики на старых устройствах. На более новых не требуется.
  • TW_NO_LEGACY_PROPS - пропуск устаревших параметров BoardConfig
  • TARGET_HW_DISK_ENCRYPTION - позволяет TWRP работать с разделом /data в телефонах, где предусмотрено его автоматическое (принудительное, forceencrypt) шифрование.
  • TW_INCLUDE_CRYPTO_SAMSUNG - поддержка расшифровки /data на устройствах Samsung
  • TW_DEVICE_VERSION := Made by Vasya Pupkin (пример надписи) Надпись в Action Bar (вверху экрана под версией TWRP)
  • TW_USE_NEW_MINADBD - использование минимального ADB Daemon (экономия места)
  • TARGET_USES_64_BIT_BINDER := true - включение 64битного биндера (нужно для Samsung которые работают на 64-битных ядрах в 32-битном режиме)
  • Не известно <Нужна помощь>
    TW_DISABLE_DOUBLE_BUFFERING
    TARGET_RECOVERY_FORCE_PIXEL_FORMAT
    TW_IGNORE_MAJOR_AXIS_0
    TW_IGNORE_MT_POSITION_0
    TW_IGNORE_ABS_MT_TRACKING_ID
    TW_WHITELIST_INPUT
    TW_INCLUDE_BLOBPACK
    TW_NO_SCREEN_BLANK
    BOARD_USES_BML_OVER_MTD
Оригинальная тема:
CREDITS :
@ for some explanations
@ for some more explanations
@ for HUGE amount of explanations provided through PM!
$ $_Vladislav, Bodya-Kolibass Bodya-Kolibass, device_name device_name etc.
 
Последнее редактирование:

Bodya-Kolibass

Новичок
16.12.2018
10
31
70
Устройство
Xiaomi Redmi 5
В продолжение поста выше, ещё крупиночка...
  • TW_INPUT_BLACKLIST: = "input device" - добавляет в черный список устройство ввода прерывающее обработку касаний в twrp. Оригинальное описание .
    Зачастую используется для того, что бы убрать курсор с экрана twrp, путем добавления в этот список устройства "hbtp_vm" (virtual mouse device).
  • TWRP_EVENT_LOGGING: = true - включение логгирования событий. Полезно для отслеживания подключений различных устройств (в частности при ситуации описанной для предыдущего флага).
  • TW_USE_LEDS_HAPTICS := true - включение поддержки драйверов отвечающих за вибро, регистрирующихся через класс LED. Актуально для некоторых девайсов с ядром 4.9+. Оригинальное описание .
 

device_name

Нестандартное звание
22.12.2018
2
5
0
47
Для "раскладушек"
BOARD_HAS_FLIPPED_SCREEN

В смысле "для раскладушек"? Это просто флаг поворота экрана\тачскрина на 180 градусов вокруг центра экрана. Не знаю, что такое здесь "раскладушка", но флаг действует на всех девайсах - хотя применяется в основном на планшетах.
 
  • Спасибо
Благодарности: Vasilich и Bodya-Kolibass

hyperion70

#include <calmness.h>
16.12.2018
142
436
120
53
github.com
Сборка recovery вне исходников OMNI

Если у Вас на HDD случайно оказались исходники LineageOS, то вовсе не обязательно скачивать исхи Omni, даже минимальные.
Будем считать, что имеем lineage-15.1 и директория называется LOS_15.1.
  1. Докачиваем busybox
    cd ~/LOS_15.1/external git clone https://github.com/omnirom/android_external_busybox -b android-8.1 busybox
  2. Меняем папку /bootable/recovery на аналогичную из Omni
    cd ../bootable rm -rf recovery git clone https://github.com/omnirom/android_bootable_recovery -b android-8.1 recovery cd ..
  3. Помещаем дерево своего девайса в исходники
    mkdir device/Santin cd device/Santin git clone https://github.com/hyperion70/twrp_device_Santin_N1 N1 cd ../..
  4. И собираем
    source build/envsetup.sh breakfast N1 make recoveryimage
от Bodya-Kolibass Bodya-Kolibass

P.S.
Для адаптации к своему девайсу, в первую очередь обращаем внимание на recovery.fstab, разрядность системы и аргументы MKBOOTIMG.
 
Последнее редактирование:

device_name

Нестандартное звание
22.12.2018
2
5
0
47

Это флаг появления кнопки Download (точнее, Reboot --> Download) - кнопки перезагрузки в прошивочный режим "Odin mode" для Samsung\Qualcomm\Exynos аппаратов. Аналог кнопки Bootloader для МТК, которая перезагружает аппарат в fastboot. Использовать флаг нужно в сочетании с ещё одним:

TW_NO_REBOOT_BOOTLOADER := true (убирает МТК-шную кнопку перезагрузки в fastboot, потому что по умолчанию она будет, а затем...)
TW_HAS_DOWNLOAD_MODE := true (появляет вместо неё кнопку перезагрузки в Самсунговский Odin-mode)
 
Последнее редактирование:
  • Спасибо
Благодарности: Bodya-Kolibass и Vasilich

Bodya-Kolibass

Новичок
16.12.2018
10
31
70
Устройство
Xiaomi Redmi 5
Меняем папку /bootable/recovery на аналогичную из Omni
Можно и не меняя, а просто разместив рядом:
Код:
cd ./bootable
git clone https://github.com/omnirom/android_bootable_recovery.git -b android-8.1 recovery-twrp
Только в BoardConfig.mk указать об этом:
Код:
RECOVERY_VARIANT := twrp
 
  • Спасибо
Благодарности: hyperion70

hyperion70

#include <calmness.h>
16.12.2018
142
436
120
53
github.com
mtp скорее всего /dev/mtp_usb
otg нужно подключить флешку и через терминал на теле (нужны права SU) ls /dev/block Должно быть что то вроде sda1 или sda перед vold.
 

$_Vladislav

Новичок
20.03.2019
5
10
0
Флаг BoardConfig.mk для включения 64битного биндера (нужно для Samsung которые работают на 64-битных ядрах в 32-битном режиме)

TARGET_USES_64_BIT_BINDER := true
 
  • Спасибо
Благодарности: Spilex, Nemogood и hyperion70

$_Vladislav

Новичок
20.03.2019
5
10
0
Не известно <Нужна помощь>
RECOVERY_GRAPHICS_FORCE_USE_LINELENGTH - исправление кривой (в прямом смысле) графики на старых устройствах. На более новых не требуется.
TW_NO_LEGACY_PROPS - пропуск устаревших параметров BoardConfig
TARGET_HW_DISK_ENCRYPTION - позволяет TWRP работать с разделом /data в телефонах, где предусмотрено его автоматическое (принудительное, forceencrypt) шифрование.

И добавлю отсутствующее в списке:
TW_INCLUDE_CRYPTO_SAMSUNG - поддержка расшифровки /data на устройствах Samsung
TW_DEVICE_VERSION := Made by Vasya Pupkin (пример надписи) Надпись в Action Bar (вверху экрана под версией TWRP)
TW_USE_NEW_MINADBD - использование минимального ADB Daemon (экономия места)
 
Последнее редактирование:

Dima_Apatity

Сяоми? Да, да, что то такое слышал...
16.12.2018
146
537
150
37
Апатиты, Мурманская область
Устройство
iPhone 11 Pro
Всем привет! Может кто подскажет, где спрятана проблема. А заключается она в следующем: есть образ TWRP, в котором при монтировании раздела System, все папки начинают криво отображаться, и начинаются с даты, причем все они показываются пустыми.
15857112.png
Патчи ставятся, adb команды обрабатываются, но вот в Тотале такая беда.
Заранее спасибо!
 

Bodya-Kolibass

Новичок
16.12.2018
10
31
70
Устройство
Xiaomi Redmi 5
D Dima_Apatity, Очень мало инфы. Что за тело? Какое рекавери (хотя бы ссыль)? Логи? Почему тотал и в каком режиме подключение? Как во встроенном проводнике? Выхлоп по ls? Опять же речь про system, а на скрине root....
 
  • Спасибо
Благодарности: Dima_Apatity

Dima_Apatity

Сяоми? Да, да, что то такое слышал...
16.12.2018
146
537
150
37
Апатиты, Мурманская область
Устройство
iPhone 11 Pro
Какое рекавери (хотя бы ссыль)?
Отсюда .
Почему тотал и в каком режиме подключение?
Все остальное работает, но зачастую приходится менять файлы через тотал, так удобнее, после сборки апк, закинул, тут же права выставил, отправил в ребут. Подключается как только загружается тврп, т.е. adb.
Опять же речь про system, а на скрине root...
Так ломает все папки и файлы в тотале, и становится так, как на скрине. И в какую папку не зайти, пусто. Если system отмонтировать, возвращается в привычный вид. Любые другие разделы при монтировании не ломают.
Вот так выглядит без монтирования системы
35.png
Но тут еще такой нюанс. Изначально эти тврп были под орео, с переходом на девятку, они не работали, с ними что то сделали и они начали ставиться и загружаться. К сожалению, сам сборкой не занимался, только мелочевкой.
 
Последнее редактирование: