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.