Ubuntu Debian GentOS на Android-устройстве

Здравствуйте.
У меня в кладовке долго валялся «китайский» клон смартфона HTC ONE. Помимо того, что у него умерла батарейка, дык ещё и экран расколот. Показывать то он показывает, а вот тачскрин работает только частично — небольшая область в левом углу. Однако не смотря на все неприятности, такому девайсу можно найти применение, например, запилить на нём домашний сайт, и/или запустить телеграм-бота.
Итак, нужно чтобы была включена отладка по USB и получены права root. Отладка у меня была включена давно, а root я сделал с помощью программы Superuser.
ADB
Если у Вас так же как и у меня не работает тач, тогда понадобиться ADB-сервер. С его помощью можно с компьютера управлять телефоном, имитировать нажатия на экран, вводить текст и т.д.
Установка adb и работа с ним под


sudo apt install android-tools-adb
Подключаем телефон к компу и останавливаем сервер:
adb kill-server
Запускаем под root'ом:
sudo adb start-server
Проверяем коннект с аппаратом:
adb devices

Далее перечислены команды для различных действий.
Кликнуть по экрану:
adb shell input tap 300 1200
Где цифры — это координаты, первая по горизонтали (X), вторая по вертикали (Y) (от верхнего левого угла).
Для удобства, можно на телефоне сделать скриншот
Свайп:
adb shell input swipe 100 500 1000 145
Снизу вверх маханёт.
Отправить текст:
adb shell input text bla-bla
Отправит «bla-bla».
Отправить код кнопки, например HOME:
adb shell input keyevent 3
Другие коды
0 --> «KEYCODE_0»
1 --> «KEYCODE_SOFT_LEFT»
2 --> «KEYCODE_SOFT_RIGHT»
3 --> «KEYCODE_HOME»
4 --> «KEYCODE_BACK»
5 --> «KEYCODE_CALL»
6 --> «KEYCODE_ENDCALL»
7 --> «KEYCODE_0»
8 --> «KEYCODE_1»
9 --> «KEYCODE_2»
10 --> «KEYCODE_3»
11 --> «KEYCODE_4»
12 --> «KEYCODE_5»
13 --> «KEYCODE_6»
14 --> «KEYCODE_7»
15 --> «KEYCODE_8»
16 --> «KEYCODE_9»
17 --> «KEYCODE_STAR»
18 --> «KEYCODE_POUND»
19 --> «KEYCODE_DPAD_UP»
20 --> «KEYCODE_DPAD_DOWN»
21 --> «KEYCODE_DPAD_LEFT»
22 --> «KEYCODE_DPAD_RIGHT»
23 --> «KEYCODE_DPAD_CENTER»
24 --> «KEYCODE_VOLUME_UP»
25 --> «KEYCODE_VOLUME_DOWN»
26 --> «KEYCODE_POWER»
27 --> «KEYCODE_CAMERA»
28 --> «KEYCODE_CLEAR»
29 --> «KEYCODE_A»
30 --> «KEYCODE_B»
31 --> «KEYCODE_C»
32 --> «KEYCODE_D»
33 --> «KEYCODE_E»
34 --> «KEYCODE_F»
35 --> «KEYCODE_G»
36 --> «KEYCODE_H»
37 --> «KEYCODE_I»
38 --> «KEYCODE_J»
39 --> «KEYCODE_K»
40 --> «KEYCODE_L»
41 --> «KEYCODE_M»
42 --> «KEYCODE_N»
43 --> «KEYCODE_O»
44 --> «KEYCODE_P»
45 --> «KEYCODE_Q»
46 --> «KEYCODE_R»
47 --> «KEYCODE_S»
48 --> «KEYCODE_T»
49 --> «KEYCODE_U»
50 --> «KEYCODE_V»
51 --> «KEYCODE_W»
52 --> «KEYCODE_X»
53 --> «KEYCODE_Y»
54 --> «KEYCODE_Z»
55 --> «KEYCODE_COMMA»
56 --> «KEYCODE_PERIOD»
57 --> «KEYCODE_ALT_LEFT»
58 --> «KEYCODE_ALT_RIGHT»
59 --> «KEYCODE_SHIFT_LEFT»
60 --> «KEYCODE_SHIFT_RIGHT»
61 --> «KEYCODE_TAB»
62 --> «KEYCODE_SPACE»
63 --> «KEYCODE_SYM»
64 --> «KEYCODE_EXPLORER»
65 --> «KEYCODE_ENVELOPE»
66 --> «KEYCODE_ENTER»
67 --> «KEYCODE_DEL»
68 --> «KEYCODE_GRAVE»
69 --> «KEYCODE_MINUS»
70 --> «KEYCODE_EQUALS»
71 --> «KEYCODE_LEFT_BRACKET»
72 --> «KEYCODE_RIGHT_BRACKET»
73 --> «KEYCODE_BACKSLASH»
74 --> «KEYCODE_SEMICOLON»
75 --> «KEYCODE_APOSTROPHE»
76 --> «KEYCODE_SLASH»
77 --> «KEYCODE_AT»
78 --> «KEYCODE_NUM»
79 --> «KEYCODE_HEADSETHOOK»
80 --> «KEYCODE_FOCUS»
81 --> «KEYCODE_PLUS»
82 --> «KEYCODE_MENU»
83 --> «KEYCODE_NOTIFICATION»
84 --> «KEYCODE_SEARCH»
85 --> «KEYCODE_MEDIA_PLAY_PAUSE»
86 --> «KEYCODE_MEDIA_STOP»
87 --> «KEYCODE_MEDIA_NEXT»
88 --> «KEYCODE_MEDIA_PREVIOUS»
89 --> «KEYCODE_MEDIA_REWIND»
90 --> «KEYCODE_MEDIA_FAST_FORWARD»
91 --> «KEYCODE_MUTE»
92 --> «KEYCODE_PAGE_UP»
93 --> «KEYCODE_PAGE_DOWN»
94 --> «KEYCODE_PICTSYMBOLS»
…
122 --> «KEYCODE_MOVE_HOME»
123 --> «KEYCODE_MOVE_END»
1 --> «KEYCODE_SOFT_LEFT»
2 --> «KEYCODE_SOFT_RIGHT»
3 --> «KEYCODE_HOME»
4 --> «KEYCODE_BACK»
5 --> «KEYCODE_CALL»
6 --> «KEYCODE_ENDCALL»
7 --> «KEYCODE_0»
8 --> «KEYCODE_1»
9 --> «KEYCODE_2»
10 --> «KEYCODE_3»
11 --> «KEYCODE_4»
12 --> «KEYCODE_5»
13 --> «KEYCODE_6»
14 --> «KEYCODE_7»
15 --> «KEYCODE_8»
16 --> «KEYCODE_9»
17 --> «KEYCODE_STAR»
18 --> «KEYCODE_POUND»
19 --> «KEYCODE_DPAD_UP»
20 --> «KEYCODE_DPAD_DOWN»
21 --> «KEYCODE_DPAD_LEFT»
22 --> «KEYCODE_DPAD_RIGHT»
23 --> «KEYCODE_DPAD_CENTER»
24 --> «KEYCODE_VOLUME_UP»
25 --> «KEYCODE_VOLUME_DOWN»
26 --> «KEYCODE_POWER»
27 --> «KEYCODE_CAMERA»
28 --> «KEYCODE_CLEAR»
29 --> «KEYCODE_A»
30 --> «KEYCODE_B»
31 --> «KEYCODE_C»
32 --> «KEYCODE_D»
33 --> «KEYCODE_E»
34 --> «KEYCODE_F»
35 --> «KEYCODE_G»
36 --> «KEYCODE_H»
37 --> «KEYCODE_I»
38 --> «KEYCODE_J»
39 --> «KEYCODE_K»
40 --> «KEYCODE_L»
41 --> «KEYCODE_M»
42 --> «KEYCODE_N»
43 --> «KEYCODE_O»
44 --> «KEYCODE_P»
45 --> «KEYCODE_Q»
46 --> «KEYCODE_R»
47 --> «KEYCODE_S»
48 --> «KEYCODE_T»
49 --> «KEYCODE_U»
50 --> «KEYCODE_V»
51 --> «KEYCODE_W»
52 --> «KEYCODE_X»
53 --> «KEYCODE_Y»
54 --> «KEYCODE_Z»
55 --> «KEYCODE_COMMA»
56 --> «KEYCODE_PERIOD»
57 --> «KEYCODE_ALT_LEFT»
58 --> «KEYCODE_ALT_RIGHT»
59 --> «KEYCODE_SHIFT_LEFT»
60 --> «KEYCODE_SHIFT_RIGHT»
61 --> «KEYCODE_TAB»
62 --> «KEYCODE_SPACE»
63 --> «KEYCODE_SYM»
64 --> «KEYCODE_EXPLORER»
65 --> «KEYCODE_ENVELOPE»
66 --> «KEYCODE_ENTER»
67 --> «KEYCODE_DEL»
68 --> «KEYCODE_GRAVE»
69 --> «KEYCODE_MINUS»
70 --> «KEYCODE_EQUALS»
71 --> «KEYCODE_LEFT_BRACKET»
72 --> «KEYCODE_RIGHT_BRACKET»
73 --> «KEYCODE_BACKSLASH»
74 --> «KEYCODE_SEMICOLON»
75 --> «KEYCODE_APOSTROPHE»
76 --> «KEYCODE_SLASH»
77 --> «KEYCODE_AT»
78 --> «KEYCODE_NUM»
79 --> «KEYCODE_HEADSETHOOK»
80 --> «KEYCODE_FOCUS»
81 --> «KEYCODE_PLUS»
82 --> «KEYCODE_MENU»
83 --> «KEYCODE_NOTIFICATION»
84 --> «KEYCODE_SEARCH»
85 --> «KEYCODE_MEDIA_PLAY_PAUSE»
86 --> «KEYCODE_MEDIA_STOP»
87 --> «KEYCODE_MEDIA_NEXT»
88 --> «KEYCODE_MEDIA_PREVIOUS»
89 --> «KEYCODE_MEDIA_REWIND»
90 --> «KEYCODE_MEDIA_FAST_FORWARD»
91 --> «KEYCODE_MUTE»
92 --> «KEYCODE_PAGE_UP»
93 --> «KEYCODE_PAGE_DOWN»
94 --> «KEYCODE_PICTSYMBOLS»
…
122 --> «KEYCODE_MOVE_HOME»
123 --> «KEYCODE_MOVE_END»
Вместо цифры можно отправить текстовый код:
adb shell input keyevent KEYCODE_HOME
Установка приложения:
adb install Superuser.apk
Ребут аппарата:
adb reboot
Этого вполне хватит для дальнейших действий. Посмотреть другие команды можно через adb --help либо почитать по ссылке в начале статьи.
Linux Deploy
Пришло время перейти к основной задаче. Нужно установить на телефон приложение Linux Deploy, которое позволяет разворачивать образы различных дистрибутивов Linux — Debian, Ubuntu, Kali Linux, Arch Linux, Fedora, CentOS, Gentoo, Slackware.
Скачать приложение можно как по ссылке, так и из Google Play. Если экран не рабочий, то качаем приложение на комп и устанавливаем через adb.
На 4pda, в инструкции по установке говорится о том, что «в редких случаях может понадобится использование системного BusyBox», я его не ставил и нужды в нем не испытывал.
Запускаем Linux Deploy и видим следующую картинку…

Если первые два пункта выполнены, тогда нажимаем кнопку


Здесь настраиваются основные параметры будущей ОС.
Дистрибутив — у меня это будет Debian.
Версия дистрибутива — я буду ставить jessie (Debian 8).
Имя пользователя — это имя будет использоваться для входа через ssh.
Пароль пользователя — запишите на бумажку (чтоб не лазать сюда) или можете задать свой.
Разрешить запуск SSH сервера — поставьте галку.
Параметры SSH — тут я изменил порт на 2224-й.
Больше ничего не менял.
Графику не запускаю, мне она не нужна, но если хотите, то поставьте соответствующую галочку («Разрешить запуск графической среды»). По умолчанию будет запущен VNC-сервер.
Для тех кто не понимает о чем речь, поясню: на телефоне никакого рабочего стола вы не увидите, это всё находится внутри контейнера. Подключится к нему можно с помощью соответствующего клиента, либо удалённо, либо непосредственно на телефоне, предварительно установив какой-нибудь клиент, например XServer XSDL.
Почитать про остальные параметры можно здесь.
Возвращаемся на предыдущий экран, жмём



Здесь я ничего не менял, но Вы можете поэкспериментировать, включить доступ к командной строке контейнера через браузер, доступ по telnet, автозапуск контейнера после перезагрузки аппарата и т.д.
Так же здесь находятся два важных пункта:
Удалить окружение — удаляет контейнер.
Обновить окружение — для подтверждения внесенных изменений в эти настройки.
Подробное описание можно почитать на 4pda.
Возвращаемся на предыдущий экран и жмем


Установить — создает контейнер.
Конфигурировать — это нужно будет нажать после создания контейнера.
Экспортировать — экспортирует готовый контейнер в систему. Готовые контейнеры можно где-то скачать, но я этим не интересовался.
Состояние — выведет некоторую инфу.
Очистить — очищает экран.
Жмём Установить и набираемся терпения, у меня установка длилась минут 30. Если всё прошло успешно, то мы должны увидеть следующее…

Контейнер установлен.
Жмем


Далее кнопкой


Ну вот, наконец можно зайти в контейнер по ssh:
ssh -p2224 android@192.168.5.212
Как Вы помните, я менял порт. Пароль записан на бумажке.
Вуаля…

Далее всё стандартно…
sudo apt update
sudo apt upgrade
Для остановки контейнера нужно нажать

На этом всё.

- 0
- stD
5188
Поддержать автора
Комментарии (0)