Thanks to visit codestin.com
Credit goes to github.com

Skip to content

vrosnet/linuxdeploy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Linux Deploy CLI

Copyright (C) 2015-2016 Антон Скшидлевский, GPLv3

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

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

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

Приложение поддерживает автоматическую установку (базовой системы) и начальную настройку дистрибутивов Debian, Ubuntu, Kali Linux, Arch Linux, Fedora, CentOS, Gentoo, openSUSE и Slackware. Установка Linux-дистрибутива осуществляется по сети с официальных зеркал в интернете. Также поддерживается импорт любой другой системы из заранее подготовленного rootfs-ахрива в формате tar.gz, tar.bz2 или tar.xz. Приложение позволяет подключаться к консоли установленной системы (контейнеру), а также запускать и останавливать приложения внутри контейнера (есть поддержка различных систем инициализации и собственных сценариев автозапуска). Каждый вариант установки сохраняется в отдельный конфигурационный файл, который отвечает за настройку каждого контейнера. При необходимости, контейнеры можно запускать параллельно. Можно экспортировать конфигурацию и сам контейнер как rootfs-архив для последующего развертывания этого контейнера без повторной установки и настройки.

Для расширения возможностей приложения реализована модульная архитектура, каждый модуль здесь назван компонентом. Компоненты пишутся на Bash-совместимом языке сценариев Ash, каждый компонент представляет собой директорию с двумя основными файлами deploy.conf и deploy.sh. Реализация компонента сводится к написанию обработчиков для следующих действий: установка, настройка, запуск, остановка и вызов справки. Компоненты могут зависеть от других компонентов, есть защита от циклических зависимостей. В компоненте можно указать совместимость с конкретными версиями дистрибутивов, чтобы ограничить область его применения.

Зависимости:

  • Ядро Linux
  • BusyBox или Bash и набор GNU утилит
  • PRoot для работы без прав суперпользователя
  • QEMU, пакет qemu-user-static для Debian (для эмуляции ахритектуры)
  • Модуль ядра binfmt_misc (для поддержки режима эмуляции архитектуры без PRoot)

Использование:

USAGE:
   linuxdeploy [OPTIONS] COMMAND ...

OPTIONS:
   -f FILE - конфигурационный файл контейнера
   -d - включить режим отладки
   -t - включить режим трассировки

COMMANDS:
   config [...] [PARAMETERS] [NAME ...] - управление конфигурациями
      - без параметров выводит список конфигураций
      -r - удалить текущую конфигурацию
      -i FILE|NAME - импортировать конфигурацию
      -x - дамп текущей конфигурации
      -l - список подключенных компонентов
      -a - список всех компонентов
   deploy [-i|-c] [-n NAME] [NAME ...] - установка дистрибутива и подключенных компонентов
      -i - только установить, без конфигурирования
      -с - только конфигурировать, без установки
      -n NAME - пропустить установку указанного компонента
   import <FILE> - импортировать контейнер из rootfs-архива (tgz, tbz2 или txz)
   export <FILE> - экспортировать контейнер как rootfs-архив (tgz, tbz2 или txz)
   shell [-u USER] [APP] - смонтировать контейнер и выполнить указанную команду внутри контейнера
      -u USER - переключиться на указанного пользователя
   mount - смонтировать контейнер
   umount - размонтировать контейнер
   start - смонтировать контейнер, если не смонтирован, и запустить все подключенные компоненты
   stop [-u] - остановить все подключенные компоненты
      -u - размонтировать контейнер
   status - отобразить состояние контейнера и компонетнов
   help [NAME ...] - вызвать справку по компонентам

Справка по параметрам основных компонетнов:

PARAMETERS: 
   --chroot-dir=PATH
     Директория монтирования контейнера.

   --distrib=debian|ubuntu|kalilinux|fedora|centos|archlinux|gentoo|opensuse|slackware
     Кодовое имя дистрибутива, который будет установлен.

   --arch=NAME
     Архитектура сборки дистрибутива, например i386 для debian. См. информацию по конкретному дистрибутиву.

   --suite=NAME
     Версия дистрибутива, например wheezy для debian. См. информацию по конкретному дистрибутиву.

   --source-path=PATH
     Источник установки дистрибутива, можно указать адрес репозитория или путь к rootfs-ахриву.

   --target-path=PATH
     Путь установки, зависит от типа развертывания.

   --target-type=file|partition|directory|ram
     Вариант развертывания контейнера.

   --disk-size=SIZE
     Размер файла образа, когда выбран тип развертывания "file". Ноль означает автоматический выбор размера образа.

   --fs-type=ext2|ext3|ext4|auto
     Файловая система, которая будет создана внутри образа или на разделе.

   --method=chroot|proot
     Метод контейнеризации.

   --emulator=PATH
     Указать какой использовать эмулятор, по умолчанию QEMU.

   --dns=IP|auto
     IP-адрес DNS сервера.

   --mounts=SOURCE:TARGET ...
     Подключение ресурсов к контейнеру.

   --user-name=USER
     Имя пользователя, который будет создан после установки дистрибутива.

   --user-password=PASSWORD
     Пароль пользователя будет назначен указанному пользователю.

   --privileged-users=USERS
     Список пользователей через пробел, которых добавить в группы Android.

   --locale=LOCALE
     Локализация дистрибутива, например ru_RU.UTF-8.

About

Install and run GNU/Linux on Android | Установка и запуск GNU/Linux под Android

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 49.3%
  • Shell 46.4%
  • C 4.2%
  • Makefile 0.1%