Boot img что это

Введение в Android Firmware

Boot img что это

Телефоны и планшеты Android, как правило, намного более открытые, чем их аналоги с такими операционным системами, как iOS, Tizen или Windows 10 Mobile.

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

CyanogenMod, Paranoid Android и проект Pure Nexus – примеры пользовательских прошивок, которые пользуются большой популярностью среди пользователей Android.

Пользовательская прошивка также является единственным способом установки новых версий Android на устройствах, которые больше не поддерживаются их производителями. Если вы не владеете устройством, принадлежащим к серии Nexus или Android One, я уверен, что вы уже это знали.

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

Предостережения

Замена прошивки – это рискованная операция, которая потенциально может привести к невозможности использования вашего устройства. В большинстве случаев это также снимает гарантию с вашего устройства.

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

1. Что такое прошивка для Android?

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

Однако прошивка для Android отличается от других.

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

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

2. Что содержит прошивка Android?

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

Что такое загрузчики

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

Как он решает, что является подлинным? Он проверяет, был ли загрузочный раздел подписан с использованием уникального ключа OEM, что является сокращением от ключа Original Equipment Manufacturer. Ключ OEM, конечно же, принадлежит производителю устройства, является закрытым, и вы не можете понять, что это такое.

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

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

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

fastboot flashing unlock

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

Что такое радио прошивка

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

Как правило, это RTOS – операционная система реального времени отвечает за управление возможностями сотовой радиосвязи устройства. Другими словами, это то, что позволяет вашему устройству совершать звонки и подключаться к Интернету с использованием беспроводных технологий, таких как 2G, 3G и 4G LTE.

RTOS – это проприетарный кусок кода и популярные производители базовых процессоров, такие как Qualcomm, MediaTek и Spreadtrum держат его в секрете. Операционная система Android обычно взаимодействует с RTOS с использованием сокетов и обратных вызовов.

Как правило, замена радио прошивки вашего устройства – плохая идея.

Что такое билды Android

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

Сборка Android обычно используется в виде ZIP-файла, который может использоваться fastboot. Он имеет следующее содержимое:

update.zip |– android-info.txt |– boot.img |– recovery.img |– system.img `– userdata.img

android-info.txt – текстовый файл, определяющий предварительные условия сборки. Например, он может указывать номера версий загрузчика и радио прошивки, необходимые для сборки. Вот пример файла android-info.txt:

require board=herring require version-bootloader=I9020XXJK1 require version-baseband=I9020XXKD1

boot.img – это двоичный файл, содержащий как ядро Linux, так и ramdisk в виде архива GZIP. Ядро – это исполняемый файл zImage для загрузки, который может использоваться загрузчиком.

С другой стороны, ramdisk является файловой системой только для чтения, которая монтируется ядром во время процесса загрузки.

Он содержит хорошо известный процесс init, первый процесс, который запускается любой операционной системой на базе Linux.

Он также содержит различные демоны, такие как adbd и healthd, которые запускаются процессом init. Вот как выглядит дерево каталогов ramdisk:

ramdisk/ |– charger -> /sbin/healthd |– data |– default.prop |– dev |– file_contexts |– fstab.grouper |– init |– init.environ.rc |– init.grouper.rc |– init.grouper.usb.rc |– init.rc |– init.recovery.grouper.rc |– init.trace.rc |– init.usb.rc |– init.zygote32.rc |– proc |– property_contexts |– sbin | |– adbd | |– healthd | |– ueventd -> ../init | `– watchdogd -> ../init |– seapp_contexts |– selinux_version |– sepolicy |– service_contexts |– sys |– system |– ueventd.grouper.rc `– ueventd.rc

system.img – образ раздела, который будет установлен в пустой каталог system, который вы можете увидеть в приведенном выше дереве.

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

Очевидно, что этот файл больше всего интересует пользователей Android, когда они запускают новый ПЗУ.

Системный образ также является файлом, который заставляет большинство пользователей Android проявлять интерес к пользовательской прошивки.

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

Единственный способ удалить bloatware – заменить образ системы производителя на более желательный образ системы.

userdata.img – образ раздела, который будет установлен в пустой каталог data, который вы можете увидеть в дереве каталогов ramdisk. Когда вы загружаете пользовательский ПЗУ, этот образ обычно пустой, и он используется для сброса содержимого каталога data.

recovery.img очень похож на boot.img. Он имеет загрузочный исполняемый файл ядра, который может использовать загрузчик, и ramdisk. Следовательно, образ для восстановления также можно использовать для запуска устройства Android.

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

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

Обычно это включает в себя запуск режима загрузчика, также называемый fastboot mode, путем нажатия комбинации аппаратных ключей, присутствующих на устройстве, а затем выбора опции Recovery.

Например, на устройстве Nexus вам нужно нажать и удерживать кнопку питания в сочетании с кнопкой уменьшения громкости.

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

adb reboot recovery

3. Использование fastboot

Самый простой способ загрузки новой прошивки на вашем устройстве – использовать инструмент fastboot. fastboot следует протоколу fastboot для связи с устройством Android. Однако это может произойти только при запуске устройства в режиме fastboot. Самый быстрый способ войти в режим fastboot – использовать adb:

adb reboot bootloader

Чтобы запустить пользовательский ПЗУ, который доступен в виде ZIP-файла, содержащего все файлы образов, упомянутые в предыдущем разделе, вы можете использовать команду fastboot update. Например, вот как вы могли бы загрузить ROM, присутствующий в файле с именем update.zip:

fastboot update update.zip

Если вы хотите загрузить только определенный образ, вы можете сделать это, используя команду quickboot flash. Например, вот как вы могли бы загрузить только образ системы:

fastboot flash system system.img Аналогичным образом, если вы хотите заменить только загрузочный образ, вы должны использовать следующую команду:
fastboot flash boot boot.img

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

fastboot boot twrp.img

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

Заключение

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

В большинстве случаев это также снимает гарантию с вашего устройства.

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

Источник: https://code.tutsplus.com/ru/articles/an-introduction-to-android-firmware--cms-26791

Как прошить через Fastboot

Boot img что это

Прошивка Android, т.е.

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

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

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

Каждое действие с собственными Андроид-устройствами пользователь осуществляет на свой страх и риск. За возможные негативные последствия использования методов, описанных на данном ресурсе, администрация сайта ответственности не несет!

– Как прошить через Fastboot:

Подготовка

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

Установка драйверов

О том, как установить специальный драйвер для фастбут-режима, можно узнать из статьи: Установка драйверов для прошивки Android

Бэкап системы

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

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

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

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

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

Для удобства следует использовать короткие имена, к примеру update.zip. Кроме прочего необходимо учитывать тот фактор, что Fastboot чувствителен к регистру букв в посылаемых командах и именах файлов. Т.е. «Update.

zip» и «update.zip» для фастбут — разные файлы.

Запуск Fastboot

Поскольку Fastboot является консольным приложением, работа с инструментом осуществляется при помощи введения команд определенного синтаксиса в командную строку Windows (cmd). Для запуска Фастбут проще всего использовать следующий метод.

1. Открываем папку с Фастбут, нажимаем на клавиатуре клавишу «Shift» и, удерживая ее, кликаем правой кнопкой мыши на свободной области. В раскрывшемся меню выбираем пункт «Открыть окно команд».

2. Дополнительно. Для облегчения работы с Fastboot можно применять программу Adb Run.

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

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

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

adb reboot bootloader

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

fastboot devices

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

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

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

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

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

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

Для проверки статуса загрузчика можно послать в устройство, находящееся в режиме fastboot и подключенное к ПК, команду:

fastboot oem device-info

Но вновь приходиться констатировать, что данный способ выяснения статуса блокировки не универсален и отличается для устройств разных производителей. Это утверждение также касается разблокировки bootloader – методология проведения процедуры отличается для разных устройств и даже для различных моделей одного бренда.

Как разблокировать Bootloader

Запись файлов в разделы памяти девайса

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

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

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

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

update

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

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

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

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

fastboot flash update.zip

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

Запись img-образов в разделы памяти

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

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

Для прошивки отдельного образа img используется команда:

fastboot flash наименование_раздела имя_файла.img

1. В качестве примера запишем раздел рекавери через фастбут. Для прошивки образа recovery.img в соответствующий раздел отправляем в консоли команду:

fastboot flash recovery recovery.img

Далее необходимо дождаться в консоли появления ответа «finished. total time…». После этого запись раздела можно считать завершенной.

2. Аналогичным способом прошиваются другие разделы. Запись файл-образа в раздел «Boot»:

fastboot flash boot boot.img

«System»:

fastboot flash system system.img

И таким же образом все остальные разделы.

3. Для пакетной прошивки сразу трех основных разделов – «boot», «recovery» и «system» можно использовать команду:

fastboot flashall

4. После завершения выполнения всех процедур аппарат можно перезагрузить в Андроид прямо из консоли, послав команду:

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

Источник: https://upgrade-android.ru/stati/stati/4043-kak-proshit-cherez-fastboot.html

Автозапуск смартфона или планшета при подключении зарядки — Audi 80, 2.0 л., 1994 года на DRIVE2

Boot img что это

Здесь процесс решения и результат, а не только готовый результат.

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

Обсуждения других пользователей, поиск решений и готовые решения в результате моих 2-х дневных поисков тут:
forum.xda-developers.com/…read.php?t=1815131&page=7
4pda.ru/forum/index.php?showtopic=675183&;

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

Сначала метод №1 c fastboot, который у меня не получился:
fastboot oem off-mode-charge 0

То есть нужно установить ADB. Весь качать не нужно, можно скачать урезанную версию на forum.xda-developers.com/showthread.php?t=2588979Затем установить root на телефон, включить режим отладки по USB. Подключить телефон. На компьютере в папке программы adb в любом месте проводника при нажатом shift нажать правой кнопкой и в меню выбрать Открыть окно команд.

Там пишем adb devices и видим телефон, если не видим решаем впорос, если видим, то вводим adb reboot-bootloader и телефон загрузится в fastboot. далее собственно: fastboot oem off-mode-charge 0

У меня не прокатило потому что далее написало — я искал решение, но не нашёл и забыл на этот лёгкий способ.

Есть подозрение на урезанную версию adb или на драйвера, но ладно, есть другой метод — это правка boot.

Далее метод №2 по парвке загрузчика.

Лично я начал с того, что все говорят нужно править init.rc. Но init.rc перезаписывается каждый раз при запуске телефона из бута => НУЖНО ПРАВИТЬ БУТ.

Получаем boot.img

Проще всего получить boot.img и записать его обратно — это использовать бэкапер под свой телеон. Бэкапер не просто приложений андроид, а всей системы телефона. Для этого нужно найти тему про свой телефон и в ней обязательно будет скрипт или программа, которая делает бэкап телефона. У меня это AIO Tookit.

В описании программы будет написано, что потребуется установить драйвера для телефона, чтобы программа смогла с ним связаться и сделать полный бэкап. Так же можно использовать другие способы, в этой теме forum.hovatek.com/thread-1405.html написаны основные — adb, adb + dd, ADB + ROMdump.zip, Terminal + ROMdump.

zip, AIO Flasher.

boot.img получен, ура, теперь его нужно разобрать.

Распаковка boot.img

Сначала сложный способ, затем лёгкий 🙂

СЛОЖНЫЙ для windows юзера:

Есть такой split_bootimg.pl на перл. Для split_bootimg.

pl (разбивалка бута) требуется perl, в принципе можно поставить на windows и из винды запустить разбивалку бута, но собиралки, то нет( поэтому есть более правильный способ через cygwin (описание на русском на хабре очень хорошее) — в нём можно работать как в linux (либо если нет возможности скачать и поставить cygwin можно запустить виртуалку virtualbox или сервак) так:
-разбираем boot или с помощью split_bootimg.pl или с помощью unpackbootimg+mkbootimg (найти можно легко по имени файла, например тут), можно воспользоваться инструкциями например такой инструкцией

ЛЁГКИЙ для windows юзера:
На 4pda парень молодец сделал суперлёгкую программу для windows, которая разбивает и собирает бут. Качаем, читаем описание как работать =>boot.img разбит! ramdisk получен!

Правка системных файлов в boot.img (точнее в ramdisk):

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

Сначала работал вот с этим кодом в init.star.rc (в разных телефонах называется по разному, но шаблон у всех у них один init.XXX.rc):

(НАЗОВУ ЭТО сервисом charger)

service charger /chargerclass chargeruser rootgroup root

oneshot

По коду: сервис charger: класс charger запускает файл /charger

Пробовал (не помогло, забегая вперёд напишу что если бы знал про монтирование /system, то часть вариантов сработало бы):— с работающего телефона скопировал через root explorer себе файл reboot из /system/bin/reboot (нужен root) и затем подменил файл /charger в корне ramdisk— вместо “/charger” писал “/sbin/reboot” а в /sbin/ копировал reboot файл, играл с правами на него— вместо “/charger” писал “/system/bin/reboot”— вставлял дополнительные строки (от пользователей с 4pda): on property:ro.bootmode=charger…(далее много кода, это только начало) и тд

Всё это не приносило успеха, но по совету по on property:ro.bootmode=charger как я вижу сейчас есть доля истины, так как в полном коде есть монтирование /system — забегая вперёд скажу что монтирование /system — это развязка.

Задался вопросом почему charger исполняется, а reboot нет. Иметь бы исходники их. Права одинаковые. Видимо внутри функции в reboot не исполняются, но почему?

Многие пишут, что на прошивках cyagoen всё работает если просто в файл /charger вписать:#!/system/bin/sh/system/bin/reboot

Опять забегая вперёд скажу, что видимо там при подключении зарядки в коде уже прописано монтирование /system.

Ну и на 3-ий день с утра я уже держал в голове, что начну я с того, что возьму весь код в другом файле уже init.star.model.rc (обратил на него внимание потому что в нём много монтирований похожих на загрузку ос) из строки функции:

(ВСЕ on — НАЗОВУ ФУНКЦИЕЙ ДЛЯ УДОБСТВА)

on fs(там ниже идёт куча монтирований всех систем и ещё всего при загрузке ОС) — думаю ОС при моей функции:on chargerдолжно выполнить всё то же что и при загрузке ОС чтобы мой reboot работал точно и вставил всё что ниже функции:on fsв мою функцию:on chargerи так как там в функции on fs было exec /system/bin/какой-то_бинарник, то попробовал его заменить на exec /system/bin/reboot
и при подключении зарядки телефон перезагрузился! То что я обрадовался — это ничего не сказать:)

Далее построчно поудалял строки и выявил, что главное это монтирование /system:

mount ext4 /dev/block/mmcblk0p1 /system wait ro

/dev/block/mmcblk0p1 — у разных прошивок может быть свой! Чтобы узнать его нужно на работающем телефоне в терминале (Terminal Emulator в play market) на рутованном телефоне глануть точки монтирования (fstab ещё в linux называется):cat /proc/mounts

и найти строку по /system

То есть в итоге чтобы заработало нужно в init.rc в функции on charger вместо старта класса (class_start) charger:
on chargerclass_start chargerСделать:

on chargermount ext4 /dev/block/mmcblk0p1 /system wait roexec /system/bin/reboot#class_start charger

То есть в код добавлено монтирование /system и исполнение файла reboot из /system, а старт класса charger можно хоть оставить, хоть убрать, ведь он не успеет исполниться после reboot

Далее просто из проб:Если так же смонтировать /system в файле init.rc в функции on charger и стартануть класс charger:on chargermount ext4 /dev/block/mmcblk0p1 /system wait roclass_start chargerА в классе charger в init.xxx.

rc ничего не меняя по классу charger просто файл /charger подменить файлом reboot, то ничего не работает. Странно! Но думаю это потому, что в бинарнике-файле reboot используются не только файлы из /system, но и из других папок, которые я не подмонтировал.

Если подмонтировать всё как при старте ОС, то думаю reboot тоже сработает.

И подтверждение моей теории вот что: если не подменять /charger файлом reboot, а в этот файл /charger вписать:#!/system/bin/sh/system/bin/reboot

То работает! Но это учитывая то, что /system я уже ранее подмонтировал! Ведь тут используются только /system/bin/sh и /system/bin/reboot из /system, который я и смонтировал.

То есть главное ДОЛЖЕН БЫТЬ ПОДМОНТИРОВАН РАЗДЕЛ /system

Ну и 2 рабочих у меня способа:1. Можно прописать в классе charger исполнение любого файла с содержимым:#!/system/bin/sh/system/bin/reboot2. Можно в функции on charger прописать:

exec /system/bin/reboot

Всё это будет работать только если подмонтирован /system

2-х дневная разработка сократилась бы в 100 раз если бы я сообразил про монтирование с самого начала, потому что все мои попытки правки и класса charger и функции on charger работали бы в большинстве вариантов если бы при этом был подмонтирован /system.

PS: при решении вопроса уже ближе к концу мне не давал покоя умный тезис из интернета:
“Файл charger — это небольшое приложение, единственная задача которого — вывести на экран значок батареи. Он не имеет никакого отношения к Android и используется тогда, когда устройство подключается к заряднику в выключенном состоянии.

В этом случае загрузки Android не происходит, а система просто загружает ядро, подключает RAM-диск и запускает charger. Последний выводит на экран иконку батареи, изображение которой во всех возможных состояниях хранится в обычных PNG-файлах внутри каталога res.

размышляя над которым я пытался сначала скопировать в бут всю папку /system/bin а потом уже перешёл на более простой метод монтирования.

Далее на очереди изменение boot logo на логотип марки автомобиля:)

Источник: https://www.drive2.ru/l/468298496017957811/

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.