Meefik's Blog

Freedom and Open Source

Запуск дистрибутива Angstrom

Через Linux Deploy под Android можно запустить дистрибутив Angstrom.

Инструкция

  • Создать образ системы (rootfs) в формате tar.gz на сайте narcissus.angstrom-distribution.org и получить ссылку на архив.

  • В приложении Linux Deploy 1.4.1+ создать новый профиль и в параметрах указать следующее: Дистрибутив - RootFS; URL-адрес зеркала - полученная ранее ссылка; Тип установки - Файл; Путь установки - путь к будущему образу (например, /mnt/sdcard/angstrom.img); Размер образа (МБ) - 100 (можно больше); Имя пользователя - android, Окружение рабочего стола - XTerm. Остальные параметры менять не нужно.

  • Запустить установку через Параметры -> Установить. В результате должен быть создан файл образа диска на карте памяти и в него распакован архив rootfs.

  • Установить необходимые пакеты и выполнить базовую конфигурацию. Для этого из любого Android-терминала выполнить (через программу ConnectBot или другой терминал, выполнять от рута):
    linuxdeploy shell "opkg update"
    linuxdeploy shell "opkg install initscripts sysvinit sysvinit-pidof shadow bash \
      localedef glibc-localedata-en-us glibc-localedata-ru-ru tzdata dropbear sudo \
      xserver-xorg-xvfb x11vnc xinit xterm"
    linuxdeploy configure
    
  • Запустить SSH сервер:
    linuxdeploy shell "/etc/init.d/dropbear start"
    

    Теперь можно подключиться по SSH: логин - android, пароль - changeme, порт 22.

  • Остановить SSH сервер:
    linuxdeploy shell "/etc/init.d/dropbear stop"
    
  • Запустить VNC сервер:
    linuxdeploy shell
    xinit /bin/su - android -c 'export DISPLAY=:0; ~/.vnc/xstartup' -- /usr/bin/Xvfb :0 -screen 0 800x400x16 -nolisten tcp -ac &
    su - android -c 'x11vnc -forever -display :0 -wait 10' &
    

    Теперь можно подключиться по VNC: пароль - changeme, порт 5900.

  • Остановить VNC сервер:
    pkill -9 Xvfb
    
  • Настройка автоматического запуска/остановки SSH через Linux Deploy (кнопками СТАРТ/СТОП):
    linuxdeploy shell "cp /etc/init.d/dropbear /etc/init.d/ssh"
    
  • Настройка автоматического запуска/остановки VNC через Linux Deploy (кнопками СТАРТ/СТОП):
    linuxdeploy shell
    cat << EOF > /usr/bin/vncserver
    #!/bin/sh
    [ $# -eq 0 ] && exit 1
    VNC_DISPLAY=$1
    shift
    while true
    do
      case $1 in
      -depth)
          VNC_DEPTH=$2; shift 2; continue
      ;;
      -geometry)
          VNC_GEOMETRY=$2; shift 2; continue
      ;;
      -dpi)
          VNC_DPI=$2; shift 2; continue
      ;;
      *)
          break
      ;;
      esac
    done
    if [ -n "$VNC_DEPTH" -a -n "$VNC_GEOMETRY" -a -n "$VNC_DPI" ]
    then
      Xvfb ${VNC_DISPLAY} -screen 0 ${VNC_GEOMETRY}x${VNC_DEPTH} -dpi ${VNC_DPI} -nolisten tcp -ac &
      x11vnc -forever -display ${VNC_DISPLAY} -wait 10 &
      sleep 1
      DISPLAY=${VNC_DISPLAY} ~/.vnc/xstartup &
    else
      pkill -9 Xvfb
    fi
    EOF
    chmod 755 /usr/bin/vncserver
    

Комментарий: Чтобы из консоли Android была доступна команда linuxdeploy нужно в настройках разрешить создавать в системе символьную ссылку (Настройки -> Создать симлинк) и обновить рабочее окружение (Настройки -> Обновить окружение). Однако это необязательное требование и можно вызывать команду linuxdeploy по полному пути ENV_DIR/bin/linuxdeploy, где ENV_DIR - каталог рабочего окружения, по умолчанию /data/data/ru.meefik.linuxdeploy/linux.