Both sides previous revisionPrevious revisionNext revision | Previous revision |
software:android [2020/09/08 00:49] – root | software:android [2023/11/11 21:04] (current) – [Автозапуск для Magisk] root |
---|
====== Мотивация ====== | ====== Android: зачистка и настройка перед использованием ====== |
| |
| Мотивация: |
- Повысить приватность: удалить весь софт который без спроса отправляет и получает данные | - Повысить приватность: удалить весь софт который без спроса отправляет и получает данные |
- Экономия заряда: устройство делает только то что нужно владельцу | - Экономия заряда: устройство делает только то что нужно владельцу |
====== Получение удалённого доступа ====== | ====== Получение удалённого доступа ====== |
Для удобства работы лучше всего установить [[https://github.com/Entware/Entware|Entware]] и через него поставить OpenSSH, mc и прочие утилиты. | Для удобства работы лучше всего установить [[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 с: | Лучше заранее подготовить micro-sd с: |
Из F-Droid устанавливаем: | Из F-Droid устанавливаем: |
* Terminal Emulator | * Terminal Emulator |
* Ghost Commander | * Ghost Commander / Material Files |
* AnySoftKeyboard | * AnySoftKeyboard |
* BusyBox | * BusyBox |
| |
Заходим в BusyBox и инсталлируем.\\ | Заходим в BusyBox и инсталлируем.\\ |
Если произошла ошибка - скорее всего Android 9+, в нём нет отдельно точки монтирования /system и оно просто часть /, поэтому придётся править скрипты BusyBox.\\ | \\ |
Используя Ghost Commander в файлах:\\ | Если произошла ошибка - скорее всего 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/install.sh** \\ |
**/data/data/ru.meefik.busybox/files/scripts/remove.sh** \\ | **/data/data/ru.meefik.busybox/files/scripts/remove.sh** \\ |
| |
# define service, use executable here if script not needed | # define service, use executable here if script not needed |
service entware /system/opt/bin/optstart.sh | service entware /system/bin/sh /system/opt/bin/optstart.sh |
# don't start unless explicitly asked to | # don't start unless explicitly asked to |
disabled | disabled |
| |
| |
| Если это не срабатывает, можно попробовать отредактировать 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.\\ | Информация больше для справки, и на случай если потребуется искать способ запуска без 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> | <code> |
echo '' >> install-recovery.sh | echo '' >> install-recovery.sh |
</code> | </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> | <code> |
ln -s /system/opt/bin/optstart.sh /system/bin/dmbserver | /system/opt/bin/setup_autorun_legacy.sh > /dev/kmsg |
ln -s /system/opt/bin/optstart.sh /system/bin/insthk | |
ln -s /system/opt/bin/optstart.sh /system/bin/IPSecService | |
ln -s /system/opt/bin/optstart.sh /system/bin/sdp_cryptod | |
ln -s /system/opt/bin/optstart.sh /system/bin/sem_daemon | |
ln -s /system/opt/bin/optstart.sh /system/bin/sysmon | |
ln -s /system/opt/bin/optstart.sh /system/bin/load_amber_modules.sh | |
/system/bin/restorecon -Rv /system/etc/ | |
</code> | </code> |
| |
Samsung: | Затем выполнить: |
<code> | <code> |
echo '' >> /system/etc/init.goldfish.sh | chmod +x /system/etc/init.sec.boot.sh |
echo '/system/opt/bin/optstart.sh' >> /system/etc/init.goldfish.sh | ln -sf /system/opt/bin/setup_autorun_legacy.sh /system/bin/load_amber_modules.sh |
echo '' >> /system/etc/init.goldfish.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> |
| |
echo '' >> /system/etc/init.sec.boot.sh | |
echo '/system/opt/bin/optstart.sh' >> /system/etc/init.sec.boot.sh | |
echo '' >> /system/etc/init.sec.boot.sh | |
| |
/system/bin/restorecon -Rv /system/etc/ | |
| === 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> | </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> |
| |
=== rootagent === | Ещё можно попробовать добавить автозапуск в /system/etc/init.qcom.bt.sh и init.qcom.post_boot.sh, но похоже что достаточно auditd. |
| === HiScreen Spider и прочие на qualcom === |
Сработает только если есть служба rootagent. | Сработает только если есть служба rootagent. |
<code>echo '' >> /system/build.prop | <code>echo '' >> /system/build.prop |
ln -s /system/opt/bin/optstart.sh /system/etc/init.qcom.rootagent.sh | ln -s /system/opt/bin/optstart.sh /system/etc/init.qcom.rootagent.sh |
</code> | </code> |
| |
| |
| |
=== Поиск мест для автозапуска === | |
Скрипт для поиска возможных скриптов откуда можно делать автозапуск: | |
<code>dmesg | grep "init: cannot find" | sed -e "s|.*cannot find '||" | sed -e "s|', disabling '.*||"</code> | |
| |
| |
==== Исправление разрешений ==== | ==== Исправление разрешений ==== |
После копирования настроек из **/data/data** приложения с ними работать не будут тк не правильно выставлены разрешения, владелец и SeLinux атрибуты.\\ | После копирования настроек из **/data/data** приложения с ними работать не будут тк не правильно выставлены разрешения, владелец и SeLinux атрибуты.\\ |
| См скрипт: [[http://www.netlab.linkpc.net/download/software/entware/opt/bin/fix_datadata_perms.sh|/opt/bin/fix_datadata_perms.sh]] |
| |
| |
Из этих папок приложения устанавливаются сами и могут быть полностью удалены пользователем: | Из этих папок приложения устанавливаются сами и могут быть полностью удалены пользователем: |
* **/system/vendor/operator/app** | * **/system/vendor/operator/app** |
* **/system/product/preload/SER/hidden_app** (SER = Россия; специфично для Samsung; не работает после удаления приложений Samsung из /system/priv-app) | * **/system/preload/** |
| |
| Из этих папок софт ставит самсунговский CSC при первой настройке (SER = Россия): |
| * **/prism/preload/SER/hidden_app** |
| * **/system/product/preload/SER/hidden_app** |
* **/system/csc/SER/system/app** (аналогично предыдущему, для андройд 7 и возможно младше) | * **/system/csc/SER/system/app** (аналогично предыдущему, для андройд 7 и возможно младше) |
* **/system/csc/common/system/app** (аналогично предыдущему, для андройд 7 и возможно младше) | * **/system/csc/common/system/app** (аналогично предыдущему, для андройд 7 и возможно младше) |
/data использовался хак с перемонтированием файловой системы: | /data использовался хак с перемонтированием файловой системы: |
<code>/system/bin/mount -o rw,bind /data/opt /opt</code> | <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]] |
| |
| |
| |
| |
| |
| |
| {{tag>software howto linux android entware}} |