Vnc linux from android

Запускаем Ubuntu x86 + Wine под Android x86 (chroot+VNC)

Предисловие

Lava XOLO X900



Версия от оператора Orange
Lenovo LePhone K800

На конец июня 2012 эти устройства уже доступны в продаже.
Lava XOLO X900 с оф. сайта www.xolo.in, насколько я понял доступен в пределах Индии. Хотя его уже можно заказать с ebay. Актуальную цену для России через посредников можно посмотреть на www.bay.ru
Lenovo LePhone K800 также доступен, но пока видимо только в китайских магазинах www.360buy.com

Вступление

Пока модельный рад небольшой, и не очень доступный. Меня заинтересовали технические моменты.
И так что мы имеем. В этих девайсах стоит процессор с архитектурой x86. Не знаю кто о чем подумал.
Наверное о его низкой энергоэффективности, низкой производительности. Хотя обзоры говорят об обратном.
Я сразу подумал, не плохо бы наконец без эмуляции, запускать Windows приложения. Я думаю уже многие пробовали запускать старые версии Windows под эмуляторами (Qemu, Bochs, aDOSBox и т.п.) Деже на мощных современный Android смартфонах, тормоза ощутимые.
О возможности Dual Boot говорить пока рано. Не ясно даже есть ли BIOS/UEFI.
Я подумал что, не плохо было бы попробовать запустить Wine под Ubuntu x86. Под Ubuntu
ARM такое чудо по понятным причинам не доступно.
Ну, а так как девайса у меня на руках нет. Всё что оставалось это проверить идею под эмулятором Android x86.

Приступаем к работе

Первым делом я добавил в Android SDK образ Intel x86 Atom System Image. Запустив его, я столкнулся с неимоверными тормозами, включение GPU также не решило проблему. Настолько медленная работа, отбила у меня всякое желание даже рутовать Android.
Поэтому я сразу же установил Android x86 под VirtualBox. При первичной настройки ВМ укажите большой размер ЖД не менее 7 Гб. На последнем этапе установки Android откажитесь создавать фейковую SD карту.

Следующей проблемой оказалось найти образ с установленной Ubuntu в *.img
Под рукой у меня был образ Ubuntu 12 под VirtualBox *.vdi
Первой что пришло в голову это сконверитровать *.vdi в *.img командами типа
VBoxManage clonehd —format RAW ubuntu.vdi ubuntu.img
Но это оказался не верный путь. Указанным способом создастся образ всего диска с таблицей разделов, его так просто не примонтировать.

Посоветовавшись было найдено правильное решение. Необходимо загрузить виртуальную машину с livecd, предварительно подключить в настройках ВМ образы ЖД *.vdi Android и Ubuntu.
В консоли загрузившись с livecd выполнить
sudo parted -l
Смотрим имя у подключенного образа Ubuntu x86. Обычно это sda1

Далее от себя порекомендую задать на все каталоги и файлы в образе права 777. Не смотря на то, что уйдет много времени на эти операции. Если этого не сделать, могут возникнуть не решаемые проблемы при монтировании образа к Android. У меня они возникли.
Так что юзаем команды:
# find /media/имя куда смонтировался образ -type d -exec chmod 777 <> \;
# find /media/имя куда смонтировался образ -type f -exec chmod 777 <> \;

chmod -R 0777 /media/имя куда смонтировался образ

Далее в консоли на ввод подаём блочное устройство промонтированного образа Ubuntu. На вывод пишем файл образ ubuntu.img Для удобства пишем сразу в образ Android, в директорию sdcard/ubuntu.
Для этого выполним:
dd if=/dev/sda1 of=/media/Android-x86/android-4.0-RC1/data/media/ubuntu/ubuntu.img bs=1M
Ждем операция не быстрая. Убедитесь что в образе Android достаточно места.

Опять же на полученный файл-образ ubuntu.img задаём права 777
Ну вроде образ подготовили. Двигаемся дальше.

Монтирование

Монтирование, наверное самый напряженный этап.
После всего сделанного, загружаемся наконец в Android.
Для начало у нас должно иметься:
1. Образ Ubuntu x86 в каталоге /sdcard/ubuntu/ubuntu.img
2. Рутованная сборка Android x86. Обычно они сразу прорутованные.
3. Android Terminal
4. android-vnc-viewer
5. Root Explorer

Для начало подними сеть в Android.
В качестве сетевого адаптера выбрать PCNET Fast III в режиме NAT (либо в режиме моста, если у вас в окружении есть DHCP сервер)

Корректную работу интернета можно настроить через терминал:
вывести список сетевых интерфейсов. Среди них должен быть например eth0
ip a
получить права рута:
su
получить настройки сети по DHCP
dhcpcd eth0
настроить DNS сервер
setprop net.dns1 8.8.8.8
После этих действий интернет на виртуальной машине должен появиться.
настроить adb. В опциях VirtualBox пробросить порт виртуальной машины 5555 например на порт 5556 хоста.

Теперь можно соединяться с виртуальным Android с помошью adb
adb connect 127.0.0.1:5556
Если нужно получить шел рута
adb shell
Обмен файлами и установка приложений осуществляется командами
adb push или adb install
Для Маркета интернет у меня не заработал. Однако в браузере да и в системе он есть.

Следующим шагом будет непосредственно монтирование образа и chroot в Ubuntu.

Создаем файл b в и сохраняем его в каталог /sdcard/ubuntu со следующим содержанием

Читайте также:  Windows 10 описание самой системы

mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
echo «SET VARIABLES»
export bin=/system/bin
export mnt=/data/local/ubuntu
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
if [! -d /data/local/ubuntu ]
then
mkdir /data/local/ubuntu
chmod 777 /data/local/ubuntu
fi

echo «SET UP LOOP DEVICE»
losetup /dev/block/loop1 /sdcard/ubuntu/ubuntu.img

echo «MOUNT»
mount -t ext4 /dev/block/loop1 /data/local/ubuntu
mount -t devpts devpts $mnt/dev/pts
mount -t proc proc $mnt/proc
mount -t sysfs sysfs $mnt/sys

echo «SET UP NETWORK»
sysctl -w net.ipv4.ip_forward=1
echo «nameserver 208.67.222.222» > $mnt/etc/resolv.conf
echo «nameserver 208.67.220.220» >> $mnt/etc/resolv.conf
echo «127.0.0.1 localhost» > $mnt/etc/hosts

echo «ENTER UBUNTU»
chroot $mnt /bin/bash

echo «UMOUNTING»
umount -lfr $mnt/dev/pts
umount -lfr $mnt/proc
umount -lfr $mnt/sys
umount -lfr $mnt
losetup -d /dev/block/loop1

Особенно будьте внимательны в строке
mount -t ext4 /dev/block/loop1 /data/local/ubuntu
важно правильно указать тип файловой системы на монтируемом образе.

Запустите приложение терминала
Введите в терминале команду и нажмите «Enter»:
su

Введите в терминале команду и нажмите «Enter»:
cd /sdcard/ubuntu

Введите в терминале команду и нажмите «Enter»:
sh b

Если вы видите «root@localhost:/#» — поздравляем! Теперь вы работаете в Ubuntu x86

Каждый раз, когда вы хотите войти в Ubuntu, — вы должны просто ввести su, а затем sh b в вашем Android-терминале.

Чтобы правильно выйти из Ubuntu — вы должны ввести exit в терминале Ubuntu.

Настраиваем VNC

Убедитесь, что есть подключение к сети
Введите в терминале команду и нажмите «Enter», дождитесь завершения:
apt-get update

Введите в терминале команду и нажмите «Enter», на вопрос ответьте y:
apt-get install tightvncserver

Продолжаем работать под chroot.
Заходим в /bin
Там создаём файл x с содержанием:
rm -r -f /tmp
mkdir /tmp
chmod 777 /tmp
export USER=root
export XKL_XMODMAP_DISABLE=1
vncserver -geometry 800×550

800×550 замените разрешение вашего эмулятора/устройства
Учтите что в Android 4 нижняя панель занимает определенное число пикселов. В моем случае это 50 пикселов. Поэтому что бы не приходилось в VNC клиенте прокручивать указал не 600 как в эмуляторе, а 550.
Наиболее простой способ узнать разрешение это снять скрин.

Сделайте chmod 777 x

С помощью предыдущего шага мы создали сценарий x. Когда вы хотите начать работать с графическим режимом — введите x в терминале Ubuntu и нажмите Enter. Обратите внимание, что при первом запуске сценария x (Только в первый раз) вам будет предложено создать пароль, для VNC-соединения. Введите необходимый вам пароль (Учитывает только 8 первых символов). Также вам будет предложено создать пароль «только для просмотра» (view-only) — откажитесь, введя ответом на вопрос n
Запустите android-vnc-viewer. Создайте новое соединение, со следующими параметрами:
Nickname: все что угодно
Password: установленный вами пароль VNC-соединения
Address: localhost
Port: 5901
Color format: 24-bit color (4 bpp)
Нажмите кнопку «Connect». Через несколько минут Ubuntu запустится в графическом режиме.

Нам все еще нужно создать окончательный сценарий, под названием s
Идем опять в /bin
Там создаём файл x с содержанием:
export USER=root
vncserver -kill :1
vncserver -kill :2
sudo reboot
sudo halt

Делаем chmod 777 s

Если у вас работает графический интерфейс и вы хотите завершить работу с Ubuntu, то вы ОБЯЗАТЕЛЬНО ДОЛЖНЫ выполнить s в терминале Ubuntu, чтобы остановить VNC-сервер.

Ну и финальная часть

Ставим Wine
ну тут все тривиально
sudo apt-get install wine

Не много о подводных камнях

Мне пришлось работать под эмулятором, в котором вероятно нет чудесного бинарного транслятора от Intel.
По этому софт написанный с использованием NDK просто не запускался, вываливаясь с ошибками.
Именно поэтому используется android-vnc-viewer, так он написан без NDK. Но учтите android-vnc-viewer не полностью поддерживает хардверную клавиатуру. А полноценные аналоги не работают.
Проверить использовался ли NDK достаточно просто. Откройте *.apk, например в WinRAR если есть каталог lib, значит NDK использовался. В этом каталоге можно посмотреть под какие архитектуры собиралось приложение. Думаю скоро разработчики помимо ARMv6, v7 будут добавлять x86.
Учтите скорость под эмулятором скорость не очень высокая. Также я использовал достаточно тяжёлую оболочку в Ubuntu.
В android-vnc-viewer правая кнопка мыши, в определенном режиме, работает как двойной клик левой.

Хочется увидеть насколько производительным окажется на первых порах бинарный транслятор в играх.

Победа

Спасибо друзьям с 4pda EeeeKa, а также bit_imp за помощь и статьи.

Источник

Устанавливаем рабочий стол Linux на Android

Привет, Хабр! Представляю вашему вниманию перевод статьи из журнала APC.

В данной статье рассматривается полная установка операционной среды Linux вместе с графическим окружением рабочего стола на Android-устройствах.

Одной из ключевых технологий, которую применяют многие из систем Linux на Android, является pRoot. Это реализация утилиты chroot в пользовательском пространстве, которая пользуется большой популярностью в настольных системах и серверах Linux. Однако для инструмента chroot нужны полномочия пользователя root, которые не доступны по умолчанию на Android. pRoot же даёт это преимущество за счёт установления привязки к директории.

Терминалы Linux

Не во всех эмуляторах терминалов Linux для Android имеется набор утилит BusyBox, в отличие, например, от Termux. Причиной тому является то обстоятельство, что весь смысл подобных систем состоит в обеспечении «полной» установки всех компонентов ОС, в то время как BusyBox предназначена для того, чтобы свести всё множество общих утилит в один двоичный файл. В системах, где не установлена BusyBox, используется начальная загрузка для Linux, содержащая полные версии программ.
«

Читайте также:  Яндекс переводчик для сафари mac os

Задайте логин и пароль для дистрибутива и VNC в UserLAnd.

Однако в этих системах присутствует дополнительная технология, которая не требует наличия Termux. В этой статье будет рассматриваться полнокомплектная инсталляция дистрибутива Linux, а также рабочего стола GUI. Но прежде необходимо выбрать способ установки графической системы.

Linux на Android

Как было упомянуто ранее, программные пакеты, которые мы будем устанавливать, запускаются в пользовательском пространстве.

Это означает, что у них есть только разрешение для текущего пользователя, который в случае ОС Android всегда является обычным пользователем, т.е. не имеет полномочий администратора. Однако для того, чтобы установить рабочий стол Linux, нам понадобится установить графический сервер, например, X или Wayland. Если бы мы делали это в операционной среде Linux, то он запустился бы с полномочиями обычного пользователя, не имея при этом доступа к графическому уровню ОС Android. И потому мы должны смотреть в сторону установки сервера «стандартным» андроидовским способом, чтобы у него был доступ к железу и способность поддерживать графическую среду.

Умные ребята из сообщества разработчиков предложили два решения этой проблемы. Первое заключается в том, чтобы использовать собственные версии Linux (как правило, это сервер X). После того, как те начнут работу в фоновом режиме, у вас появится доступ к данному фоновому процессу через VNC. Если же на вашем устройстве Android уже имеется программа VNC viewer для удаленного взаимодействия с другими компьютерами, просто используйте её, чтобы получить удалённый доступ к локальному узлу. Это простое в исполнении решение, однако некоторые пользователи сообщают о том, испытывают затруднения с работой программы.

Второй вариант – установить сервер, предназначенный специально для устройств на базе Android. Некоторые серверы доступны на Play Store в платной и бесплатной версиях. Перед установкой необходимо проверить, поддерживается ли выбранный вариант или по крайней мере работает ли с тем программным пакетом Linuх для Android, который вы собираетесь установить. Мы отдали предпочтение системе X-Server, и потому использовали программный пакет XServer XSDL (ссылка). В статье будет описываться процесс установки данного сервера, хотя он может немного отличаться, если у вас установлено другое приложение или же используете VNC.

Выбор системы

Как в случае с X-Servers, в Play Store существует несколько приложений по установке дистрибутивов системы Linux. Здесь также, как и с Termux, мы сконцентрируемся на вариантах, которые не требуют полномочий суперпользователя, что в свою очередь предполагает определённую степень риска. Эти приложения предоставляют весь необходимый для большинства пользователей функционал, сохраняя при этом ваши данные в безопасности. Ниже представлены примеры таких приложений в Play Store:

UserLAnd: весьма популярный выбор пользователей. Приложение включает в себя набор распространенных дистрибутивов: Debian, Ubuntu, Arch и Kali. Любопытно, что несмотря на отсутствие вариантов на базе RPM, UserLAnd включает Alpine Linux для устройств с меньшим объёмом памяти.

AnLinux: данное приложение помогает в установке одного или нескольких списков дистрибутивов большого объёма и может включать в себя Ubuntu/Debian, Fedora/ CentOS, openSUSE и даже Kali. Там также можно выбрать низкозатратные десктопные варианты: Xfce4, MATE, LXQtand LXDE. Для работы требуется установленный Termux, а операционная система Android должна быть от 5.0 и выше.

Andronix очень похож на AnLinux. Возможно, имеет лучший дизайн, чем предыдущее приложение, однако поддерживает меньшее число дистрибутивов.

GNURoot WheezyX: этот проект стартовал как вариант Linux на Android и разрабатывался для программ c открытым исходным кодом. Как подсказывает название, он фокусируется на дистрибутивах Debian, в то время как ‘X‘ на конце означает, что приложение ориентировано на графический рабочий стол. И несмотря на то, что создатели остановили разработку проекта ради UserLAnd, GNURoot WheezyX всё ещё доступен на Play Store, если у кого-то есть в нём нужда.

Авторы данной статьи будут использовать приложение UserLAnd для установки рабочего стола Linux на Android, и тому есть несколько причин. Во-первых, приложение имеет открытый исходный код (хотя AnLinux тоже его имеет). Во-вторых, оно предлагает хороший набор дистрибутивов (хотя в него и не включены Fedora или CentOS), также с помощью него можно установить дистрибутивы с минимальными системными требованиями, которые не займут много места в памяти смартфона. Но главное преимущество UserLAnd в том, что оно имеет инструменты поддержки для установки отдельных приложений вместо целых дистрибутивов. Мы выясним, что конкретно это значит для нас, позже. А сейчас давайте установим UserLAnd на ваше устройство.

Приложение UserLAnd

Скачайте приложение из Google Play или F-Droid (ссылка) на ОС Android. Оно устанавливается как и любое другое приложение – ничего особенного здесь делать не надо. После этого запустите его из панели приложений.

Первое, что вы увидите там – это список дистрибутивов. В конце можно найти пару десктопных вариантов: LXDE and Xfce4. Замыкает его приложение Firefox, пара игр и несколько офисных утилит: GIMP, Inkscape и LibreOffice. Это вкладка называется «Приложения». Предназначена она для установки приложений.

Читайте также:  Windows 64 бит профессиональная

После того, как вы установите что-нибудь, на вкладке «Session» появится соответствующая запись об этом. Здесь можно начать или остановить текущую сессию, а также посмотреть запущенные процессы.

“Filesystems” – последняя вкладка, которая показывает уже завершённые установки. Стоит отметить, что после того, как вы удалите любой элемент из Filesystems, сведения о нём будут стёрты из вкладки Session, что, однако, не доказывает обратного. Это значит, что вы сможете создать новую сессию на базе текущей файловой системы. Понять, как работает эта взаимосвязь, намного проще, если увидеть это в действии, и потому мы начнём с установки приложения в системной среде UserLAnd.

Перед тем, как установить дистрибутив на смартфоне, необходимо предоставить UserLAnd доступ к хранилищу.

Дистрибутивы в UserLAnd

Выберите один из дистрибутивов, расположенных на экране Apps, для установки на устройство. В качестве примера мы будем использовать Ubuntu. При нажатии на значок появляется диалоговое окно, где спрашивается имя пользователя, пароль и пароль VNC. Затем выберите способ, посредством которого вы получите доступ к дистрибутиву. Начнётся загрузка, в ходе которой будет задействован базовый образ выбранного дистрибутива. Распаковка файла будет осуществляться в директории UserLAnd.

По окончании загрузки вернитесь к эмулятору терминала xterm. Можете ввести служебную команду, чтобы узнать, какую версию Linux вы установили:

Следующий шаг заключается в том, чтобы инсталлировать рабочий стол, используя служебную команду Ubuntu:

Последний шаг состоит в том, чтобы убедиться, что ваше новое окружение рабочего стола готово к запуску. Чтобы сделать это, нужно отредактировать файл .xinitrcfile, в котором в настоящее время имеется всего одна строка /usr/ bin/twm. Её необходимо изменить на /usr/bin/startlxde. Теперь выйдите из сессии XSDL (убедитесь, что нажали кнопку STOP в области уведомлений), удерживайте кнопку «Ubuntu listing» на вкладке Sessions, затем нажмите «Stop Sessions» и повторно запустите сессии. Через несколько секунд должна появиться системная среда LXDE. В ней можно делать то же самое, что и на обычном рабочем столе. Она просто может быть немного меньше и работать чуть медленнее: чтобы нажать кнопку на устройстве, вам придётся ждать дольше, чем если бы вы это делали с клавиатурой и мышью. Давайте посмотрим, как конкретно мы можем усовершенствовать системную среду Linux на смартфоне.

Краткое руководство к UserLAnd

При внимательном изучении содержимого рабочего стола можно обнаружить точное воссоздание дексктопной версии. Если вы используете UserLAnd на устройстве с клавиатурой и мышью (подключённых через Bluetooth-соединение или каким-либо иным образом), вам будет легко приспособиться к использованию системной среды Linux в таком формате. За исключением небольшого отставания, которое происходит за счёт того, что курсор X-Windows синхронизируется с курсором устройства на Android, всё работает плавно.

Возможно, первое, что вы захотите сделать, это отрегулировать установленную по умолчанию систему шрифтов, поскольку размер шрифтов рабочего стола слишком велик для экрана телефона. Перейдите в главное меню, затем выберите «Настройки» → «Настройка внешнего вида и виджетов» → «Виджет». Здесь можно поменять размер шрифта по умолчанию на более подходящий вариант для вашего телефона.

Возможно, дальше вы захотите установить свои любимые программы в системную среду Linux. Как сказано выше, служебные команды в этом случае не будут работать, так что смело используйте поистине незаменимый инструмент, который установлен в системной среде UserLAnd, под названием ASAP:

Дистрибутивы в приложении представлены в виде сессий. Вы можете начать и закрыть их.

После установки дистрибутива можно добавить среду рабочего стола со стандартными командами.

Вероятно, вам также понадобятся альтернативные способы установления соединения для своего дистрибутива. Тот факт, что вы изначально установили XSDL, не означает, что он должно быть неизменным всё время. Вы можете создать ещё одну учётную запись на вкладке Session и выбрать другой сервер. Только убедитесь, что указали его в одной и то же файловой системе. UserLAnd попытается направить вас на нужное приложение, чтобы установить новый тип соединения: либо XSDL, ConnectBot для SSH, или bVNC.

Однако настойчивость, с которой приложение автоматически направляет вас в Play Store при попытке переподключения, может раздражать. Чтобы прекратить это, достаточно сменить сервер посредством установки специального приложения. Для установки SSH выберите старый проверенный VX ConnectBot. Просто войдите в порт 2022 на рабочей станции под вашим именем и паролем. Для того, чтобы подключиться к серверу VNC достаточно установить коммерческое, но во многих отношениях продвинутое приложение Jump Desktop, и набрать адрес 127.0.0.1:5951.

Надеемся, вы помните пароль VNC, который задали, когда создавали файловую систему.
Получить доступ к текущей сессии UserLAnd также можно используя похожие инструменты на другом компьютере в вашей сети. Достаточно подключить SSH к работающему сеансу (с типом соединения SSH, естественно) посредством терминала Linux, например, Konsole, или подключиться к сеансу VNC с помощью KRDC. Просто замените локальные адреса на экране компьютера IP-адресами вашего Андроида.

В сочетании с парой переносных приложений эта установка даст вам удобную портативную систему Linux, к которой можно подключиться с помощью любого компьютера, доступного вам в данный момент.

Источник

Оцените статью