Перейти к содержимому

Linux deploy как пользоваться

  • автор:

Практическое применение Linux Deploy на десктопах

Несмотря на то, что изначально Linux Deploy задумывался как приложение для Android, со временем появляются и другие варианты его применения. С появлением Linux Deploy CLI стал доступен ряд возможностей, открывающих новые сферы применения этого инструмента.

Linux Deploy

Linux Deploy CLI — это приложение с интерфейсом для командной строки, предназначенное для автоматизации процесса установки, конфигурирования и запуска GNU/Linux дистрибутивов внутри контейнера chroot. Приложение может работать как в обычных десктопных Linux-дистрибутивах, так и на мобильных платформах, основанных на ядре Linux, при условии соблюдения необходимых зависимостей (все зависимости могут быть собраны статически). Приложения из Linux-дистрибутива запускаются в chroot окружении, работают параллельно с основной системой и сопоставимы с ней по скорости. Поскольку работа Linux Deploy базируется на системном вызове ядра Linux, то в роли «гостевых» систем могут выступать только дистрибутивы Linux.

Приложение может работать в двух режимах: с правами суперпользователя (chroot) и без них (proot). В обычном режиме доступны все поддерживаемые типы установки: установка в файл, на раздел диска (логический диск), в POSIX совместимую директорию и в оперативную память (tmpfs). В режиме proot доступна установка только в директорию, а также появляется ряд ограничений:

  • все пользователи внутри контейнера имеют полный доступ ко всей файловой системе контейнера, а владельцем всех файлов и каталогов является текущий пользователь;
  • нет доступа к привилегированным операциям с системой, например, не работает ping, ulimit и т.п.;
  • приложения могут работать только с номерами сетевых портов выше 1024;
  • если приложение в своей работе использует системный вызов chroot, то его необходимо запускать через специальную утилиту fakechroot, например fakechroot /usr/sbin/sshd -p 2222.

Вообще, идея Linux Deploy возникла из желания получить легкий и удобный инструмент для быстрого развертывания Linux-дистрибутива, который можно было бы использовать для целей разработки, тестирования или обучения, а затем быстро удалить его, не внося изменения в основную (хост) Linux-систему и не рискуя ее целостностью. Благодаря программе PRoot стало возможным создавать контейнеры для запуска Linux-приложений без прав суперпользователя (root), а также использовать программную эмуляцию QEMU для запуска приложений с отличающийся от хоста архитектурой без необходимости поддержки модуля binfmt_misc на уровне ядра.

Так вышло, что на моей основной работе с 2011 года используются компьютеры с Debian. Местные разработчики периодически нуждаются в системе для запуска и тестирования своих веб-приложений (в основном Java, PHP, Python). Для этих целей обычно использовались виртуальные системы либо на базе VirtualBox, либо в местном «облаке» Proxmox, либо Docker. Основным недостатком VirtualBox является его требовательность к ресурсам компьютера, большой размер VDI образа диска, относительно невысокая скорость работы и вероятность поломки образа VM при неправильном выключении системы. Недостатком при использовании «облака» можно назвать необходимость самому администратору обслуживать запросы пользователей на создание таких систем, а также расходование ресурсов «облака» на второстепенные задачи. Для работы с Docker требуются права суперпользователя.

В этом месяце был проведен эксперимент, PHP-разработчикам их виртуальный сервер был заменен на LD-контейнер. Были подготовлены два контейнера на базе Debian: Apache + PHP + OCI8 и Apache + PHP + MySQL + PhpMyAdmin. Контейнеры были размещены на общем сетевом диске в локальной сети, размер каждого контейнера составил около 150 МБ.

Что от этого получил администратор:

  • один раз подготовленный контейнер может быть развернут на компьютере разработчика одной командой без участия администратора;
  • работа с контейнером не требует прав суперпользователя, поэтому отсутствует риск поломки основной системы.
  • развертывание, запуск и управление системой в контейнере осуществляется без участия администратора одной командой;
  • развертывание контейнера из заранее подготовленных архивов осуществляется по сети менее чем за минуту;
  • запуск и остановка контейнера (Веб-сервер + БД) происходит мгновенно, не нужно ждать запуска операционной системы;
  • нет риска повредить контейнер, если забыл его отключить при выключении компьютера, т.к. образ системы представляет собой обычный каталог без собственной файловой системы;
  • компьютер работает быстрее, т.к. ресурсы тратятся только на запускаемый софт в контейнере, а не на всю операционную систему (в нашем случае это порядка 50 МБ, вместо 500 МБ в VirtualBox).
  • проверка работоспособности ПО прямо из каталога IDE без необходимости заливать его на сервер, для этого достаточно подключить к контейнеру необходимый каталог основной системы.

Для запуска контейнеров без прав суперпользователя необходимо установить PRoot:

mkdir ~/bin wget http://portable.proot.me/proot-x86_64 -O ~/bin/proot chmod 755 ~/bin/proot 

Загрузка и установка Linux Deploy CLI:

wget -O cli.zip https://github.com/meefik/linuxdeploy-cli/archive/master.zip unzip cli.zip rm cli.zip ln -sf ~/linuxdeploy-cli/cli.sh ~/bin/linuxdeploy 

Создание конфигурации с именем «linux» для развертывания базовой системы Debian Wheezy (64 бита):

linuxdeploy -p linux conf --method='proot' --source-path='http://mirror.yandex.ru/debian/' \ --distrib='debian' --arch='amd64' --suite='wheezy' --target-path='$ENV_DIR/rootfs/linux' \ --chroot-dir='$TARGET_PATH' --target-type='directory' --username='webmaster' --include='bootstrap' 

Посмотреть сохраненную конфигурацию:

linuxdeploy -p linux conf -x 

Запуск развертывания новой системы:

linuxdeploy -p linux deploy 

Подключение к консоли контейнера под пользователем root (для выхода команда exit):

linuxdeploy -p linux shell -u root 

Далее можно установить и настроить необходимый софт в контейнере, однако следует учитывать описанные ранее особенности. Например, для запуска Apache нужно поменять его порт (файл /etc/apache2/ports.conf) на 8000, установить пустой параметр APACHE_ULIMIT_MAX_FILES=» » (файл /etc/apache2/envvars), а сам apachectl запускать из-под обычного пользователя (не root).

Настройка автозапуска на базе системы инициализации SysV:

linuxdeploy -p linux conf --include='$INCLUDE init' --init='sysv' --init-level='3' --init-user='$USER_NAME' --init-async 

Параметры: INIT_LEVEL — уровень инициализации SysV, INIT_USER — из-под какого пользователя запускать сервисы (по умолчанию это root), INIT_ASYNC — запускать сервисы параллельно.

Подготовка конфигурации, экспорт ее и экспорт контейнера в rootfs-архив (поддерживаются tar.gz, tar.bz2 и tar.xz архивы):

linuxdeploy -p linux conf --source-path='linux.tgz' --target-path='\$ENV_DIR/rootfs/linux' --chroot-dir='\$TARGET_PATH' linuxdeploy -p linux conf -x > /path/to/linux.conf linuxdeploy -p linux export /path/to/linux.tgz 

Экранирование «\$» позволяет сохранять в конфиг имена переменных, а не их значения. Таким образом при импорте конфига эти переменные будут автоматически заменены на соответствующие значения, которые могут отличаться от текущих. Теперь есть два файла (linux.conf и linux.tgz), которые можно использовать при импорте контейнера на другом компьютере:

cd /path/to linuxdeploy -p linux conf -i ./linux.conf linuxdeploy -p linux deploy 

Подключить к контейнеру каталог основной системы (каталог ~/www подключить в /var/www контейнера):

linuxdeploy -p linux conf --mounts='$HOME/www:/var/www' 

Запуск контейнера (для SysV выполняются сценарии /etc/rcN.d/SXXname start):

linuxdeploy -p linux start 

Остановка контейнера с освобождением ресурсов (для SysV выполняются сценарии /etc/rc6.d/KXXname stop):

linuxdeploy -p linux stop -u 

В итоге получилось решение, которое удовлетворяет потребностям как разработчиков, так и администраторов. Исходные коды приложения Linux Deploy доступны под лицензией GPL версии 3.

  • Системное программирование
  • Разработка под Android
  • Разработка под Linux

Linux deploy как пользоваться

Linux Deploy — программное обеспечение, предназначенное для автоматизации процесса установки, конфигурирования и запуска GNU/Linux дистрибутивов на платформе Android внутри контейнера chroot.

Поскольку работа Linux Deploy базируется на системном вызове ядра Linux, то в роли «гостевых» систем могут выступать только дистрибутивы Linux. Приложения, запущенные внутри контейнера chroot, работают параллельно с основной системой и сопоставимы с ней по скорости. Linux Deploy позволяет устанавливать выбранные дистрибутивы из официальных репозиториев через интернет. Есть функция экспорта уже установленного дистрибутива в виде rootfs-архива. Есть интерфейс командной строки для работы с приложением из терминала. Для функционирования приложения необходимы права суперпользователя.

Распространяется как свободное программное обеспечение под лицензией GPL 3.0.

Поддержка пользователей осуществляется на форуме 4pda.ru [2] . Обзорная статья опубликована в журнале ИУС № 5(66)/2013 [3] .

Характеристики

  • Поддерживаемые дистрибутивы: Debian, Ubuntu, Kali Linux, Arch Linux, Fedora, CentOS, Gentoo, openSUSE, Slackware, RootFS (tgz, tbz2, txz)
  • Тип установки: файл образа, раздел диска, оперативная память, директория
  • Поддерживаемые файловые системы: ext2, ext3, ext4
  • Поддерживаемые архитектуры: ARM, ARM64, x86, x86_64, режим эмуляции (ARM ~ x86)
  • Интерфейс управления: CLI, SSH, VNC, X, фрейм-буфер
  • Окружение рабочего стола: XTerm, LXDE, Xfce, GNOME, KDE, другое (ручная настройка)

Примечания

Инструкция по установке дистрибутива GNU/Linux через программу Linux Deploy под Android:

Запускаем Linux-сервер на смартфоне

bannerbanner

Устаревший смартфон часто оставляют на всякий случай или продают за бесценок. Между тем, его можно использовать для разных экспериментов, а полученные навыки затем перенести на актуальную модель, уже зная все подводные камни. На прежнем смартфоне можно даже поднять Linux-сервер с управлением по SSH и VNC, который будет работает поверх любой версии Android, начиная с 2.1. Выбор дистрибутивов с поддержкой архитектуры ARM и ARM64 уже достаточно большой – от пушистой Убунты до зубастой Кали. Смартфоном при этом можно пользоваться как обычно. Приложения, данные – всё остаётся как было и работает параллельно.

Kali Linux 2.0 ARM на смартфоне Samsung GT-I9250 с удалённым управлением через VNC.

Поскольку доступ к системному разделу во внутренней памяти смартфона с ОС Android изначально закрыт, сперва мы получим права root. Как именно рутировать – зависит от конкретной модели. В альтернативных прошивках (например, CyanogenMod) рут уже может быть изначально, а в стоковые он добавляется множеством способов, которые можно разделить на два принципиально разных подхода.

Первый основан на ручной замене загрузчика и оболочки восстановления (recovery), а второй – на внесении изменений в системный раздел смартфона с помощью рутирующей программы для Windows. При подключении его к компьютеру она использует функцию отладки по USB и часто может выполнять все действия автоматически.

Настройки утилиты KingRoot.

Первый вариант подходит любителям полного контроля и олдскульных пошаговых стратегий. Сначала надо сделать полный бэкап, потом установить кастомный вариант рекавери, сделать из неё очистку кэша, инсталлировать SuperUser.apk (или другую программу, раздающую права суперпользователя по запросу) и пару раз перезагрузиться в процессе.

Второй вариант допускает однокликовые решения. Просто подключаете смартфон к компьютеру, запускаете одну из китайских программ для Windows (Root Genius, King Root или подобную) и ждёте пару минут.

KingRoot поддерживает свыше ста тысяч моделей смартфонов, планшетов и прочих гаджетов с Android.

Последний способ получил интересное развитие: вслед за троянами для Android появились полулегальные мобильные приложения, выполняющие рутирование по заимствованной у вирусов технологии. После разрешения устанавливать софт из сторонних источников и включения отладки по USB, они запускаются со смартфона и выполняют все те же действия, что и программа для Windows. В большинстве случаев даже не требуется перезагрузка.

Поскольку любое рутирование смартфона – непредусмотренная производителем процедура, утилиты для её выполнения часто опознаются как потенциально опасные приложения (PUA/PUP) многими антивирусами.

Антивирусы опознают утилиты рутирования как потенциально опасные программы.

В моём эксперименте на Samsung Galaxy Nexus (модель 2011 года) рут был получен через минуту после запуска KingRoot v.4.1. Плюс в том, что все процедуры прошли автоматически и без перезагрузки. Приложения и настройки остались на своих местах. Минус – помимо SuperUser.apk были установлены бесполезные «оптимизаторы системы», рекламирующие приложения от того же разработчика. Выкорчевать их довольно сложно –понадобится мощная утилита вроде Titanium Backup и детальный анализ внесённых изменений. Ленивые могут не запускать этот мелкий мусор и игнорировать его в общем списке.

Чтобы запустить на смартфоне Linux, нам также понадобится набор консольных утилит для подключения сторонних модулей ядра – BusyBox и приложение для автоматического развёртывания выбранного дистрибутива – Linux Deploy.

BusyBox устанавливается как обычное приложение, а в кастомных прошивках он часто уже интегрирован. Программа Linux Deploy по принципу работы похожа на утилиту UNetbootin – она скачивает указанный дистрибутив Linux с официального зеркала и выполняет его установку. В данном случае – на образ диска, который монтируется из файла или отдельного раздела на карте памяти.

Настройка Linux и выбор графической среды.

Перед установкой можно задать множество настроек, включая выбор графической среды, размер образа и его расположение. По умолчанию предлагается сохранить образ на microSD, в связи с чем могут возникнуть затруднения. Во-первых, при её форматировании в FAT32 предельный размер одного файла должен быть меньше 4096 МБ. Во-вторых, некоторые аппараты не поддерживают карты памяти. В частности, мой третий «Нексус» эмулирует её символической ссылкой, а Linux Deploy наотрез отказывается работать с каталогом /emulated/.

Поэтому приходится обходить указанные ограничения. Если у смартфона есть картридер (а таких большинство), то можно переформатировать карту памяти в ext3 или ext4. Тогда снимается ограничение на максимальный размер файла, но её уже не смогут прочесть устройства без поддержки этих файловых систем (в частности – компьютер с Windows). Поэтому удобнее создать на ней два логических раздела: первый – с FAT32, а второй – с ext3/4.

Создание двух разделов на microSD(HC) в Windows.

При невозможности использовать карту памяти можно выбрать запись образа в файл, а в пути его размещения указать системный раздел во внутренней памяти смартфона. В любом случае, после развёртывания Linux будет запускаться в окружении chroot и работать параллельно с Android. Любые изменения произойдут в виртуализированной среде и могут быть полностью отменены. По умолчанию для повышения безопасности у Linux даже нет доступа к ресурсам Android.

Настройки параметров окружения и удалённого доступа в Linux на смартфоне.

По нажатию одной кнопки программа Linux Deploy автоматически настраивает рабочее окружение, запускает (по желанию пользователя) серверы и графическую среду (выбирается при установке). В консольном режиме управление выполняется по SSH, а в графическом – через VNC, X Server или Framebuffer. IP-адрес для подключения указывается в заголовке запущенного профиля, порты используются стандартные, а логин и пароль задаются в настройках.

Установка Slackware ARM 14.2 на виртуальный диск в смартфоне.

С помощью Linux Deploy можно выполнить установку нескольких дистрибутивов и переключаться между ними через менеджер профилей. Управлять любым из них можно как с самого смартфона (VNC Viewer, SSH-клиент), так и удалённо. Когда вы подключаетесь к одному из запущенных Linux-серверов, смартфон продолжает работать в обычном режиме и никак не выдаёт свою тайную миссию.

Как установить backtrack-linux-5-ru-ubu-1.iso на андроид с помощью Linux Deploy или др., желательно на SD и без компа.

Я не специалист. Мне нужно установить BACKTRACK 5, а именно файл под названием «backtrack-linux-5-ru-ubu-1.iso», на мой телефон android. [Программа, о которой идёт речь, я скачиваю здесь: https://backtrack-linux.ru.uptodown.com/ubuntu ].

Мне сказали, что для её установки на андроид нужно приложение, которое устанавливает на андроид файлы .iso. Мне подсказали, что для установки Backtrack 5 нужен Linux Deploy. (Установить нужно очень желательно напрямую, без использования компьютера).

Когда я, чтобы понять как его установить, осуществляю поиск ( https://www.google.ru/search?newwindow=1&oq=&aqs=mobile-gws-lite..&am. ), мне выпадают объяснения, где Linux Deploy идет вкупе с кучей других программ, например SuperSU, BusyBox, Android VNC Wiever, Terminal Emulator, JuceSSH . Значит их тоже надо установить все?? Надо иметь права robot до и для установки backtrack (там тоже везде об этом пишут)??

Затем некоторые сайты говорят, что нужен Zachiver, чтобы распаковать образ, файлы .gz. Почему когда я ищу инфу в Интернете про Backtrack 5 мне чаще выпадает инфа про запакованные файлы .gz, a не про .iso Когда я скачала и те, и другие, человек, посоветовавший мне Backtrack сказал, что запакованные файлы .gz (там ещё слово GNOME присутствует) — это не то, что мне надо. И памяти для них больше надо, 5-6 гига, тогда как .ISO занимает максимум 2,5 . Какая между ними разница?! Когда я делаю в гугле поиск по ВАСKTRACK 5, мне все время выпадает инфа по поводу зазипированного backtrack gnome. А мне нужно установить BACKTRACK именно с расширением .iso . Нигде не могу найти, как устанавливать конкретно .iso .

2) Знает ли кто, существует ли возможность установки BACKTRACK 5 на микро SD и нужно ли для этого делить её на сектора? (У меня на андроиде всего 8 гига внутренней памяти, а backtrack весит 1,9 гига).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *