Site Tools


software:android

Android: зачистка и настройка перед использованием

Мотивация:

  1. Повысить приватность: удалить весь софт который без спроса отправляет и получает данные
  2. Экономия заряда: устройство делает только то что нужно владельцу
  3. Экономия трафика: устройство не тратит деньги на передачу/получение данных которые в явном виде не иницировал владелец
  4. Быстрая загрузка: меньше всего загружается при старте устройства
  5. Повышенный комфорт использования: меньше фоновых приложений - больше памяти и процессорного времени для явно нужных приложений

Примеры

Samsung Galaxy Tab A (2016) (SM-T580)

  • /system/app: из 107 (626M) приложений осталось 11 (70.6M)
  • /system/priv-app: из 128 (933.3M) осталось 27 (249.4M)
  • Итого: из 235 (1559.3M) нужны 38 (320M) - 1239.3M не нужного.

Samsung Galaxy Tab A 10.1 (SM-T510)

  • /system/app: из 97 (424.2M) приложений осталось 9 (20.8M)
  • /system/priv-app: из 137 (1362.2M) осталось 30 (317.1M)
  • Итого: из 234 (1786.4M) только 39 (337.9M) - 1448.5M не нужного.

Получение ROOT

Обычно требуется зашить TWRP и после поставить SuRoot или Magisk.
Всё необходимое можно найти на 4PDA

Настройки, Сведения о ПО, Номер сборки - долбим раз 10.
Настройки, Параметры разработчика:

  • Заводская разблокировка - вкл
  • Stay awake (не выключать экран по время зарядки) - тогда WiFi не будет засыпать что очень заметно при работе через SSH по сетию
  • Отладка по USB - вкл

Получение удалённого доступа

Для удобства работы лучше всего установить 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 с:

  • F-Droid - потребуется для установки другого софта
  • Barcode Scanner (есть в F-Droid) - чтобы со сканировать настройки и пароль для подключения к WiFi
  • Скрипт entware_install.sh - скачает и поставит entware
  • SuperSU или Magisk - в зависимости от того что рекомендовано на 4PDA для девайса

Ставим Barcode Scanner и цепляемся к WiFi.
Ставим Magisk/SuperSU.
Ставим F-Droid.
Из F-Droid устанавливаем:

  • Terminal Emulator
  • Ghost Commander / Material Files
  • AnySoftKeyboard
  • BusyBox

Заходим в 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

Автозапуск для SuperSU

Требуется каждый раз после очистки /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'

Автозапуск для Magisk

Создать файл: /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

Источник android.stackexchange.com

Автозапуск на старых системах

Информация больше для справки, и на случай если потребуется искать способ запуска без SuRoot/Magisk.

Поиск мест для автозапуска

Скрипт для поиска возможных скриптов откуда можно делать автозапуск:

dmesg | grep "init: cannot find" | sed -e "s|.*cannot find '||" | sed -e "s|', disabling '.*||"

Andriod 4 и младше

До 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/

Samsung SM-J120F

В SM-J120F (андройд 5.1.1) не получилось найти способа чтобы сразу запускать стааторвыйе скрипты entware, все попытки обрывались на том, что не хватало прав, а su не работал из за ограничений SeLinux - не мог связатся со своей службой чтобы повысить права.
Пришлось делать запуск через magisk, разместив файл /data/adb/service.d/entware.sh, который просто запускает optstart.sh.
Особенности этого решения:

  • симлинки magisk отказывается обрабатывать, как для папки service.d так и для её содержимого;
  • magisk размещает busybox в /data/adb/magisk а samsung на уровне ядра запретил запуск из /data, поэтому пришлось скопировать busybox в /opt и сделать симлинк;
  • чтобы после очистки /data сохранить автозапуск потребовалось добавить скрипт /opt/bin/setup_autorun_legacy.sh в найденные места автостарта, как оказалось прав доступа там хватает для работы с /data.

Скрипт 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/

Samsung SM-G531F Galaxy Grand Prime

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.

Samsung GT-I9300I Galaxy S III Duos

ln -s /system/opt/bin/optstart.sh /system/bin/auditd

Ещё можно попробовать добавить автозапуск в /system/etc/init.qcom.bt.sh и init.qcom.post_boot.sh, но похоже что достаточно auditd.

HiScreen Spider и прочие на qualcom

Сработает только если есть служба 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

Программы для установки

  • Activity Launcher
  • Amaze
  • Aura Store - требуется как минимум чтобы обновить WebView, версия из маркета не требует Chrome, который удалён из системы ранее
  • Briar
  • ConnectBot
  • Conversations
  • Drowser
  • Etar
  • Fennec F-Droid
  • Simple Gallery
  • GPSTest
  • Imagepipe
  • LibreTorrent
  • Music
  • Open Camera
  • Orbot
  • OsmAnd~
  • Tor Browser
  • VLC
  • WiFiAnalyzer
  • WiFiKeyShare
  • YAACC

Разное

F-Droid репозитории

Включение ADB из TWRP

В 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

Перенос настроек данных на другое устройство

  • Скопировать: /storage/emulated/0
  • Скопировать: /storage/emulated/obb
  • Программы из /data/app лучше скопировать на флешку в новом устройстве и установить нужное
  • Настройки из /data/data копировать выборочно - от тех программ что нужны, от системных не копировать.

Исправление разрешений

После копирования настроек из /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

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

Авто установка приложений

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

  • /system/product/app
  • /system/product/priv-app
  • /system/vendor/app/
  • /system/vendor/overlay

Из этих папок приложения устанавливаются сами и могут быть полностью удалены пользователем:

  • /system/vendor/operator/app
  • /system/preload/

Из этих папок софт ставит самсунговский CSC при первой настройке (SER = Россия):

  • /prism/preload/SER/hidden_app
  • /system/product/preload/SER/hidden_app
  • /system/csc/SER/system/app (аналогично предыдущему, для андройд 7 и возможно младше)
  • /system/csc/common/system/app (аналогично предыдущему, для андройд 7 и возможно младше)

На apk файлы дожны быть выставлены владелец и права:

chown 0:0 *
chmod 0644 *

Особенности Samsung

В этом разделе собраны особенности работы на устройствах Samsung.

Оригинальные прошивки

TWRP

Клавиатура

SamsungIMEv3.3Tab, HoneyBoard или как то так.
Может иметь в зависимостях другие самсунговские сервисы и без них начать падать.
Лучше установить AnySoftKeyboard, обеспечить автоустановку или разместить в /system/app чтобы гарантировать наличие работающей клавиатуры сразу после очистки устройства.

Региональные настройки

Отвечают за: язык интерфейса, параметры WiFi и сотового модуля, предустановленный софт.
База с настройками может лежать тут: /product/omc
Чтобы изменить текущие нужно прописать код в файлах: /efs/imei (сразу во всех)
Подробнее: 1, 2, 3, 4, 5

Хак для запуска работы entware файлов

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.

Чтобы избежать этого нужно:

  1. удалить из /system/priv-app: KnoxGuard, Rlc
  2. в build.prop (любой из) добавить:
ro.security.vaultkeeper.feature=0
ro.security.vaultkeeper.native=0


Или зашить через TWRP: RMM-State_Bypass.zip который делает примерно тоже самое: заменяет на 0 значение “ro.security.vaultkeeper.feature” в файлах:

  • /system/build.prop
  • /vendor/build.prop
  • /system/vendor/build.prop


Рекомендованный порядок установки:

  1. Download root zip and no-verity-opt-encrypt-6.0 (download links are in #2 post) and drop the zips into external sdcard
  2. Boot into TWRP and swipe “Allow modifications”
  3. Go into Wipe menu and select “Format data” - note that this will erase all your data including internal storage
  4. Reboot recovery, swipe to “Allow modification” and flash RMM-State_Bypass.zip
  5. Flash no-verity-opt-encrypt-6.0 zip downloaded at step #1 to disable data partition encryption
  6. Flash root zip downloaded at step #1
  7. Reboot the phone into system
  8. After booting up in setting wizard make sure to uncheck diagnostic data
software/android.txt · Last modified: 2023/11/11 21:04 by root