Site Tools


software:android

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:android [2022/02/04 18:34]
– removed - external edit (Unknown date) 127.0.0.1
software:android [2023/11/11 21:04] (current)
– [Автозапуск для Magisk] root
Line 1: Line 1:
 +====== Android: зачистка и настройка перед использованием ======
  
 +Мотивация:
 +  - Повысить приватность: удалить весь софт который без спроса отправляет и получает данные
 +  - Экономия заряда: устройство делает только то что нужно владельцу
 +  - Экономия трафика: устройство не тратит деньги на передачу/получение данных которые в явном виде не иницировал владелец
 +  - Быстрая загрузка: меньше всего загружается при старте устройства
 +  - Повышенный комфорт использования: меньше фоновых приложений - больше памяти и процессорного времени для явно нужных приложений
 +
 +
 +
 +===== Примеры =====
 +
 +
 +
 +==== 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.\\
 +Всё необходимое можно найти на [[http://4pda.ru|4PDA]]
 +
 +Настройки, Сведения о ПО, Номер сборки - долбим раз 10.\\
 +Настройки, Параметры разработчика:
 +  * Заводская разблокировка - вкл
 +  * **Stay awake** (не выключать экран по время зарядки) - тогда WiFi не будет засыпать что очень заметно при работе через SSH по сетию
 +  * Отладка по USB - вкл
 +
 +
 +
 +====== Получение удалённого доступа ======
 +Для удобства работы лучше всего установить [[https://github.com/Entware/Entware|Entware]] и через него поставить OpenSSH, mc и прочие утилиты.
 +
 +Быстрый способ если уже установлен свежий Magisk с использованием ADB
 +Проверить наличие /data/adb/magisk/busybox, если есть то
 +<code>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
 +</code>
 +
 +
 +Лучше заранее подготовить micro-sd с:
 +  * [[https://f-droid.org/F-Droid.apk|F-Droid]] - потребуется для установки другого софта
 +  * [[https://play.google.com/store/apps/details?id=com.google.zxing.client.android|Barcode Scanner]] (есть в F-Droid) - чтобы со сканировать настройки и пароль для подключения к WiFi
 +  * Скрипт [[http://www.netlab.linkpc.net/download/software/entware/entware_install.sh|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** \\
 +заменяем:
 +<code>busybox mount -o rw,remount /system</code>
 +на
 +<code>busybox mount -o rw,remount /</code>
 +Решение от сюда: [[https://github.com/meefik/busybox/issues/93|Busybox 1.31 Install error]]\\
 +
 +В Terminal Emulator запускаем скрипт инсталяции:
 +<code>
 +su
 +sh /storage/XXX/entware_install.sh</code>
 +вместо XXX будет идентификатор micro-sd флешки.
 +Если ошибок не будет то можно запускать sshd:
 +<code>
 +su
 +/opt/etc/init.d/S40sshd start</code>
 +
 +Задаём пароль на root:
 +<code>
 +su
 +/opt/bin/busybox passwd</code>
 +
 +После чего можно подключатся по ssh:
 +<code>ssh root@172.16.0.149 -p 22222</code>
 +
 +
 +
 +===== Автозапуск =====
 +Запускать автоматически entware можно при запуске зистемы, даже в случае сброса настроек (удаления содержимого /data).\\
 +В старых весриях Android это можно было сделать по разному, но сейчас лучше использовать способы специфичные для SuperSU или Magisk.\\
 +SuperSU и Magisk - автоматически определяется скриптом при установке и если не было ошибок то повторять описанное здесь нет смысла.\\
 +\\
 +Почитать:\\
 +[[https://android.stackexchange.com/questions/213353/how-to-run-an-executable-on-boot-and-keep-it-running/213623#213623|stackexchange.com/questions/213353]]\\
 +[[https://android.stackexchange.com/questions/213167/how-magisk-works/213344#213344|stackexchange.com/questions/213167]]\\
 +
 +
 +
 +==== Автозапуск для SuperSU ====
 +Требуется каждый раз после очистки /data заново ставить SuperSU и прописывать.
 +<code>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'
 +</code>
 +
 +
 +
 +==== Автозапуск для Magisk ====
 +Создать файл: /system/etc/init/entware.rc
 +<code>#/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
 +</code>
 +Выполнить:
 +<code>
 +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
 +</code>
 +
 +
 +Если это не срабатывает, можно попробовать отредактировать SELinux правила и добавить их загрузку.
 +В терминале:
 +<code>
 +/system/bin/supolicy --live 'allow init * * *'
 +/system/bin/supolicy --save /system/etc/selinux/sepolicy
 +</code>
 +
 +И добавить в rc файл:
 +<code>
 +on property:sys.boot_completed=1
 +    exec u:r:magisk:s0 root root -- /system/bin/load_policy /system/etc/selinux/sepolicy
 +</code>
 +
 +[[https://android.stackexchange.com/questions/207484/how-to-run-dnscrypt-as-a-background-service-on-android/207647#207647|Источник android.stackexchange.com]]
 +==== Автозапуск на старых системах ====
 +Информация больше для справки, и на случай если потребуется искать способ запуска без SuRoot/Magisk.\\
 +
 +
 +=== Поиск мест для автозапуска ===
 +Скрипт для поиска возможных скриптов откуда можно делать автозапуск:
 +<code>dmesg | grep "init: cannot find" | sed -e "s|.*cannot find '||" | sed -e "s|', disabling '.*||"</code>
 +
 +
 +=== Andriod 4 и младше ===
 +До 5 андройда в файлах /system/bin/install-recovery.sh или /system/etc/install-recovery.sh:
 +<code>
 +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/
 +</code>
 +
 +<code>
 +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/
 +</code>
 +
 +
 +=== 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 сохранить автозапуск потребовалось добавить скрипт [[http://www.netlab.linkpc.net/download/software/entware/opt/bin/setup_autorun_legacy.sh|/opt/bin/setup_autorun_legacy.sh]] в найденные места автостарта, как оказалось прав доступа там хватает для работы с /data.
 +
 +Скрипт setup_autorun_legacy.sh атоматически определяет что он запущен на samsung и в этом случае переносит busybox в /opt.
 +
 +Чтобы скрипт запускался автоматически нужно в начало файла /system/etc/init.sec.boot.sh (после shebang) добавить:
 +<code>
 +/system/opt/bin/setup_autorun_legacy.sh > /dev/kmsg
 +</code>
 +
 +Затем выполнить:
 +<code>
 +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/
 +</code>
 +
 +
 +
 +=== Samsung SM-G531F Galaxy Grand Prime ===
 +<code>
 +ln -s /system/opt/bin/optstart.sh /system/bin/insthk
 +ln -s /system/opt/bin/optstart.sh /system/bin/sysmon
 +</code>
 +Первым стартует sysmon, при этом у него ограниченный SeLinux контекст, которого достаточно чтобы запустить все что нужно для entware, однако позднее есть ограничения по работе с /system через ssh.\\
 +Поэтому в скрипт [[http://www.netlab.linkpc.net/download/software/entware/opt/bin/optstart.sh|/opt/bin/optstart.sh]] был добавлен блок кода, который проверяет что магиск установлен и если да, то когда скрипт выполняется не под SeLinux контекстом magisk он перезапускает сам себя через su и продолжает работу уже под SeLinux контекстом magisk.
 +
 +
 +
 +=== Samsung GT-I9300I Galaxy S III Duos ===
 +<code>
 +ln -s /system/opt/bin/optstart.sh /system/bin/auditd
 +</code>
 +
 +Ещё можно попробовать добавить автозапуск в /system/etc/init.qcom.bt.sh и init.qcom.post_boot.sh, но похоже что достаточно auditd.
 +=== HiScreen Spider и прочие на qualcom ===
 +Сработает только если есть служба rootagent.
 +<code>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
 +</code>
 +
 +
 +
 +====== Программы для удаления ======
 +Лучше посмотреть в скрипте: [[http://www.netlab.linkpc.net/download/software/entware/opt/bin/app_disabler.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 репозитории =====
 +  * [[https://briarproject.org/installing-briar-via-f-droid/|Briar]]
 +  * [[https://tox.chat/download.html#fdroid|Tox]]
 +  * [[https://www.bromite.org/fdroid|Bromite]]
 +  * [[https://microg.org/download.html|microG]]
 +
 +
 +
 +===== Включение ADB из TWRP =====
 +В TWRP ADB активирован и работает без ключа.\\
 +Чтобы включить ADB и авторизовать потребуется выполнить следующее.\\
 +Загрузится в TWRP, примонтировать System и выполнить следующее.
 +
 +Загружаем ключ:
 +<code>adb push /root/.android/adbkey.pub /data/misc/adb/adb_keys</code>
 +
 +Включаем ADB:
 +<code>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
 +</code>
 +
 +
 +
 +===== Отключение предупреждения о вреде прослушивания =====
 +<code>adb shell
 +echo 'audio.safemedia.bypass=true' >> /system/build.prop
 +exit
 +</code>
 +
 +
 +===== Перенос настроек данных на другое устройство =====
 +  * Скопировать: **/storage/emulated/0**
 +  * Скопировать: **/storage/emulated/obb**
 +  * Программы из **/data/app** лучше скопировать на флешку в новом устройстве и установить нужное
 +  * Настройки из **/data/data** копировать выборочно - от тех программ что нужны, от системных не копировать.
 +
 +
 +
 +==== Исправление разрешений ====
 +После копирования настроек из **/data/data** приложения с ними работать не будут тк не правильно выставлены разрешения, владелец и SeLinux атрибуты.\\
 +См скрипт: [[http://www.netlab.linkpc.net/download/software/entware/opt/bin/fix_datadata_perms.sh|/opt/bin/fix_datadata_perms.sh]]
 +
 +
 +
 +===== Логи ошибок приложений =====
 +Хранятся здесь: **/data/system/dropbox/**
 +
 +
 +
 +===== Перемонтировать на запись =====
 +<code>/system/bin/mount -o rw,remount /
 +/system/bin/mount -o rw,remount /system
 +</code>
 +
 +
 +
 +===== Перевод в нормальный режим =====
 +Если удалить все SetupWizard* то после сброса настроек и авто установки софта получим устройство с сильно ограниченным функционалом, чтобы это исправить нужно выполнить через adb shell или через терминал на устройстве:
 +<code>settings put global setup_wizard_has_run 1
 +settings put secure user_setup_complete 1
 +settings put global device_provisioned 1
 +</code>
 +Можно прописать это в один из скриптов автозапуска и тогда после сброса устройство сразу запустится в обычном режиме.\\
 +
 +
 +
 +===== Авто установка приложений =====
 +Из этих папок приложения считаются уже установленными и не могут быть удалены, только обновлены:
 +  * **/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 файлы дожны быть выставлены владелец и права:
 +<code>chown 0:0 *
 +chmod 0644 *</code>
 +===== Особенности Samsung =====
 +В этом разделе собраны особенности работы на устройствах Samsung.\\
 +
 +
 +
 +==== Оригинальные прошивки ====
 +[[https://samfrew.com/]]
 +
 +
 +
 +==== TWRP ====
 +[[https://twrp.me/Devices/Samsung/]]
 +==== Клавиатура ====
 +**SamsungIMEv3.3Tab**, **HoneyBoard** или как то так.\\
 +Может иметь в зависимостях другие самсунговские сервисы и без них начать падать.\\
 +Лучше установить **AnySoftKeyboard**, обеспечить автоустановку или разместить в **/system/app** чтобы гарантировать наличие работающей клавиатуры сразу после очистки устройства.\\
 +
 +
 +
 +==== Региональные настройки ====
 +Отвечают за: язык интерфейса, параметры WiFi и сотового модуля, предустановленный софт.\\
 +База с настройками может лежать тут: **/product/omc**\\
 +Чтобы изменить текущие нужно прописать код в файлах: **/efs/imei** (сразу во всех)\\
 +Подробнее: [[https://www.droidviews.com/change-csc-on-samsung-galaxy-devices-without-wiping-data/|1]], [[https://www.droidviews.com/how-to-change-csc-in-samsung-galaxy-phones/|2]], [[https://www.sammobile.com/forum/threads/31670-Tutorial-How-to-change-your-CSC-*without*-factory-reset-wipe|3]], [[https://forum.xda-developers.com/galaxy-note-8/development/utility-flashable-csc-selection-v1-0-0-t3711226|4]], [[https://forum.xda-developers.com/note5/general/guide-useful-csc-omc-tweaks-to-features-t3634498|5]]
 +
 +
 +
 +==== Хак для запуска работы entware файлов ====
 +Samsung пропатчили ядро чтобы не допускать запуска исполняемых файлов из раздела /data, поэтому при установке в 
 +/data использовался хак с перемонтированием файловой системы:
 +<code>/system/bin/mount -o rw,bind /data/opt /opt</code>
 +Либо можно использовать симлинк, если файлы лежать за пределами /data.\\
 +Подробнее: [[https://stackoverflow.com/questions/36674727/permission-denied-on-exec-from-a-binary-running-as-root|stackoverflow]], [[https://github.com/termux/termux-packages/issues/3672|termux-packages]]
 +
 +
 +
 +
 +
 +==== Подлая залочка ====
 +Бутлуп с красным сообщением: "Only official released binaries are allowed to be flashed".\\
 +В прошивальщике (зелёный экран при прошивке): "RMM State: Prenormal" и не возможность залить TWRP.\\
 +[[https://dr-bios.com/articles/unlock-bootloader-of-devices-with-rmm-state-l/12821|Описание с картинками]]\\
 +Подробности: [[https://forum.xda-developers.com/showpost.php?p=75360965&postcount=22|1]], [[https://forum.xda-developers.com/samsung-a-series-2017/how-to/guide-root-install-twrp-samsung-t3747535|2]].\\
 +\\
 +Чтобы избежать этого нужно:
 +  - удалить из **/system/priv-app**: **KnoxGuard**, **Rlc**
 +  - в **build.prop** (любой из) добавить:
 +<code>
 +ro.security.vaultkeeper.feature=0
 +ro.security.vaultkeeper.native=0
 +</code>
 +
 +\\
 +Или зашить через TWRP: RMM-State_Bypass.zip который делает примерно тоже самое: заменяет на 0 значение "ro.security.vaultkeeper.feature" в файлах:
 +  * **/system/build.prop**
 +  * **/vendor/build.prop**
 +  * **/system/vendor/build.prop**
 +\\
 +Рекомендованный порядок установки:
 +  - Download root zip and no-verity-opt-encrypt-6.0 (download links are in #2 post) and drop the zips into external sdcard
 +  - Boot into TWRP and swipe "Allow modifications"
 +  - Go into Wipe menu and select "Format data" - note that this will erase all your data including internal storage
 +  - Reboot recovery, swipe to "Allow modification" and flash RMM-State_Bypass.zip
 +  - Flash no-verity-opt-encrypt-6.0 zip downloaded at step #1 to disable data partition encryption
 +  - Flash root zip downloaded at step #1
 +  - Reboot the phone into system
 +  - After booting up in setting wizard make sure to uncheck diagnostic data
 +
 +
 +
 +{{tag>software howto linux android entware}}
software/android.txt · Last modified: 2023/11/11 21:04 by root