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
Next revisionBoth sides next revision
software:android [2022/02/04 18:34]
– removed - external edit (Unknown date) 127.0.0.1
software:android [2022/05/07 21:31]
– [Samsung GT-I9300I Galaxy S III Duos] 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 и прочие утилиты.
 +
 +Лучше заранее подготовить 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/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>
 +
 +
 +
 +==== Автозапуск на старых системах ====
 +Информация больше для справки, и на случай если потребуется искать способ запуска без 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