- Установка ArchLinux ARM рядом с Android без chroot
- Нам потребуется
- Все действия Вы выполняете на свой страх и риск.
- Я использовал
- Часть 1: Подготовка
- Часть 2: Поиск и решение проблем
- Проблема 1: ping не работает
- Проблема 2: Не работает DNS
- Если Вы запороли PATH
- Ставим необходимые пакеты
- Проверяем gcc
- Часть 3: Подготовка к работе без chroot
- Нужно заранее позаботится о Root.
- Часть 4: Поехали!
- Что дальше
- Послесловие
- Установка Archlinux на телефон с Android во второй раздел SD или просто подпапку системной карты памяти
- Готовим устройство
- Собираем минимальный стартовый вариант
- Приводим в порядок пакеты
- Добавляем автомонтирование и прочие плюшки
- Anbox (Русский)
- Contents
- Установка
- Старые ядра
- systemd-networkd
- Скрипт anbox-bridge
- Использование
- Установка приложений через adb
- Установка приложений через магазины приложений
- Советы и рекомендации
- Пересборка ядра с необходимыми настройками
- Решение проблем
- Старые процессоры
- Ошибка SecureBoot
- AnLinux: простой способ установить Linux-окружение на Android-телефон без рута
- Что такое AnLinux?
- С чего начать?
- Что же, приступим
- А что с графической оболочкой?
Установка ArchLinux ARM рядом с Android без chroot
Нам потребуется
Все действия Вы выполняете на свой страх и риск.
Я использовал
Часть 1: Подготовка
1. Скачаем архив с ArchLinux ARM с зеркала:
Дальнейшие действия необходимо проделывать на Android устройстве
2. Создаем файл для будущего образа с помощью make_ext4fs.
Если у вас есть отдельный раздел на карте памяти — желательно использовать его. В моем случае 16Гб SD карта была забита важными данными и возможности сдвинуть главный FAT раздел не было.
В зависимости от настроек /sdcard может быть как внешней, так и внутренней картой памяти.
3221225472 это 1024*1024*1024*3, следовательно будет создан образ в 3Гб. Размер образа определите для себя по вкусу. Помните что на FAT32 нельзя создать файл больше 4Гб
3. Примонтируем образ и распакуем файлы ArchLinux ARM
4. Несмотря на то, что наша цель — обойтись без chroot, для базовой настройки и проверки работоспособности chroot все же нужно сделать. В противном случае обновлять, доставлять пакеты Вам придется уже на боевой системе.
Часть 2: Поиск и решение проблем
Проблема 1: ping не работает
Вспоминаем, что у Android серьезная система разграничения прав. И в нем существует пермишен на «Полный доступ к сети». Без этого пермишшена пользователи не могут получить полный доступ к сокетам. То что надо.
Вернемся к Android консоли и пропишем комманду id:
У вас вывод может быть другой
Но вот незадача, chroot не обновляет group. Поможет вот такой «хак»:
Пробуем еще раз:
Проблема 2: Не работает DNS
Удаляем симлинк на systemd и запишем нормальные DNS:
Если Вы запороли PATH
Если произошло такое, что простые комманды вида ls,cat,su не работают(не видятся) системой, Вы можете попробывать вызвать их напрямую: /system/bin/ls, /system/bin/cat, /system/xbin/su.
Или перезагрузить устройство.
Ставим необходимые пакеты
Проверяем gcc
Часть 3: Подготовка к работе без chroot
Самое главное, что позволяет ArchLinux работать без chroot рядом с андроидом — тот факт, что папки и файлы ArchLinux и андроид различны и не мешают друг другу.
Если Вы не уверены в том, что файлы не пересекутся, выполните эти команды из Android консоли:
Покажет пересечение файлов. У меня это выглядит так:
Выполним копирование файлов из /etc/ в /arch/etc/ из Android:
Ключ -a обязателен, так как при использовании обычного -R права скопированы не будут.
Нужно заранее позаботится о Root.
Android приложения требуют, что бы комманда su сразу же давала доступ к суперпользователю и не запрашивала пароль.
Часть 4: Поехали!
Создадим нужные каталоги и воспользуемся mount —bind что бы виртуально заменить директорию, не изменяя ее на диске.
Если что-то сделано неправильно, Вы можете перезагрузить устройство и попробовать снова. Порядок монтирования важен. При ошибке с монтированием стандартные команды могут взятся из ArchLinux до того, как все каталоги будут смонтированы.
Что дальше
В итоге мы имеем практически полноценный ArchLinux за исключением systemd с свежими версиями пакетов.
Можно установить http, php, mysql. При правильной настройке на уменьшение потребления памяти даже на моем смартфоне с ОЗУ 512Мб они работали корректно.
Можно установить иксовые библиотеки и с помощью X сервера для Android пользоваться ПО для линукса. xterm заработал корректно.
Можно собирать любые программы (и, о нет, ядра) для Linux без ПК.
Можно установить Java для ARM и использовать Java приложения.
Послесловие
Большой проблемой остается systemd и его привязка к PID 1. Для того, что бы сохранить PID 1 нужно влезть в init андроида и прописать exec после инициализации устройств. Это можно сделать заменив init андроида shell скриптом, но тогда остается вопрос что делать с оригинальным init андроида. Так как место на загрузочном диске ограничено несколькими мегабайтами, нужно будет использовать switch_root в заранее созданный образ. Мне пока не удалось завести systemd таким способом.
Мне 16, и это моя первая публикация. Конструктивная критика приветствуется.
Источник
Установка Archlinux на телефон с Android во второй раздел SD или просто подпапку системной карты памяти
Привет всем. Тут уже была статья на тему Botbrew, где в целом описано что это такое и что это дает. Вкратце:
Проект BotBrew призван решить многие проблемы с установкой Linux-софта, которые только могут возникнуть у пользователя, и подготовить систему Android к принятию инородных для нее приложений.
As of July 2014, updates to the Emdebian distributions ceased. There will be no further updates and no further stable releases.
Готовим устройство
Первое, что нам понадобится — создать папку, куда будем ставить наш линух. Варианта два — папка на разделе /data или отдельный ext4 раздел карты памяти. Во втором случае раздел надо будет как-то смонтировать в основную ФС телефона. Сделать это можно например с помощью Link2SD. Далее я буду исходить из того, что используется второй раздел SD, смонтированный в /data/sdext2, ставить будем в папку /data/sdext2/arch.
Также надо понять, репозиторий для какой архитектуры процессора будем использовать. У меня Qumo Quest 454 с процессором armv7l и для него подошел http://mirror.archlinuxarm.org/arm/.
Подключаем телефон по USB, заходим на него через adb и понеслась.
Собираем минимальный стартовый вариант
Для минимальной установки понадобятся следующие пакеты (выполняем от рута, версии пакетов со временем могут стать новее):
После того, как все скачалось, распаковываем:
У нас получилось что-то типа минимальной установки Archlinux. Теперь попробуем сделать в нее chroot, предварительно смонтировав системные папки ():
Если все прошло успешно, то запустится bash из нашего минимального окружения и станет доступен pacman. У меня при запуске любого процесса система ругалась, что не может найти libsuc.so, описанный в LD_PRELOAD. В этом случае просто чистим LD_PRELOAD:
Приводим в порядок пакеты
Итак, мы в chroot’е, у нас работает pacman и bash. Первым делом приведем в порядок то, что есть. Пропишем DNS и загрузим репозитории:
Теперь поставим официально то, что просто так распаковали и добавим остальные минимально необходимые для жизни пакеты и еще вернем на место dns, который нам побила установка filesystem:
Если все прошло удачно, то имеем полноценный за вычетом systemd и ядра Archlinux. Выходим из chroot и размонтируем все, что намонтировали:
Добавляем автомонтирование и прочие плюшки
Чтобы пользоваться тем, что получилось легко и просто, прикрутим init от botbrew-basil. Это утилита, которая проверяет, смонтировано ли у нас все, что надо и делает chroot в наше окружение. Я не смог найти, как скачать ее с репозитория botbrew, поэтому пока что просто выложил на Яндекс.Диск, ссылка. Копируем init в /data/sdext2/arch и добавляем атрибут на исполнение.
Заходим в adb shell и набираем:
В результате все, что надо само однократно подмонтируется и мы окажемся в свежепоставленном Arch. В виде бонуса init создаст в корне chroot’а папки /storage, /mnt и /android, куда смонтирует куски оригинальной файловой системы.
Чтобы наслаждаться линухом не через USB провод, а прямо с телефона, можно прописать /data/sdext2/init /bin/bash в качестве шела в любимом терминале. Дальше можно по вкусу создать пользователей, поднять sshd и т.п. Но любой арчевод и так знает, как это сделать, поэтому здесь про это писать не буду.
Спасибо за внимание, дополнения и исправления приветствуются.
UPDATE: небольшой скрипт, который я запускаю один раз после ребута
Источник
Anbox (Русский)
This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.
Anbox — это контейнерное ПО для запуска Android на дистрибутивах GNU/Linux.
Contents
Установка
Вместо этого следуйте инструкции ниже.
Инструкция для старых ядер: Старые ядра.
1. Установите (или соберите) необходимое ядро:
Для запуска Anbox необходимо ядро, в котором активированы определенные настройки.
Есть два варианта:
- Установить ядро linux-zen (которое теперь включает все необходимые настройки [2]), или
- Пересобрать ядро.
2. Включите binder и ashmem :
Запустите с правами суперпользователя:
3. Установите Anbox:
Установите один из этих образов:
Поэтому сперва следует установить Android-образ, а затем другие пакеты Anbox.
Тут есть решение часто встречаемой ошибки logger.cpp .
Старые ядра
На старых версиях ядра (до 5.7) DKMS-модули все еще работают.
2. Соберите и установите модули DKMS вручную из репозитория GitHub: [3].
4. Установите один из этих образов:
5. Загрузите модули ядра вручную (опционально):
Можете загрузить DKMS-модули вручную, без перезагрузки компьютера:
6. Включите следующие службы:
systemd-networkd
Пакет anbox-git AUR использует systemd-networkd чтобы иметь доступ к сети в Anbox. Поэтому нужно включить systemd-networkd или запустить systemd-networkd перед запуском anbox-container-manager.service .
Скрипт anbox-bridge
Нужно запускать anbox-bridge каждый раз перед запуском anbox-container-manager.service чтобы добиться работы сети в Anbox.
Простейшим решением в таком случае является создание файла enable-anbox-bridge.conf .
Использование
После установки вы сможете запускать Android приложения в лаунчере рабочего стола из категории Другое.
Если вы хотите использовать adb для отладки, установите android-tools
Установка приложений через adb
Если не был выбран образ с houdini, Anbox не будет поддерживает ARM приложения. Поэтому приложения должны иметь архитектуру x86_64.
Чтобы установить /путь/к/приложению.apk
Получить список всех установленных приложений:
Обратите внимание, что вывод будет аналогичен таковому от package:app.name , где app.name отличается от отображаемого в контейнере anbox.
чтобы удалить app.name
Если app.name — системное приложение:
Установка приложений через магазины приложений
Приложения можно легко установить через магазины приложений. В anbox-image-gapps AUR включен PlayStore.
Советы и рекомендации
Пересборка ядра с необходимыми настройками
Если вы не хотите использовать ядро linux-zen , можно пересобрать ядро:
1. Постройте ядро с этими настройками:
2. Перезагрузитесь в новое ядро.
3. Активируйте binder:
Решение проблем
Если возникнут проблемы, посмотрите официальный Трекер Проблем: https://github.com/anbox/anbox/issues
Старые процессоры
Некоторые старые процессоры не поддерживают SSE 4.1/4.2 и SSSE 3, необходимый для Anbox, поэтому на таких процессорах,скорее всего, Anbox работать не будет. [4].
Ошибка SecureBoot
Если появляется ошибка:
Скорее всего, Secure Boot блокирует модуль. Можно либо отключить SecureBoot либо подписать модуль ashmem самому.
Больше информации про это можно найти здесь: [5].
Источник
AnLinux: простой способ установить Linux-окружение на Android-телефон без рута
Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.
Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.
Что такое AnLinux?
Это специализированное ПО, которое дает возможность использовать Linux на телефоне при помощи монтирования образа, содержащего root-файловую систему любого из дистрибутивов, включая Ubuntu, Kali, Fedora, CentOS, OpenSuse, Arch, Alpine и многих других. Инсталлятор использует PRoot для эмуляции root-доступа.
PRoot перехватывает все выполняемые пользователем вызовы, которые требуют в обычной ситуации root-доступа, и обеспечивает их работоспособность в обычных условиях. В PRoot используется системный вызов ptrace для отладки ПО, который помогает достичь цели. С PRoot все это можно сделать как с chroot, но без root-прав. Кроме того, PRoot предоставляет фейковый доступ пользователю для пседвофайловой системы.
AnLinux — небольшая программа. Но этого достаточно, ведь единственное ее предназначение — установка образов систем и запуск скриптов, поднимающих пользовательское окружение. Когда все сделано, пользователь получает вместо смартфона Linux-ПК, причем Android продолжает работать на фоне. Подключаемся к устройству при помощи VNC-вьювера или терминала, и можно работать.
Конечно, это не идеальный вариант «завести» Linux на смартфоне, но он вполне рабочий.
С чего начать?
Основное — Android-смартфон с версией ОС не ниже Lollipop. Кроме того, пойдет и 32-битное или 64-битное ARM или x86-устройство. Кроме того, потребуется солидный объем свободного файлового пространства. Для этого можно использовать карту памяти или просто устройство с большим объемом внутренней памяти.
Кроме того, потребуется:
- AnLinux (вот ссылка на Google Play).
- Termux (снова понадобится Google Play).
- VNC Client (VNC Viewer — хороший вариант).
- Bluetooth-клавиатура (опционально).
- Bluetooth-мышь (опционально).
- HDMI кабель для мобильного телефона (опционально).
Termux и VNC нужны для получения доступа к своему «компьютеру на Linux». Последние три элемента требуются лишь для того, чтобы обеспечить комфортную работу с телефоном и установщиком. HDMI-кабель нужен только в том случае, если пользователю удобнее работать с большим экраном, а не вглядываться в дисплей телефона.
Что же, приступим
Как только установлен Termux, получаем полноценную консоль. Да, рута нет (если телефон не рутован), но ничего страшного. Следующий шаг — установка образа для дистрибутива Linux.
Теперь нужно открыть AnLinux и затем — выбрать Dashboard из меню. Всего есть три кнопки, но выбрать можно лишь одну, первую. После этого появляется меню выбора дистрибутива. Можно выбрать даже не один, а несколько, но в этом случае понадобится большой объем свободного файлового пространства.
После выбора дистрибутива активируются две другие кнопки. Вторая позволяет загрузить в буфер обмена команды, необходимые для загрузки и установки Linux. Обычно это pkg, wget команды и скрипт для их выполнения.
Третья кнопка запускает Termux, так что команды можно вставлять в консоль. Как только все сделано, запускается скрипт, позволяющий загрузить окружение дистрибутива. Для вызова дистрибутива нужно каждый раз запускать скрипт, но установку проводим только один раз.
А что с графической оболочкой?
Если она нужна, то следует лишь выбрать меню для десктопного окружения и использовать больше кнопок — появится не три, а больше. Кроме самого дистрибутива, нужно выбрать еще и оболочку, например, Xfce4, Mate, LXQt или LXDE. В целом, ничего сложного.
Потом кроме скрипта, который запускает дистрибутив, потребуется еще один — он активирует сервер VNC. В целом, весь процесс простой и понятный, он вряд ли способен вызвать затруднения.
После запуска сервера VNC подключаемся со стороны клиента, воспользовавшись вьювером. Требуется знать порт и localhost. Все это сообщает скрипт. Если все сделано правильно, то пользователь получает доступ к своей виртуальной Linux-системе. Производительность современных телефонов на высоте, так что особых проблем не будет. Конечно, вряд ли смартфон сможет полностью заменить десктоп, но, в целом, все это работает.
Этот способ может пригодиться, если вдруг нужно срочно подключиться к серверу, а вы в машине, без ноутбука (конечно, в этом случае все описанные выше операции с AnLinux уже должны быть выполнены). Виртуальная Linux-машина позволяет подключиться к рабочему или домашнему серверу. А если в автомобиле по какой-то причине оказался дисплей и беспроводная клавиатура, то за считанные секунды в салоне можно организовать рабочий кабинет.
Источник