Мотивация:
Обычно требуется зашить TWRP и после поставить SuRoot или Magisk.
Всё необходимое можно найти на 4PDA
Настройки, Сведения о ПО, Номер сборки - долбим раз 10.
Настройки, Параметры разработчика:
Для удобства работы лучше всего установить Entware и через него поставить OpenSSH, mc и прочие утилиты.
Быстрый способ если уже установлен свежий Magisk с использованием ADB Проверить наличие /data/adb/magisk/busybox, если есть то
cd /mnt /data/adb/magisk/busybox wget http://netlab.dhis.org/download/software/entware/install/entware_install.sh chmod +x entware_install.sh sh entware_install.sh
Лучше заранее подготовить micro-sd с:
Ставим Barcode Scanner и цепляемся к WiFi.
Ставим Magisk/SuperSU.
Ставим F-Droid.
Из F-Droid устанавливаем:
Заходим в BusyBox и инсталлируем.
Если произошла ошибка - скорее всего Android 9+, в нём нет отдельно точки монтирования /system и оно просто часть.
Есть альтернативный пакет BusyBox в F-Froid с иконкой duck, он не требует дополнительных действий.
Ручное исправление: используя Ghost Commander в файлах:
/data/data/ru.meefik.busybox/files/scripts/install.sh
/data/data/ru.meefik.busybox/files/scripts/remove.sh
заменяем:
busybox mount -o rw,remount /system
на
busybox mount -o rw,remount /
Решение от сюда: Busybox 1.31 Install error
В Terminal Emulator запускаем скрипт инсталяции:
su sh /storage/XXX/entware_install.sh
вместо XXX будет идентификатор micro-sd флешки. Если ошибок не будет то можно запускать sshd:
su /opt/etc/init.d/S40sshd start
Задаём пароль на root:
su /opt/bin/busybox passwd
После чего можно подключатся по ssh:
ssh root@172.16.0.149 -p 22222
Запускать автоматически entware можно при запуске зистемы, даже в случае сброса настроек (удаления содержимого /data).
В старых весриях Android это можно было сделать по разному, но сейчас лучше использовать способы специфичные для SuperSU или Magisk.
SuperSU и Magisk - автоматически определяется скриптом при установке и если не было ошибок то повторять описанное здесь нет смысла.
Почитать:
stackexchange.com/questions/213353
stackexchange.com/questions/213167
Требуется каждый раз после очистки /data заново ставить SuperSU и прописывать.
ln -fvs /system/opt/bin/optstart.sh '/su/su.d/000001_opt' ln -fvs /system/opt/bin/optstart.sh '/sbin/supersu/su.d/000001_opt'
Создать файл: /system/etc/init/entware.rc
#/etc/init/entware.rc # define service, use executable here if script not needed service entware /system/bin/sh /system/opt/bin/optstart.sh # don't start unless explicitly asked to disabled # only execute once, don't restart if exited # don't add if you want to restart service when killed oneshot # run with unrestricted SELinux context to avoid avc denials # it's required if SELinux is enforcing and service needs access # to some system resources not allowed by default sepolicy seclabel u:r:magisk:s0 # start the service when boot is completed on property:sys.boot_completed=1 start entware
Выполнить:
chown 0.0 /system/etc/init/entware.rc chmod 0644 /system/etc/init/entware.rc /system/bin/chcon u:object_r:system_file:s0 /system/etc/init/entware.rc
Если это не срабатывает, можно попробовать отредактировать SELinux правила и добавить их загрузку. В терминале:
/system/bin/supolicy --live 'allow init * * *' /system/bin/supolicy --save /system/etc/selinux/sepolicy
И добавить в rc файл:
on property:sys.boot_completed=1 exec u:r:magisk:s0 root root -- /system/bin/load_policy /system/etc/selinux/sepolicy
Информация больше для справки, и на случай если потребуется искать способ запуска без SuRoot/Magisk.
Скрипт для поиска возможных скриптов откуда можно делать автозапуск:
dmesg | grep "init: cannot find" | sed -e "s|.*cannot find '||" | sed -e "s|', disabling '.*||"
До 5 андройда в файлах /system/bin/install-recovery.sh или /system/etc/install-recovery.sh:
echo '' >> install-recovery.sh echo '/system/opt/bin/optstart.sh' >> /system/etc/install-recovery.sh echo '' >> /system/etc/install-recovery.sh /system/bin/restorecon -Rv /system/etc/
echo '#!/system/bin/sh' >> /system/etc/install-recovery-2.sh echo '' >> /system/etc/install-recovery-2.sh echo '/system/opt/bin/optstart.sh' >> /system/etc/install-recovery-2.sh echo '' >> /system/etc/install-recovery-2.sh chmod 0755 /system/etc/install-recovery-2.sh /system/bin/restorecon -Rv /system/etc/
В SM-J120F (андройд 5.1.1) не получилось найти способа чтобы сразу запускать стааторвыйе скрипты entware, все попытки обрывались на том, что не хватало прав, а su не работал из за ограничений SeLinux - не мог связатся со своей службой чтобы повысить права.
Пришлось делать запуск через magisk, разместив файл /data/adb/service.d/entware.sh, который просто запускает optstart.sh.
Особенности этого решения:
Скрипт setup_autorun_legacy.sh атоматически определяет что он запущен на samsung и в этом случае переносит busybox в /opt.
Чтобы скрипт запускался автоматически нужно в начало файла /system/etc/init.sec.boot.sh (после shebang) добавить:
/system/opt/bin/setup_autorun_legacy.sh > /dev/kmsg
Затем выполнить:
chmod +x /system/etc/init.sec.boot.sh ln -sf /system/opt/bin/setup_autorun_legacy.sh /system/bin/load_amber_modules.sh ln -sf /system/opt/bin/setup_autorun_legacy.sh /system/bin/sysmon /system/bin/restorecon -Rv /system/bin/ /system/bin/restorecon -Rv /system/etc/
ln -s /system/opt/bin/optstart.sh /system/bin/insthk ln -s /system/opt/bin/optstart.sh /system/bin/sysmon
Первым стартует sysmon, при этом у него ограниченный SeLinux контекст, которого достаточно чтобы запустить все что нужно для entware, однако позднее есть ограничения по работе с /system через ssh.
Поэтому в скрипт /opt/bin/optstart.sh был добавлен блок кода, который проверяет что магиск установлен и если да, то когда скрипт выполняется не под SeLinux контекстом magisk он перезапускает сам себя через su и продолжает работу уже под SeLinux контекстом magisk.
ln -s /system/opt/bin/optstart.sh /system/bin/auditd
Ещё можно попробовать добавить автозапуск в /system/etc/init.qcom.bt.sh и init.qcom.post_boot.sh, но похоже что достаточно auditd.
Сработает только если есть служба rootagent.
echo '' >> /system/build.prop echo '# start /system/etc/init.qcom.rootagent.sh' >> /system/build.prop echo 'persist.sys.rootagent=1' >> /system/build.prop echo '' >> /system/build.prop ln -s /system/opt/bin/optstart.sh /system/etc/init.qcom.rootagent.sh
Лучше посмотреть в скрипте: /opt/bin/app_disabler.sh
Полностью: /product/preload
В TWRP ADB активирован и работает без ключа.
Чтобы включить ADB и авторизовать потребуется выполнить следующее.
Загрузится в TWRP, примонтировать System и выполнить следующее.
Загружаем ключ:
adb push /root/.android/adbkey.pub /data/misc/adb/adb_keys
Включаем ADB:
adb shell echo 'ro.adb.secure=0' >> /system/build.prop echo 'ro.secure=0' >> /system/build.prop echo 'ro.debuggable=1' >> /system/build.prop echo 'persist.sys.usb.config=mtp,adb' >> /system/build.prop echo 'persist.service.adb.enable=1' >> /system/build.prop echo 'persist.service.debuggable=1' >> /system/build.prop echo '' >> /system/build.prop exit
adb shell echo 'audio.safemedia.bypass=true' >> /system/build.prop exit
После копирования настроек из /data/data приложения с ними работать не будут тк не правильно выставлены разрешения, владелец и SeLinux атрибуты.
См скрипт: /opt/bin/fix_datadata_perms.sh
Хранятся здесь: /data/system/dropbox/
/system/bin/mount -o rw,remount / /system/bin/mount -o rw,remount /system
Если удалить все SetupWizard* то после сброса настроек и авто установки софта получим устройство с сильно ограниченным функционалом, чтобы это исправить нужно выполнить через adb shell или через терминал на устройстве:
settings put global setup_wizard_has_run 1 settings put secure user_setup_complete 1 settings put global device_provisioned 1
Можно прописать это в один из скриптов автозапуска и тогда после сброса устройство сразу запустится в обычном режиме.
Из этих папок приложения считаются уже установленными и не могут быть удалены, только обновлены:
Из этих папок приложения устанавливаются сами и могут быть полностью удалены пользователем:
Из этих папок софт ставит самсунговский CSC при первой настройке (SER = Россия):
На apk файлы дожны быть выставлены владелец и права:
chown 0:0 * chmod 0644 *
В этом разделе собраны особенности работы на устройствах Samsung.
SamsungIMEv3.3Tab, HoneyBoard или как то так.
Может иметь в зависимостях другие самсунговские сервисы и без них начать падать.
Лучше установить AnySoftKeyboard, обеспечить автоустановку или разместить в /system/app чтобы гарантировать наличие работающей клавиатуры сразу после очистки устройства.
Отвечают за: язык интерфейса, параметры WiFi и сотового модуля, предустановленный софт.
База с настройками может лежать тут: /product/omc
Чтобы изменить текущие нужно прописать код в файлах: /efs/imei (сразу во всех)
Подробнее: 1, 2, 3, 4, 5
Samsung пропатчили ядро чтобы не допускать запуска исполняемых файлов из раздела /data, поэтому при установке в /data использовался хак с перемонтированием файловой системы:
/system/bin/mount -o rw,bind /data/opt /opt
Либо можно использовать симлинк, если файлы лежать за пределами /data.
Подробнее: stackoverflow, termux-packages
Бутлуп с красным сообщением: “Only official released binaries are allowed to be flashed”.
В прошивальщике (зелёный экран при прошивке): “RMM State: Prenormal” и не возможность залить TWRP.
Описание с картинками
Подробности: 1, 2.
Чтобы избежать этого нужно:
ro.security.vaultkeeper.feature=0 ro.security.vaultkeeper.native=0
Или зашить через TWRP: RMM-State_Bypass.zip который делает примерно тоже самое: заменяет на 0 значение “ro.security.vaultkeeper.feature” в файлах:
Рекомендованный порядок установки: