The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Linux окружение noroot в Android-смартфоне собственными руками.
В этой заметке я расскажу как собрать своё Linux-окружение на Android-смартфоне
без прав root (рутовать телефон не надо). Можно конечно взять готовые решения в
Google Play Store, но можно и пройти этот путь самостоятельно.

Если вы решите повторить мой опыт, то вы получите Xfce4-окружение с псевдо
пользователем root на своём мобильном телефоне с Android. Работает это почти
без отличий от реального пользователя root, только конечно модифицировать сам
телефон это возможности не даёт. Итак приступим.

Termux

Установим в Android приложение Termux (требуется Android версии 7 или выше).
Это наше базовое Linux окружение и отправная точка. Запуская его мы попадаем в
шелл с домашним каталогом, который будем называть TERMUX_HOME.

Итак в TERMUX_HOME установим требуемые нам начальные пакеты:

   pkg install root-repo
   pkg install proot
   pkg install debootstrap
   pkg install nano
   pkg install wget
   pkg install man

Debootstrap

Теперь можно устанавливать Linux окружение.
Проверим нашу архитектуру.

   uname -ar
   Linux localhost 4.9.193-perf-gc285628 #1 SMP PREEMT Fri Aug 6 02:12:50 CST 2021 aarch64 Android

Моя архитектура 64-битная, значит --arch=arm64. Если у вас архитектура
32-битная, то ваш вариант --arch=armhf

В TERMUX_HOME:

   mkdir ./chroot
   debootstrap --arch=arm64 bullseye ./chroot http://mirror.yandex.ru/debian
   mkdir ./chroot/system
   mkdir ./chroot/apex
   mkdir ./chroot/home/user

Вот мы получили базовое окружение. Правда dpkg configure отработает наверное с
некоторыми ошибками, но войти в окружение уже можно. Ошибки мы разберём позже.

Вход в Linux окружение

Вход под псевдо рутом нам позволяет команда proot, которую мы установили ранее.
В TEMUX_HOME создадим скрипт входа start.sh:

   #!/data/data/com.termux/files/usr/bin/sh
   unset LD_PRELOAD
   proot \
     -0 \
     --link2symlink \
     -w /root \
     -r ./chroot \
     -b /sys/ \
     -b /system \
     -b /apex \
     -b /proc/ \
     -b /dev/ \
     -b /dev/pts/ \
     /usr/bin/env \
       -i \
       HOME=/root \
       LD_LIBRARY_PATH=/system/lib64:/system/apex/com.android.runtime.release/lib64 \
       XDG_RUNTIME_DIR=/tmp \
       DISPLAY=127.0.0.1:0 \
       PULSE_SERVER=tcp:127.0.0.1:4713 \
       TERM="xterm-256color" \
       PATH=/bin:/usr/bin:/sbin:/usr/sbin \
       /bin/bash --login

Для входа не под root (опционально) создайте скрипт входа ustart.sh:

   #!/data/data/com.termux/files/usr/bin/sh
   unset LD_PRELOAD
   proot \
     --link2symlink \
     -w /root \
     -r ./chroot \
     -b /sys/ \
     -b /system \
     -b /apex \
     -b /proc/ \
     -b /dev/ \
     -b /dev/pts/ \
     /usr/bin/env \
       -i \
       HOME=/home/user \
       LD_LIBRARY_PATH=/system/lib64:/system/apex/com.android.runtime.release/lib64 \
       XDG_RUNTIME_DIR=/tmp \
       DISPLAY=127.0.0.1:0 \
       PULSE_SERVER=tcp:127.0.0.1:4713 \
       TERM="xterm-256color" \
       PATH=/bin:/usr/bin:/sbin:/usr/sbin \
       /bin/bash --login

Для 32-битного окружение поправьте LD_LIBRARY_PATH

Сделаем скрипты исполняемыми:

   chmod a+x start.sh
   chmod a+x ustart.sh

Теперь можно войти в окружение:

   ./start.sh
   root@localhost:~#

Вот мы и псевдо root :).
Назовём это ENV_HOME.

Ошибки dpkg

Ошибки dpkg в основном у меня были связаны с неправильной работой 
утилиты adduser при добавлении системных пользователей. Поэтому чтобы избежать
их сразу дополним файлы (в ENV_HOME)

/etc/passwd:

   systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
   systemd-network:x:101:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
   systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
   _apt:x:103:65534::/nonexistent:/usr/sbin/nologin
   messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
   statd:x:106:65534::/var/lib/nfs:/usr/sbin/nologin
   avahi:x:108:113:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
   systemd-coredump:x:996:996:systemd Core Dumper:/:/usr/sbin/nologin
   user:x:10264:10264:User:/home/user:/bin.bash

/etc/group:

   systemd-journal:x:101:
   systemd-timesync:x:102:
   systemd-network:x:103:
   systemd-resolve:x:104:
   netdev:x:109:pi
   messagebus:x:110:
   avahi:x:113:
   systemd-coredump:x:996:
   user:x:10264:

Здесь id 10264 это id моего пользователь в TERMUX_HOME. У вас может быть другое число.

Второй хук для неисправных пакетов заключается в убирании скриптов конфигурирования (в ENV_HOME):

   mv /var/lib/dpkg/info/<package>* /tmp/

Установка остальных пакетов

В ENV_HOME выполним

   apt install xfce4 dbus-x11

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

X сервер

В Android установите приложение XServer XSDL. Этот сервер имеет также
звуковую pulseaudio подсистему. Ранее в скриптах входа в окружение в команде
proot мы передали переменные DISPLAY и PULSE_SERVER, так что у нас все готово
для запуска (в ENV_HOME):

   xfce4-session

Должна запуститься графическая оболочка, звук тоже должен работать (звуковой
вход не поддерживается только воспроизведение).
Xserver XSDL может показаться сначала не очень красивым, но он хорошо
функционален и красоты можно добиться. Мои параметры:
ориентация портретная, разрешение нативное, дурацкие кнопки alt-shift-чего-то
скрыты (они у меня всё равно не работают или я не понял как), мышь в режиме
телефон-тачпад. Можно еще попробовать поиграться с xrandr если поддерживается
для использования виртуального пространства X сервера, я не пробовал.

Библиотеки Android

В аргументах команды proot мы пробросили в окружение Android каталоги /system и /apex.

Так что нам доступны Android библитеки /system/lib /system/lib64.
Например мне нужно было чтобы правильно отрабатывала команда

   ldd /system/lib64/libOpenSLES.so

(не должно быть "not found").

Если ldd отрабатывает неправильно, то обратите внимание, библиотеки в
/system/lib* могут быть симлинками на другие места. Возможно надо подбиндить
другие каталоги Android и(или) поправить LD_LIBRARY_PATH.

Благодарности

Выражаю свою благодарность Sergii Pylypenko (pelya) за его труд - автору проектов 
XServer XSDL, pulseaudio-android, xserver-xsdl, Debian noroot. У
него я подсмотрел многое.
 
03.11.2021 , Автор: Павел Оредиез , Источник: http://tinyware.ru...
Раздел:    Корень / Пользователю / Мобильные телефоны

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Урри (ok), 21:19, 07/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо.
    Теперь можно целую автономную билд-станцию на старом ведроиде замутить без того, чтобы джаву мучить.
     
  • 1.2, Аноним (2), 18:38, 08/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Странно видеть ссылки на гуглплей, правильная ссылка на Termux https://f-droid.org/en/packages/com.termux/
    И да, требуется андроид минимум версии 7, это нужно указывать в самом начале статьи.
     
  • 1.4, Павел Отредиез (ok), 17:12, 09/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Я не хацкер. Не рутую, сторонними источниками не пользуюсь, параноей не страдаю.
     
     
  • 2.6, Аноним (6), 23:37, 10/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    При чем тут параноя? Там же по-человечески написано, что версия на гуглмаркете deprecated: Termux and its plugins are no longer updated on Google Play Store due to android 10 issues and have been deprecated.
     
     
  • 3.7, Аноним (6), 23:43, 10/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Забыл ссылку вставить:
    https://github.com/termux/termux-app
     
  • 3.9, Аййнаним (?), 01:52, 11/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не все в настройках включают отключенную по умолчанию установку "из неизвестных источников", поэтому ссылка на плеймаркет корректней нежели на фдройд.
     
     
  • 4.12, Аноним (12), 19:51, 11/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не все на андроиде имеют установленный плеймаркет. Поставить в настройках одну галочку и скачать бинарник по прямой ссылке проще и лучше, чем устанавливать проприетарное ненужно.
     
  • 4.15, Аноним (15), 10:16, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В GPlay Termux уже deprecated и не может обновляться из-за новых правил (нельзя качать и запускать бинарники не из GPlay, на чём весь Termux построен)
     
  • 4.22, Аноним (22), 06:25, 23/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    fdroid больше имеет отношение к OpenNET, чем Play Market
     
  • 2.21, Че (?), 22:46, 20/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Скажи мне свои паспортные данные и снилс пожалуйста
     

  • 1.5, Павел Отредиез (ok), 19:23, 09/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В скриптах входа в чрут надо заменить // на /. Это просто перенос строки, не знаю почему так опубликовали.
     
  • 1.8, Аййнаним (?), 01:47, 11/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "...Можно конечно взять готовые решения в
    Google Play Store..."
    А можно их озвучить? Работоспособного найти немогу. Debian noroot из статьи запускается раза с пятого, а так - чёрный экран.

    Вообще иметь переносную систему с локальным и xrdp/vnc доступом в телефоне - давнишняя и до сих пор нереализовываемая мечта. Первые версии Debian noroot работали более/менее сносно, но уже стали неработоспособны в виду недоступности обоазов (error 404).

     
     
  • 2.10, Павел Отредиез (ok), 17:48, 11/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Их много по поиску "linux" в Google Play. Пробуйте сами, по моему мнению debian noroot самый ванильный. Его недостаток в том, что автор сделал вход в пользователем, и нужно использовать fakeroot. Хотя мог оставить вход под псевдорутом как в заметке. Вообще не поленись, сделай сам, выйдет лучше. Заметка очень похожа на Debian noroot от pelya.
     
     
  • 3.11, Павел Отредиез (ok), 17:53, 11/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Забыл в заметке добавить, что все это дело устанавливается во внутреннюю ext4 память и нужно около 3Гб. На SD карточку не получится, потому что в андроид секурно запрещены внешние носители с юниксовымм fs. Иначе можно было бы элементарно рутовать подсунув suid бинарник.


     
     
  • 4.16, Аноним (16), 17:30, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    а как же опции в mount?
    -o nosuid например?
     
     
  • 5.19, Павел Отредиез (ok), 20:22, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще то да, не знаю тогда чего они так лочат нужные функции в Андроид.
     

  • 1.13, Dmitry (??), 00:33, 14/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Боюсь спросить, но всё-таки спрошу: докер заработает в таком псевдоруте?
     
     
  • 2.17, Павел Отредиез (ok), 20:18, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю, наверное нет.
     

  • 1.14, Dmitry (??), 00:46, 14/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И ещё один вопрос: физический юсб-девайс получится пробросить в это окружение?

    Большое спасибо за очень полезную инструкцию!

     
     
  • 2.18, Павел Отредиез (ok), 20:20, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > И ещё один вопрос: физический юсб-девайс получится пробросить в это окружение?

    Смартфон не рутованный, драйверов нет, ядро не поменять. /dev на андроид весь скрыт, ничего не видно. Андроид весь засекьюрен донельзя. Наверное ничего не получится.
    > Большое спасибо за очень полезную инструкцию!

     
     
  • 3.20, Павел Отредиез (ok), 20:28, 16/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> И ещё один вопрос: физический юсб-девайс получится пробросить в это окружение?
    > Смартфон не рутованный, драйверов нет, ядро не поменять. /dev на андроид весь
    > скрыт, ничего не видно. Андроид весь засекьюрен донельзя. Наверное ничего не
    > получится.

    И модули ядра не загрузить.
    Только на рутованном.
    >> Большое спасибо за очень полезную инструкцию!

     

  • 1.23, Отец Иоанн (?), 20:50, 23/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Заколупали со своим термуксом - написал бы инструкцию подходящую на 4+ андроид, тогда была бы польза. Точнее дебутстрап и прут можно и без термукса запустить на любой мобиле, а вот аналог термукса на дроид 4 не помешает - энтварь полное фуфло, особенно с дискриминацией по кол-ву пакетов на разных архитектурах.
     
  • 1.24, Отец Иоанн (?), 20:51, 23/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И вообще - дроид без рута, деньги на ветер. Всегда рутовал и рутовать буду - без рута сплошные костыли и полная бесполезность как у огрызконедофонов
     
     
  • 2.26, pavlinux (ok), 21:45, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Давай, расскажи, что умеет Андроед, но не умеет Яблоко?  
    Только всякую ...уету не пиши, типа сканера мирового эфира,
    подмены маков раз в минуту и прочие  шапочки из фольги.
     
     
  • 3.27, Самокатофил (?), 23:22, 25/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    С таки запросами (точнее их отсутствием) тебе сойдет и кирпич, павлин. А человек очевидно рутует и кастомизирует для себя, это нетипичное использование. От себя добавлю: кастомное ядро с нужными драйверами для периферии, линукс в чруте, и прочая шапочка из фольги.
     
     
  • 4.28, pavlinux (ok), 00:40, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > С таки запросами (точнее их отсутствием) тебе сойдет и кирпич, павлин.
    > А человек очевидно рутует и кастомизирует для себя, это нетипичное использование.

    Что значит "для себя"? Он какой-то мета-абстрактный мега разум из другой галактики?
    Каждое публичное действие или публикация должны иметь рациональное обоснование и ничего кроме!

    ВОТ ОБЪЯСНИТЕ ПО БАЙТАМ: ДЛЯ ЧЕГО НУЖНО РУТОВАТЬ?!

    ЖЕЛАТЕЛЬНО СРАВНИТЕЛЬНЫЕ ТЕСТЫ ТЕХ ЗАДАЧ, КОТОРЫЕ РЕШИЛИСЬ С РУТОМ
    И ОТСУТСТВИЕМ РЕШЕНИЯ ИЛИ НЕДОСТАТОЧНЫМ КАЧЕСТВОМ РЕШЕНИЯ НА ЯБЛОКАХ.  


    > От себя добавлю: кастомное ядро с нужными драйверами для периферии,
    > линукс в чруте, и прочая шапочка из фольги.

    Отэц, с линухом я ковыряюсь с 1994 года, задротством с андроедами лет 15 назад страдал.
    КПД от этого ноль. От вашего "Мама, у меня кастомное ядро" только ржать хочется.

    Мож на 4PDA в круты, тут ходят люди, кто уже в новую историю российского ИТ попал. )))

    Если ты ещё школьник-студент, тогда ладно, для самообразования потянет.
    Если уже за 30-35, то деб...^W! :D


    Вон валяются в шкафу, Xperia Z3, Sony Xperia Active, Xiaomi Redmi 7A ... все рутованые,
    Что-то полезное от этого? Да нихуа! Трата и убийство времени.

    Redmi 7A купился только из-за того, что поддерживает протокол ANT+, - нужен для работы
    со старыми смарт-весами Tanita BC1000.  Можно было без него? Как нех..я делать.

    Продать эти весы, не тратить бабло на Redmi и купить Garmin Index 2 Scale,...

    Xperia Active - 2011 года, тогда смарты только в массы входили, яблоки были по цене машины.

     
     
  • 5.29, Самокатофил (?), 09:47, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Фигассе ты из за огрызка подорвался. :-D

    >>Отэц, с линухом я ковыряюсь с 1994 года, за**_*м с андроедами лет 15 назад страдал.

    Я вижу лишь подорвавшегося раба эппл и постаревшего "отэца", который винит и оправдывает себя. ;)

    И это самое интересное. Почему? Не смог продаться, павлин? Не повелись на хвост? Ковыряние с 1994 и за**_**во с 2005 не принесли должных плодов? :-D

    Я по работе портировал нетхантер на сяоми, и пользуюсь для редтиминга, не нарадуюсь, как рабочему инструменту так и вкладу в человейник. Работа полна за*****а и фана, как в нулевых с линухой/бсдями, будучи школотой. А ты уже постарел и все? Дайте мне огрызок, стар я стал для всего этого дорма? Ты жалок, "отэц", катись на своем велосипеде без сидушки в мир пони. ;)

     
  • 5.30, Аноним (-), 16:32, 26/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что бы зарутовать тело не нужно много времени.
    Зачем рутовал если не использовал?
    Как поставить dnscrypt на обычный смарт? Как настроить файервол? Есть еще много разных задач.
     
  • 5.32, Аноним (32), 02:18, 28/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Вон валяются в шкафу, Xperia Z3, Sony Xperia Active, Xiaomi Redmi 7A ... все рутованые,
    > Что-то полезное от этого? Да нихуа! Трата и убийство времени.

    А ведь мог туда Sailfish OS поставить (или портировать)!

     

  • 1.25, pavlinux (ok), 21:39, 25/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Даёшь HOWTO: Linux from Scratch на андроеде без рута!!!
     
  • 1.31, Павел Отредиез (ok), 01:19, 27/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я обкатал Jackd2 аудио сервер и сижу с Ardour и Guitarix на телефоне. Правда задержки звука великоваты. Для этого собственно я и впрягся в эту тему. Рут мне все таки так и не потребовался.


    И ещё хочу дополнить заметку. Proot фигово работает с dpkg. Проблемма в линках - симлинках. Поэтому лучше чруты делать на стационарном компьютере. Для этого можно применить пакет qemu-user и чрутиться прямо в аrm чрут.

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру