Как установить twrp через linux

Обновлено: 06.07.2024

/omni/device
mkdir -p vendor_name/device_name

Далее создаем *.mk файлы в конечной директории, проходим по только что созданному пути в "проводнике".
Создаем файл Android.mk с содержимым:

LOCAL_PATH := $(call my-dir)

ifeq ($(TARGET_DEVICE),device_name)
include $(call all-makefiles-under,$(LOCAL_PATH))

LOCAL_PATH := $(call my-dir)

ifeq ($(TARGET_DEVICE),D10A_HighScreen)
include $(call all-makefiles-under,$(LOCAL_PATH))

Далее создаем файл AndroidProducts.mk с содержимым: PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/device_name.mk \
$(LOCAL_DIR)/omni_device_name.mk PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/D10A_HighScreen.mk \
$(LOCAL_DIR)/omni_D10A_HighScreen.mk Далее создаем 2 файла которые мы указали в файле AndroidProducts.mk: device_name.mk и omni_device_name.mk. У меня это как не трудно догадаться D10A_HighScreen.mk и omni_D10A_HighScreen.mk
Содержимое файла device_name.mk должно выглядеть так:

$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr)

ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/kernel:kernel \
$(LOCAL_PATH)/dt.img:dt.img \
$(LOCAL_PATH)/recovery.fstab:root/recovery.fstab

$(call inherit-product, build/target/product/full.mk)

$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr) на omni 6.0.1 эта строка уже не нужна и от нее только ошибки сыпятся, на 4.4.4 у меня без нее не собиралось.
Внимание если в вашем ядре и рекавери нет файла dt.img, то у вас не должно быть строки:

$(shell mkdir -p $(OUT)/obj/KERNEL_OBJ/usr)

ifeq ($(TARGET_PREBUILT_KERNEL),)
LOCAL_KERNEL := $(LOCAL_PATH)/kernel
else
LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL)
endif

PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/kernel:kernel \
$(LOCAL_PATH)/dt.img:dt.img \
$(LOCAL_PATH)/recovery.fstab:root/recovery.fstab

$(call inherit-product, build/target/product/full.mk)


Все эти значения есть в вашей стоковой прошивке system/build.prop, опирайтесь в первую очередь на них. У меня так
Далее, от куда взять 3 файла что мы указали в device_name.mk? Все просто, берем программу Android Image Kitchen и распаковываем сток рекавери. Будет 2 папки ramdisk и split_img.
В папке split_img берем файл recovery.img-zImage, переименовываем его в kernel. В той же папке берем файл recovery.img-dtb и переименовываем его в dt.img, если этого файла нет, разбираем ядро и ищем там только имя уже будет boot.img-dtb, если и там нет, то он не нужен. Оба файла (или один) ложим по пути device/vendor_name/device_name
Далее идем в папку ramdisk/etc берем файл recovery.fstab, ложим туда же что и предыдущие 2 файла и редактируем его что бы он выглядел примерно так, но пути должны быть ваши!
/system ext4 /dev/block/platform/msm_sdcc.1/by-name/system
/data ext4 /dev/block/platform/msm_sdcc.1/by-name/userdata
/cache ext4 /dev/block/platform/msm_sdcc.1/by-name/cache
/boot emmc /dev/block/platform/msm_sdcc.1/by-name/boot
/recovery emmc /dev/block/platform/msm_sdcc.1/by-name/recovery
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
/internal_sd vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc flags=display="Internal_sd";storage;wipeingui;removable
/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;removable
Cоздаем файл BoardConfig.mk тут самое сложное и некоторые значения придется дергать от аппарата на том же проце. Ну поехали, пишем туда:

Открываем AIDA64, пункт ЦП, первая строка. У меня так

Первая строчка не меняется, а во второй название чипа у меня так

С первой строкой разберетесть, строка BOARD_KERNEL_CMDLINE, идем в папку разобраного рекавери и ищем файл recovery.img-cmdline и его содержимое вписываем в эту строку.
Строка BOARD_KERNEL_BASE в той же папке файл recovery.img-base его содержие вписываем в эту строку.
Строка BOARD_KERNEL_PAGESIZE там же файл recovery.img-pagesize его содержие вписываем в эту строку.
Эта BOARD_KERNEL_SEPARATED_DT := true строку не меняем.
Тут BOARD_MKBOOTIMG_ARGS сначала указываем путь к dt.img --dt device/vendor_name/device_name/dt.img Далее --kernel_offset тут пишем содержимое файла recovery.img-kerneloff
Внимание если в вашем ядре и рекавери нет файла dt.img, то у вас не должно быть строки:
BOARD_MKBOOTIMG_ARGS := --dt device/vendorname/devicename/dt.img --kernel_offset 0x******** --ramdisk_offset 0x******** --tags_offset 0x********
Не должно быть пути к этому файлу --dt device/vendorname/devicename/dt.img, просто пишем так:
BOARD_MKBOOTIMG_ARGS := --kernel_offset 0x******** --ramdisk_offset 0x******** --tags_offset 0x********
Далее --ramdisk_offset тут содержимое файла recovery.img-ramdiskoff И наконец --tags_offset тут содержимое файла recovery.img-tagsoff, ещё нужно добавить перед каждым значением 0x(ваши символы) для наглядности смотрим ниже. У меня это выглядет так

Следующее что нам нужно, это размеры разделов в байтах. Скачиваем с гугл плей "эмулятор терминала" и пишем
Открываем DiskInfo, 3 точки, настройки, ставим галки Название раздела, Экспертный режим и Отмонтированные разделы. Ищем нужный раздел, берём число из терминала и умножаем на 1024, впысываем

Строка BOARD_FLASH_BLOCK_SIZE это стяните с похожего аппарата, но я не видел другого значения пока что.


И создаём последний файл vendorsetup.sh с содержимым

Ну а теперь ждем, в папке omni/out/ не помню точного пути потом напишу, да и так найдете, будет свеже испеченый recovery.img.

В qms с просьбами помочь мне не пишите, всю необходимую инфу я вам дал. Принимаются только пожелания по редактированию. Удачи в сборке рекавери.

По вопросам наполнения шапки, обращайтесь к Куратору темы baddhet в QMS

Причина редактирования: Добавил минимальные исходники По сути нужен конфиг похожего устройства. Искать на гит хабе конечно.

Добавлено 18.01.2015, 22:13:

Потом для примера свой выложу. Через пару деньков.

Буду признателен если подскажешь как мне лучше recovery.fstab создать
/external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
/internal_sd vfat /dev/block/platform/msm_sdcc.1/by-name/usbmsc flags=display="Internal_sd";storage;wipeingui;removable
/usb-otg vfat /dev/block/sda1 /dev/block/sda flags=display="USB OTG";storage;wipeingui;removable /external_sd vfat /dev/block/mmcblk1p1 flags=display="External_sd";storage;wipeingui;removable
У тебя вроде только это есть. Внешней нет карты памяти?

Карта есть только она в системе как-то чудно монтируется через /dev/fuse (через этот fuse монтируется usb-otg, sdcard0, и ещё чего-то)

Есть arch и нежелание ставить windows, но нужно поставить twrp на xiaomi mi a1, через windows всё очень просто: качаю adb, пишу пару команд - профит, а вот через arch как?

Есть желающие помочь тупому нищуку? :c

подобная манипуляция нужна для установки android 9..



Йоканый бабай, ставь adb. Оно есть под linux (уж не отсюда ли оно под винду и перетекло?)

видал, чо я нашел в гугле?

karton1 ★★★★★ ( 16.12.18 16:56:31 )
Последнее исправление: karton1 16.12.18 16:57:21 (всего исправлений: 1)


Хз, инструкция есть только для windows и mac


А какая разница под чем adb пускать?)

Есть ли возможность как-то заменить sp flash tool?


Хотел уточнить у спецов, мб есть какие-то нюансы


Оно есть под linux, лично мтк6737 шил под дебианом.


Никаких подводных, главное что бы пк телефон увидел и все.


А если не увидит?


Надо будет настроить тогда. Я тебе нахрена ссылку на арчивики кинул? Чо как не линуксоид?


Не сталкивался с подобным, но спасибо - попробую


Пфф, просто правила udev надо будет сделать. Все в статье очень подробно описано. Ты делай, пробуй. Будут вопросы, приходи и пиши сюда, помогу.

karton1 ★★★★★ ( 16.12.18 17:01:48 )
Последнее исправление: karton1 16.12.18 17:01:58 (всего исправлений: 1)


установил android-tools, запустил adb, разблокировал загрузчик - загрузился в fast-boot, запустил adb devices - нет устройств

Боже мой. Какие нахер нюансы? Ведро собирается на линухах, соответственно тулзы изначально были на линух.

В чем проблема поставить android-tools или как у тебя в дистре оно. И сделать так:

Если рач, то ставишь android-udev, делаешь ребут либо reload правил и можешь работать

ADB это android debug bridge

А тебе нужно делать

Потому что режим Fastboot(название за себя говорит) это уже не ведроид. ADB работает только в ведре, для отладки и всего прочего чего тебе не нужно.

На 4PDA почитать можно было как шить рекавери, на линух лишь утилиты поставить и всё.

Deleted ( 16.12.18 17:51:57 )
Последнее исправление: Deleted 16.12.18 17:53:23 (всего исправлений: 1)


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


А там разве не одна команда на все? Я вообще шил наугад всегда. Не видит, значит, надо правило udev делать.

adb юзаешь например для чтения логов ведра, adb shell logcat | tee -a ./мои_логги

fastboot это режим для прошивки .img файлов и всякого прочего, а-ля разделы там почистить, сделать анлок.

ADB можно ещё юзать в TWRP, тоесть sideload'ы делать, дабы не заливать прошивку на флешку и т.д, сразу на лету по кабелю

Не видит, значит, надо правило udev делать.

Можно попробовать так:

Если увидит - ставить правила udev, либо оставить так, если не ведроидоразработчик


А, ну я не особо заморачивался. Шьется по команде flash recovery и ладно.


спасибо большое, ставится прошивка, но есть вопрос: я загрузился в twrp: fastboot boot twrp.img, потому что та команда, что выше, выдавала ошибку. Вопрос: после установки прошивки twrp останется?

Нет. boot - загрузить, flash - прошить.

Выхлоп команды flash покажи


ну один нюанс конечно есть, если ты понимаешь


FAILED (remote: partition table doesn't exist)

На некоторых девайсах может заменяться на стоковой рекавери при первой же перезагрузке


Если не разлочен boot то до этого разлочить а сам прооцесс:


Вообще вся разработка Android ведётся из под Linux. Первым делом утилита пишется под Linux, а потом портируется на винду. В случае с adb просто повезло, что и там есть libusb. Вроде он его используется.

Значит надо читать на 4PDA тему девайса и смотреть как шить


Мы из тебя информацию калеными щипцами вытягивать должны? Что за телефон хоть? Загрузчик анлокнутый?


поставил андроид, затем twrp, но поставил так, что теперь стартует рекавери, вместо андроида

Точно также качаешь adb на Linux (с официального сайта Android) или даже ставишь из реп. В отличии от винды драйвера не нужны от слова совсем. Команды выполняешь аналогичные.

Проблемы начинаются, если требуется какая-нибудь фирменная утилита производителя. adb, fastboot к ним не относятся, это стандартные утилиты Android SDK.


В общем: удалось установить кастомную проштвку, но не удалось twrp. Всем спасибо, ребята!


А через что ты ее ставил, лол? Ты же через twrp хотел ее ставить.


fastboot boot twrp, затем отформатировал, переместил прошивку в корень и через install прошил


twrp >3.1 сносят файлик в /system восстанавливающий стоковый рековери.

здесь имя образа рековери своё, но


adb, fastboot к ним не относятся, это стандартные утилиты Android SDK.

но тем не менее, вендорские адб различаются версиями и функционалом. это не раз отмечали на 4пда. вобщем, м.б. неожиданности. как известный пример - fastboot edl )



возьми уроки у lenin386 . вроде как новогодние скидки

Фастбут же , вот вот не все то золото что хвалят , видимо не везде работают такие штуки , а только у тех кто для этого не просто обои с иконками перебирал

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