Установка ядра на планшет
Прошло совсем немного времени с момента выпуска первых смартфонов под управлением ОС Android до того, как энтузиасты научились запускать на них полноценные дистрибутивы Linux. Сегодня методики установки Linux-дистрибутивов на Android-устройства широко известны, а в репозитории Google Play есть даже автоматизированные системы установки и запуска Linux. В этой статье я попытаюсь аккумулировать весь накопленный опыт работы с Linux на смартфонах, расскажу, зачем это нужно, и покажу, как избежать возможных подводных камней при переносе Linux на смартфон или планшет.
Прошивка гаджета через Fastboot
Перепрошить устройство Андроид можно через Fastboot. Но для начала следует установить утилиту на ваш гаджет. Существует две версии такой программы. Первая предусматривает скачивание Fastboot в комплексе с официальной программой Android SDK. Вторая версия предполагает загрузку утилиты отдельно.
Далее на компьютере необходимо открыть командную строку и ввести следующие коды:
- cd C:\Android.
- fastboot flash boot boot.img.
- fastboot erase cache.
- fastboot reboot.
Очень важно правильно вводить все слова с учётом регистра и пробелов. Команда cd открывает необходимую папку, в которой содержатся требуемые файлы. После этого происходит перепрошивка. Команда fastboot erase cache удаляет раздел Кэш. Последняя команда — fastboot reboot перезагружает устройство из режима прошивки в обычный. Если все указанные действия вы произвели правильно, то процесс пройдёт успешно.
Заключение
Установка операционной системы Debian и использование deb-пакетов требует определённых познаний. В некоторых случаях вам просто невозможно обойтись без познаний в программировании. Если вы не уверены в своих силах, изучите все возможные ситуации на специализированных ресурсах.
Надеемся, что у вас всё получилось. Пишите в комментариях о своих успехах.
Пользователей мобильных устройств не всегда устраивает работа и возможности своих гаджетов. По этой причине юзеры ищут оптимальный способ, как прошить ядро операционной системы Андроид. С одной стороны, такое действие можно легко осуществить с вашим планшетом или смартфоном. Тысячи пользователей успешно перепрошили ядро без возникновения сложностей и проблем. Но, с другой стороны, любая ошибка во время этого процесса может привести к нежелательным последствиям, среди которых сбой работы гаджета и необходимость дорогостоящего сервисного обслуживания. На разных этапах есть риск выбрать неправильную версию прошивки ядра, которая создана неквалифицированными разработчиками, либо не подходит к вашему мобильному устройству. Мы рекомендуем быть предельно внимательным при проведении любых действий, вносящих изменения в программную часть девайса на низком уровне. После успешной перепрошивки ядра у многих возникает ощущение, что они держат в руках совершенно новое устройство. Продвинутые пользователи таким образом могут настроить гаджет под свои потребности и предпочтения, получив при этом новые знания и опыт о современных мобильных технологиях.
Ядро операционной системы Андроид и его прошивка
Установка Gentoo на ext2-раздел
Итак, мы установили Ubuntu с помощью образа с файловой системой и шаманств с loopback-устройством и chroot-окружением. Сделать это оказалось несложно, а с применением скриптов так и вообще очень легко, но что, если пойти дальше и установить более хардкорный дистрибутив, и не с использованием образов, а на выделенный ext2-раздел на карте памяти? Так мы сможем решить проблему некоторых прошивок и ядер без поддержки loopback-устройств и к тому же сможем насладиться нормальным дистрибутивом, установленным по всем правилам.
Проект «Ubuntu for Android» в действии
Возьмем в качестве подопытной системы Gentoo. Чтобы установить его на ext2-раздел, нам понадобится карта памяти объемом не меньше 2 Гб и рутованный смартфон с установленным busybox. Последовательность действий следующая.
- Делаем бэкап данных с карты памяти и создаем на ней дополнительный раздел, объемом не меньше двух гигабайт. Сделать это можно с помощью любой программы для разбивки дисков, однако имей в виду, что если ты хочешь продолжать использовать SD-карту по прямому назначению, то создавать FAT32-раздел следует в начале карты, так, чтобы он стал первым, а дополнительный раздел для установки дистрибутива должен быть вторым.
- Форматируем разделы SD-карты:
- Берем телефон, заходим в «Настройки -> О телефоне» и смотрим, какой установлен процессор. Далее переходим на страницу goo.gl/PRfux и выкачиваем stage3 для нужной архитектуры, например stage3 для ARM v7 лежит в каталоге current-stage3-armv7a.
- Монтируем ext2-раздел карты памяти на компе и распаковываем в него содержимое полученного архива:
Доступ к рабочему столу производится таким же способом, как в Ubuntu, за исключением того, что теперь прямо на телефоне придется собрать кучу софта :). Впрочем, можно настроить среду для кросс-компиляции на компе, но это уже тема для отдельной статьи.
Ubuntu на Galaxy Tab 10.1
Подготовка
Для сборки модулей (ядра) и приложений нам потребуется тулчейн, то есть связка из кросс‑компилятора и линковщика, плюс набор стандартных инструментов сборки, которые можно установить из репозитория (пример для Ubuntu):
$ sudo apt- get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 git libtool
Теперь можно установить тулчейн. Их существует как минимум два — стандартный гугловский NDK и тулчейн от Linaro, куда сильнее оптимизирующий код. Различаются они еще и набором target-библиотек — если NDK содержит те библиотеки, которые имеются в Android и, соответственно, могут не подходить для сборки обычных POSIX-совместимых приложений, то Linaro включает минимальный набор стандартных POSIX-библиотек под ARM, для использования которых в гуглооси понадобится статическая линковка.
Добавим путь к тулчейну в ~/.bashrc (и заодно определим отдельные переменные, которые на время компиляции ядра, возможно, и не пригодятся, но в дальнейшем могут ой как понадобиться):
export PATH = $PATH : $ < HOME >/ android- ndk- r10c/ toolchains/ arm- linux- androideabi- 4. 6/ prebuilt/ linux- x86_ 64/ bin: $ < HOME >/linaro-toolchain-4.6/bin
Проверка работы необходимых модулей
Имей в виду, что поддержка loopback-устройств и файловых систем ext2/ext3, необходимых для подключения образа, имеется далеко не во всех ядрах Linux, установленных на смартфонах под управлением Android. Проверить наличие поддержки можно с помощью команды lsmod | grep -e loop -e ext2.
Энтузиасты вышли из этой ситуации, используя простой метод «удаленного» подключения к рабочему столу с помощью любого доступного для Android VNC-клиента. Внутри chroot-окружения запускается X-сервер Xvnc, и все приложения работают под его управлением. Пользователю остается лишь установить VNC-клиент, вбить локальный адрес — и вуаля, на экране появляется полноценный рабочий стол.
Единственное узкое место при использовании удаленного рабочего стола — это производительность. Даже работая локально, VNC не может обеспечить должный ее уровень, которого бы хватило для плавной прокрутки или перемещения окон без лагов. Решить эту проблему пока не удалось, проекты разработки нативного X-сервера, который бы использовал графическую подсистему Android, еще очень сыры и не могут быть использованы для запуска полноценных графических сред. Впрочем, никто не запрещает их использовать; к примеру, X Server от Darkside Technologies Pty Ltd (goo.gl/ap3uD) вполне сгодится для запуска простого софта.
Изначально Linux для Android существовал только в виде образа с уже установленной системой, а также пояснительной инструкции, как этот образ подключить и использовать. Затем появились скрипты, которые автоматизировали процесс подключения образа и запуска Linux, но и они требовали некоторой работы головой. Наконец, в последнее время появились инсталляторы, доступные в Google Play (например, goo.gl/RSA1j), в некоторой степени автоматизирующие процесс запуска дистрибутива, хотя, по сути, это все то же руководство по установке, но интерактивное, с прямыми ссылками на скачивание образов и скриптов.
Complete Linux Installer
Ещё одно приложение для эмуляции установки Debian и других Linux-дистрибутивов. Вам потребуется наличие интернета для скачивания файлов и рут-права.
Практическое занятие
Как я уже говорил, для запуска под управлением Android пригодны только дистрибутивы, портированные на архитектуру ARM. Прежде всего это Ubuntu и Debian, причем первый по понятным причинам пользуется гораздо большим интересом среди роботоводов. Также можно установить Gentoo и несколько специализированных дистрибутивов, например Backtrack. Рассмотрим самый типичный случай, то есть установку Ubuntu по стандартной схеме, без использования каких-либо автоматизированных инсталляторов и прочего.
BackTrack, запущенный на планшете
Другие статьи в выпуске:
Для начала нам нужен образ жесткого диска с установленным дистрибутивом. Его можно создать самому, воспользовавшись эмулятором QEMU, однако в связи с тем, что процедура установки абсолютно стандартна и типична, описывать ее я не буду, а просто направлю тебя по адресу goo.gl/9nvBi. Здесь лежит архив с образом, на который предустановлен Ubuntu 12.04 с графическим окружением LXDE (было бы неразумно запускать Unity/Gnome на телефоне/планшете). Архив следует распаковать и положить файл ubuntu.img на карту памяти.
Далее надо смонтировать образ и сделать chroot в окружение дистрибутива. Для этого нужны права root, прошивка с поддержкой блочных loopback-устройств и установленный busybox (ищем в Маркете по запросу «busybox installer», в CyanogenMod есть по умолчанию). Последовательность действий:
-
Открываем эмулятор терминала в Android (если нет, можно установить из Маркета Terminal Emulator). Либо подключаем смартфон/планшет к компу и получаем доступ к терминалу с помощью adb:
Собственно, на этом установка заканчивается. Теперь можно запускать консольный софт, производить обновление системы, стартовать сетевые сервисы и делать почти все, что можно сделать с обычной десктопной Linux-системой, не забывая, конечно, что некоторый софт, напрямую взаимодействующий с железом и различными специализированными псевдодевайсами, работать не будет. Также не забываем, что виртуальные ФС после завершения работы следует размонтировать.
Теперь нам необходимо установить и запустить X-сервер Xvnc, экспортирующий дисплей и устройства ввода с использованием протокола VNC. TightVNCserver уже есть в представленном образе и даже настроен, но, чтобы ты лучше понял процесс и смог решить возникшие проблемы, я подробно опишу процесс его установки и запуска.
- Обновляемся и устанавливаем TightVNCserver:
- Создаем файл /root/.vnc/xstartup и пишем в него следующее:
Чтобы не заморачиваться с ручным вводом всех команд, можно использовать скрипт ubuntu.sh, расположенный здесь: goo.gl/xSpK4. Просто положи его и образ ubuntu.img в каталог ubuntu на SD-карте и запусти скрипт командой sh ubuntu.sh, а через 5–10 секунд подключись к рабочему столу с помощью AndroidVNC. Имей в виду, что скрипт монтирует образ к каталогу /data/local/mnt.
AndroidVNC — подключаемся к рабочему столу
Альтернативные варианты
Выше я уже упомянул о том, что дистрибутив Linux вполне может быть загружен вместо Android, благодаря чему удастся задействовать Framebuffer для прямого доступа к видеоадаптеру и существенно ускорить работу графического интерфейса. Однако делать это на смартфоне практически бессмысленно — Linux непригоден в качестве основной системы на небольших экранах, к тому же принимать звонки и пользоваться интернетом будет невозможно. А вот на планшете Linux будет выглядеть вполне достойно.
Обычно на устройство, изначально работающее под управлением Android, так называемая нативная версия Linux-дистрибутива устанавливается следующим образом. На внутреннем NAND-накопителе планшета создается дополнительный раздел, на который копируется Linux-дистрибутив. Затем загрузчик U-Boot (он применяется в большинстве планшетов) настраивается таким образом, чтобы использовать этот раздел в качестве загрузочного. В результате планшет будет автоматически загружать Linux-систему после включения питания.
Чтобы оставить возможность загрузки Android, загрузчик U-Boot перенастраивают таким образом, чтобы раздел с Linux-системой был не основным, а выполнял функцию «раздела для восстановления» (Recovery Mode), доступного с помощью включения устройства с зажатой клавишей громкости (тот самый, который используется для перепрошивки устройства и выполнения различных восстановительных операций). Таким образом удается получить устройство с двойной загрузкой: Android по умолчанию и дистрибутив Linux при загрузке в режиме восстановления. Сам Recovery Mode при этом остается доступным только с помощью специальных инструментов.
В случае если NAND-памяти оказывается недостаточно для размещения полноценной Linux-системы, ее части (обычно раздел /usr) выносят в образ или раздел на SD-карте. Кстати, ext2-раздел на карте памяти также можно использовать для установки Linux, запускаемого в chroot-окружении.
Установить нативный Linux-дистрибутив сложнее, чем работающий в chroot-окружении, но это стоит того, если у тебя есть планшет и OTG-кабель, с помощью которого можно подключить клавиатуру и мышь.
Введение
Как всем известно, Android имеет под собой фундамент в виде ядра Linux. Из этого следует, что в теории на смартфоне можно запустить все те приложения, что доступны на десктопном Linux. На практике же все сложнее. Поскольку набор Native-библиотек в Android отличается от такового на десктопе (не говоря уже об архитектуре платформы), приложения требуется компилировать статически. А иногда еще и патчить. Но и в этом случае работоспособность приложения не всегда гарантирована.
Что касается модулей ядра, которые могут быть весьма полезны на смартфоне (поддержка NTFS, например), то здесь все еще интереснее. Во многих ядрах от вендора отключена функция загрузки модулей (начиная с Android 4.3, это фактически требование Google. — Прим. ред.). Поэтому нам придется не только подобрать правильную версию ядра для сборки модулей, но и, возможно, пересобрать само ядро, включив такую поддержку, или просто добавить модуль в сам образ ядра.
Далее в статье мы рассмотрим, как побороть эти проблемы, и попробуем собрать модули Linux-ядра и несколько приложений.
Компиляция модулей и ядра
Для начала определим, поддерживает ли стоковое ядро модули. Для этого смотрим, есть ли на устройстве файл /proc/modules. В зависимости от этого мы поймем, что делать дальше. В случае если модули поддерживаются, мы берем ванильное ядро той же версии (но лучше, конечно, взять от вендора), конфигурируем его, компилируем только модули, закидываем их в /system/lib/modules и загружаем с помощью команды insmod на устройстве. Если же ядро модулей не поддерживает, можно либо взять готовое кастомное ядро с поддержкой модулей (об этом читай в статье «Выбираем кастомное ядро для своего Android-аппарата»), либо собрать свое, включив нужные модули в образ ядра.
Далее настраиваем ядро с помощью стандартной команды make menuconfig, чтобы включить нужные нам модули. Затем собираем:
Конфигурирование ядра для устройства
Другие статьи в выпуске:
Сборка модулей
Для сборки исключительно модулей без самого ядра можно использовать либо команду make modules, либо, если ты включил всего один модуль, следующие команды (вместо net/netfilter подставь каталог собираемого модуля):
После сборки нам нужно все получившиеся файлы скопировать в единый каталог:
Затем, в случае полной компиляции, нужно собрать файлы в ZIP-архив. Не абы какой, а сформированный определенным образом (речь идет о файле обновления для кастомной консоли восстановления. — Прим. ред.). Для этого клонируем с гитхаба шаблон для данного файла:
Поскольку те утилиты, что имеются в этом автоматическом апдейтере, немного устарели (во всяком случае, на моем планшете они завершались с сегфолтом), нужно их заменить рабочими, которые берем на d-h.st/RgI, и, распаковав, заменяем ими файлы с теми же названиями в каталоге AnyKernel/kernel/. Кроме того, нужно изменить скрипт для автоапдейтера, находящийся в AnyKernel/META-INF/com/google/android/updater-script. В конечном итоге должно получиться примерно следующее:
run_ program ( "/ sbin/ busybox" , "dd" , "if=/ tmp/ newboot. img" , "of=/ dev/ block/ mmcblk0p9" ) ;
Путь /dev/block/mmcblk0p9 здесь — та часть, которую необходимо изменить. Это раздел boot, и почти на всех устройствах он будет представлен разными файлами. Чтобы узнать имя файла на своем устройстве, выполни следующую команду:
После правки запаковываем каталог:
Затем кидаем файл на устройство и устанавливаем его с помощью кастомного рекавери (TWRP или CWM).
После сборки и установки ядра должна получиться примерно такая картинка
На планшете с установленным Linux
После установки новой операционки возникает потребность в приложениях. Если вам удалось подружить свой планшет с Debian, в меню присутствует магазин приложений. Кроме того, дистрибутив поставляется с определённым набором встроенных приложений и большинство нужных программ уже есть. Тем не менее, некоторые приходится доустанавливать уже в процессе. Это можно сделать несколькими способами: через магазин приложений и с помощью deb-пакетов.
В первом случае нужно войти в программу на планшете, ввести в поисковой строке название нужного софта и нажать «Установить». Система автоматически установит выбранный пакет. Во втором уже придётся найти пакет программы с расширением .deb и установить, как обычное приложение либо через терминал (аналог командной строки). Единственный минус такого способа в том, что нужно будет докачивать нужные зависимости.
Что дальше
Linux-дистрибутив, установленный рядом с оригинальной Android-системой, может стать очень удобным рабочим инструментом, однако на данный момент «Linux внутри Android» считается скорее игрушкой и способом покрасоваться перед друзьями, нежели серьезным решением. Уверен, что в скором времени, когда для Android появится полноценная реализация графического сервера Wayland, ситуация начнет меняться и мы увидим дистрибутивы с адаптированным для небольших экранов интерфейсом, а также полноценные Linux-приложения, распространяемые в форме обычных APK-пакетов. Также не стоит забывать о проекте «Ubuntu for Android» — в его рамках идет работа над официальным портом Ubuntu для Android, который позволит использовать смартфон в качестве переносного системника, подключаемого к любому монитору.
goo.gl/UGDe3 — описание процесса подготовки образа Ubuntu собственными силами (на английском).
Несмотря на обилие операционных систем, наиболее популярными и общепринятыми являются несколько. Если для компьютера чаще всего пользователи выбирают между Windows или Mac OS, то для мобильных устройств это Android или iOS. Тем не менее, во всём мире растёт число приверженцев свободно распространяемой операционки Linux. Если в компьютерных кругах она более-менее известна, то планшетов на её основе совсем мало, буквально несколько моделей.
Процесс инсталляции отличается в зависимости от операционной системы планшетного ПК
Дистрибутивов Linux существует большое количество, но одним из самых известных, при этом очень стабильным, является Debian. Если его инсталляция на компьютер относительно несложная, то с планшетом придётся повозиться. Предлагаем рассмотреть пошагово, как производится установка Debian на планшет на базе различных операционных систем. Кроме того, рассмотрим, как правильно устанавливать deb-пакет в установленном Debian или на iOS с джейлбрейком.
Ngrep
А это крайне полезная утилита, позволяющая отлавливать пакеты с заданным паттерном (может быть нужно, например, для отладки RESTful-приложений). Для ее сборки потребуется собрать еще и libpcap. Как обычно, создаем каталог, куда и скачиваем libpcap, распаковываем его и собираем:
$ . / configure --host = arm- linux --disable-shared --with-pcap = linux --disable-dbus --prefix = $SYSROOT_ADDITIONS
Скачиваем сам ngrep, распаковываем, собираем:
$ . / configure --enable-static --disable-dropprivs --host = arm- linux --with-pcap-includes = $ < SYSROOT_ADDITIONS >/include/pcap
Разберем опции обоих configure. В случае с libpcap мы отключили поддержку DBUS по понятной причине отсутствия его в Android и указали тип захвата пакетов (поскольку компилируем мы в конечном итоге под Linux, то и тип захвата ставим соответствующий). Для ngrep же мы указали путь к заголовочным файлам libpcap и отключили понижение привилегий по причине отсутствия файла /etc/passwd в Android, куда эта функциональность смотрит.
Перехватываем пакеты, содержащие слово google, используя ngrep
Запуск и установка deb-пакетов
Что представляет собой ядро мобильного устройства?
Ядро операционной системы является основой программного обеспечения, которое управляет аппаратной частью устройства. От него зависят основные параметры любого гаджета. Следует заметить, что операционная система Андроид состоит из трёх взаимосвязанных компонентов — ядра Linux, вертикальной машины Dalvik и разных низкоуровневых сервисов и библиотек. Если речь идёт о кастомной прошивке, то затрагиваются только два компонента, которые позволяют добавлять новые системные сервисы, оптимизировать существующие параметры и изменять графическую оболочку.
Желающие установить ядро на Андроид должны понимать, что существует различие между понятиями кастомное ядро и кастомная прошивка. Последняя является неофициальной версией программного обеспечения. Кастомная прошивка разработана командой специалистов под конкретные устройства. Кастомное ядро основывается на ядре Linux, представляя собой его неофициальную версию. Часто кастомное ядро идёт в комплекте с прошивкой. Но его можно установить отдельно после смены прошивки. По сути, оно не заменяет родное ядро мобильного устройства, что является конечной целью такой операции.
Прошивка ядра Android производится в основном, чтобы увеличить время работы устройства на несколько часов при помощи настроек параметров энергопотребления. Пожалуй, это основная причина, по которой пользователи проводят сложные преобразования программного обеспечения своих гаджетов. Прошивка позволит изменить частоту процессора и видеочипа без последствий для смартфона или планшета. Продвинутые юзеры таким образом настраивают работу экрана, меняя его цветопередачу, чувствительность. Прошивка ядра позволяет усовершенствовать звук устройства, обновить драйвера и внедрить поддержку нестандартных внешних гаджетов.
Перед тем как прошивать ядро, мы рекомендуем убедиться в том, что вы выбрали удачную версию, которая создана опытными разработчиками. Кроме этого, важно удостовериться, что она подходит к вашей версии прошивки Андроид. Желательно ознакомиться с отзывами людей, которые успели установить подходящую версию ядра на свой мобильный телефон. Отзывы могут содержать важную информацию о проблемах, которые могут возникнуть на этапе прошивки либо дальнейшего функционирования устройства.
На iPad с джейлбрейком
Ещё одна область, в которой вам может понадобиться установить deb-пакет, это установка твиков, или настроек, на iPad с джейлбрейком. После процедуры взлома появится магазин приложений Cydia, через который распространяются программы и настройки для взломанных аппаратов (здесь подробно описывается, как им пользоваться). Но иногда под рукой нет быстрого интернета или же нужный репозиторий попросту не подключён, а нужная настройка распространяется через какой-то сайт в виде deb-пакетов.
Чтобы установить её таким способом, вам понадобится:
- Компьютер с установленным файловым менеджером iFunBox либо iTools.
- Устройство iOS с джейлбрейком.
- Соединительный кабель.
Процесс установки пакетов deb выполняется в несколько этапов:
- Скачайте на компьютер либо ноутбук deb-пакет.
- Соедините кабелем девайс с ПК.
- С помощью файлового менеджера скопируйте пакет deb в папку /var/root/Media/Cydia/AutoInstall.
- Перезагрузите девайс.
Можно обойтись и без компьютера, если на взломанный iPad установлен файловый менеджер iFile. При скачивании пакетов система автоматически предложит установить твик. Вам потребуется лишь перезагрузиться.
Сборка приложений
Модули ядра позволяют добавлять функциональность исключительно низкого уровня, которую в общем случае нельзя использовать напрямую. Для добавления же функциональности, которую можно использовать напрямую, нужно собирать программы, чем мы сейчас и займемся, — попробуем собрать несколько приложений. Перед сборкой почти всех приложений нужно экспортировать ряд переменных:
И лишь затем можно приступать.
Bash собирать с помощью тулчейна Linaro очень легко — скачиваем исходники c официального FTP и распаковываем:
Выполняем скрипт configure и собираем:
$ . / configure --host = arm- linux --enable-static-link --without-bash-malloc --disable-rpath --disable-nls
После сборки появится файл bash, который мы и копируем на устройство в /system/xbin.
Bash, запущенный под Android
Стоит дать комментарии, почему bash нужно компилировать с помощью тулчейна Linaro. В Bionic, стандартной реализации библиотеки libc в Android, отсутствуют некоторые POSIX-совместимые функции, используемые bash (такие, например, как mkfifo() или wctomb()). Соответственно, собрать bash с использованием этой библиотеки без танцев с бубном не выйдет. В Linaro же, с другой стороны, используется стандартная POSIX-совместимая библиотека glibc. Поскольку мы собираем bash статически, нам все равно, что используется в Android, — главное, чтобы версия glibc, с которой мы собираем, подошла к ядру. Впрочем, сегодня обратное маловероятно.
Lshw — удобная консольная утилита, позволяющая быстро собрать информацию о доступном железе. Компилировать ее (опять же используя Linaro) достаточно просто. Скачиваем последнюю версию, распаковываем и заменяем в файлах src/Makefile и src/core/Makefile компилятор C++ на компилятор от Linaro (переменной CXX нужно присвоить значение arm-unknown-linux-gnueabi-g++), добавив также опцию --static в CXXFLAGS. Затем собираем обычным образом.
Это достаточно удобный консольный менеджер процессов для Linux. Для вывода информации он использует библиотеку ncurses, так что для его компиляции потребуется чуть больше времени. Создаем каталог htop, переходим в него и скачиваем ncurses:
Устанавливаем переменную $SYSROOT_ADDITIONS, запускаем configure с нужными параметрами и собираем:
$ . / configure --with-normal --without-shared --without-cxx-binding --enable-root-environ --disable-widec --disable-GPM --without-ada --without-tests --host = arm- linux --prefix = $SYSROOT_ADDITIONS
Поскольку нам нет смысла включать поддержку юникода и мыши и мы не собираемся делать эту библиотеку динамической, отключаем эти опции (а также отключаем поддержку языка Ada).
Скачиваем и распаковываем сам htop, предварительно перейдя на уровень выше:
Вновь переопределяем переменные окружения для сборки:
Конфигурируем и собираем:
Все бы хорошо, но после попытки запуска на устройстве вываливается ошибка «Error opening terminal: screen». Лечится это просто — достаем откуда‑нибудь каталог terminfo (я его выдернул из Terminal IDE, просто потому, что он оказался под рукой), копируем в /system/etc и выполняем в терминале на гаджете следующую команду:
После этого htop запустится без заморочек.
Htop, запущенный под Android
Tmux — менеджер терминалов, более продвинутая альтернатива известного всем админам screen, созданная разработчиками OpenBSD. В случае с Android его удобно использовать для работы с устройством через adb shell или SSH (например, ходить на TV Box или HDMI-стик под управлением Android. — Прим. ред.).
Для компиляции tmux нам понадобится все та же ncurses — ее можно взять из предыдущей сборки, скопировав каталог rootdir. Помимо ncurses, потребуется библиотека libevent. Создаем каталог tmux, устанавливаем переменную $SYSROOT_ADDITIONS и скачиваем libevent и сам tmux:
$ . / configure --host = arm- linux --disable-shared --disable-openssl --disable-samples -prefix = $SYSROOT_ADDITIONS
Подготавливаемся к сборке tmux:
И наконец, собираем сам tmux:
После сборки и заливки исполняемого файла перед запуском tmux, помимо переменной TERMINFO, нужно определить переменную TMPDIR — лично я использовал /data/local/tmp.
Стоит заметить, что tmux может работать только от рута, потому что права доступа не позволяют писать в вышеуказанную папку кому попало.
Сеанс SSH-соединения с Android. Для разделения терминала используется tmux. В левой части можно увидеть вывод lshw
Linux Deploy
Таким способом вы практически полноценно сможете пользоваться Linux. Но опять же, стопроцентной гарантии успеха никто дать не сможет. Всё на ваш страх и риск.
Как устанавливать и что для этого нужно
Итак, вы всё же решили установить на свой планшет Linux. Что вам для этого понадобится:
- само устройство (ядро прошивки должно поддерживать loop-устройства, тактовая частота процессора не меньше 1 ГГц — все эти данные легко найти или в документации к аппарату, или в сети);
- полученные на нём root-права;
- около 4 гигабайт свободного объёма памяти;
- поддержка файловой системы Ext2.
Нужно отметить, что большинство планшетов соответствуют этим характеристикам, так что проблем у вас возникнуть не должно.
После того как вы убедились, что ваше устройство подходит по всем требованиям, необходимо скачать образ системы и скрипт установки. Их существует довольно много, мы рекомендуем использовать Ubuntu Installer как один из самых простых и интуитивно понятных. Да и сама Ubuntu довольно дружелюбна даже к совсем неопытным пользователям.
Ubuntu Installer
Образов Ubuntu для планшетов существует две версии — ознакомительная, с минимальным количеством предустановленного ПО, а также максимальная, ориентированная на повседневное использование (с уже внедрёнными офисным пакетом, торрент-клиентом, почтовой программой, средствами разработки для нескольких популярных языков программирования и т. д.).
Кроме образа и скрипта, вам ещё понадобятся эмулятор терминала для Android и VNC Viewer. Также не забываем включить режим отладки в настройках системы.
Отладка по USB
Алгоритм очень простой — запускаем эмулятор терминала и вводим три команды:
После чего скрипт запросит у вас разрешение экрана устройства (например, 1024х768 или другое) и, если вы скачали максимальный образ, графическую оболочку, в которой вы желаете работать. У вас есть выбор между Gnome и LXDE, на мобильных устройствах лучше выбирать второй вариант.
Останется ответить ещё на пару запросов: логин/пароль (ubuntu/ubuntu), IP-адрес (localhost) и порт (5900). Готово, перед вами полноценный Ubuntu с оболочкой LXDE.
Ubuntu с оболочкой LXDE
Плюсом этого способа установки является то, что он требует наименьшее количество действий от пользователя и не ставит Linux вместо Android, а имитирует его. Конечно, существуют способы поставить Linux второй системой или вообще заменить «зелёного робота», но для старта и ознакомления с открывающимися возможностями, вышеописанного способа более, чем достаточно.
Робот и пингвин в одном гаджете!
Теперь вы знаете, как установить Linux на планшет и надеемся, что это знание принесёт вам пользу. Среда Linux располагает к познанию — экспериментируйте и, кто знает, может быть следующий скрипт для установки вы напишете сами?
Видео о том, как установить Linux на планшет:
Всем хороши Android-девайсы, но порой им крайне не хватает возможностей и утилит, имеющихся в настольной Linux. Отдельные инструменты, такие как Terminal IDE, частично выручают, но некоторого нужного функционала в них нет. Как же исправить ситуацию?
Заключение
В статье были описаны два (а если считать компиляцию ядра с модулями, то три) метода расширения функциональности на Android. Подведем итоги.
Компиляция ядра и модулей имеет смысл только в тех случаях, когда тебе нужна низкоуровневая функциональность — будь то поддержка ФС или, допустим, модуль iptables. В современных стоковых ядрах поддержка загрузки модулей чаще всего отключена, так что для добавления функциональности всяко потребуется компиляция всего ядра.
В случае с компиляцией небольших POSIX-приложений можно попытаться использовать гугловский NDK, идущий с Bionic и практически несовместимый с POSIX, а можно использовать сторонний тулчейн для архитектуры ARM, в котором, как правило, есть библиотека glibc, и компилировать приложения статически. Однако следует помнить, что статически слинкованное приложение весит достаточно много, таким образом, нелишним будет еще раз подчеркнуть, что этот метод годится лишь для небольших приложений.
Для запуска крупных приложений можно использовать Linux Deploy, позволяющий развернуть на Android полноценную userland-часть популярных дистрибутивов. Однако и у него есть недостатки. Во‑первых, он изрядно кушает батарею, а во‑вторых, размер образа с данной userland-частью не может быть больше 4 Гб, так что, если раскатал губу на кучу приложений, закатай ее обратно.
В целом же запуск POSIX-приложений в Android вполне возможен — что и было показано в статье. А уж каким способом ты будешь что‑то делать, ты волен выбирать сам. Stay freedom.
Библиотеки, портированные на Android
Несмотря на то что Android не является в полной мере POSIX-совместимой ОС, под него все же были портированы некоторые из библиотек, доступных под десктопной Linux. Посмотрим, что это за библиотеки:
- SDL — удобная «обертка» вокруг низкоуровневых мультимедиафункций; используется в основном для разработки игр;
- FFmpeg — конвертация большинства аудио- и видеоформатов;
- Qt — начиная с пятой версии, Qt доступна и под Android;
- Unity — игровой движок;
- Ogre — «обертка» вокруг OpenGL для работы с 3D-графикой.
В общем, с точки зрения портирования приложений выбрать есть из чего.
А зачем он нужен?
Для начала, давайте разберёмся, зачем вообще вам может понадобится Linux на мобильном аппарате. Обычному среднестатистическому пользователю, вероятно, это не сильно нужно, но ведь есть и специалисты, например, разработчики, администраторы и другие. Конечно, в качестве основного рабочего инструмента это довольно спорное решение. Но если рассматривать его как мобильного помощника, который выручит в дороге или где-то вдали от основного компьютера, право на жизнь у этого варианта есть.
Зачем на планшете Linux?
Да, и обычному пользователю Linux тоже может пригодиться. Всегда удобнее иметь под рукой полнофункциональные версии программного обеспечения, например, офисные приложения, почтовый клиент, клиент для торрент-сетей и множество других. К тому же, не будем забывать, что это практически та же операционная система, что и на компьютере, следовательно, всё многообразие софта под Linux, в большинстве случаев, без проблем установится и будет работать и на планшете.
Необходимые условия для полной установки
- Ядро планшета должно быть совместимым с Linux. Стандартное таких возможностей не предоставляет, поэтому нужно найти и установить пользовательское.
- Портированный на мобильную архитектуру архив с операционной системой.
- Загрузчик операционной системы.
- Карта памяти.
- Компьютер или ноутбук с установленным Linux.
Универсального способа не существует, каждый случай рассматривается отдельно и может отличаться на отдельно взятом устройстве. Вдобавок даже не рассчитывайте на то, что, не имея навыков программирования, у вас получится без головной боли установить Debian вместо Android. Приводим лишь только примерный алгоритм.
- Находим и качаем необходимые файлы и архивы.
- С помощью инструмента «Дисковая утилита» на ПК с Linux отформатируйте карту памяти и смонтируйте необходимые разделы. Обязательно должны присутствовать как минимум два раздела: для загрузчика и для работы самой операционной системы.
- Получите рут-права на устройство и прошейте кастомное ядро с поддержкой Linux.
- Выполните установку Debian на планшет.
Более подробную информацию ищите на специализированных форумах в ветках, посвящённым конкретной модели планшета. Предупреждаем, если вы вообще не смыслите в программировании, лучше не рискуйте!
Установка Debian на Android-планшет
Если с установкой на Windows-устройство особых проблем возникать не должно, то с Android всё далеко не так просто. Можно долго доказывать, что и Debian, и Android выполнены на основе ядра Linux, но на самом деле они практически несовместимы. Дело в том, что в Андроид-планшетах в подавляющем большинстве случаев применяются процессоры на ARM-архитектуре. И даже при условии, что планшет имеет процессор Intel (такие часто устанавливает, например, Asus), другие компоненты не имеют универсальной совместимости с другими системами. Возможно, знатоки укажут на официальный порт Debian для архитектуры arm64, но он ещё в процессе разработки и является нестабильным. Итак, что нужно, чтобы установить Debian на Android?
Установка Debian на Windows-планшет
Несмотря на то что ядра Linux и Windows существенно отличаются, большинство планшетов, работающих на операционной системе Windows 10, могут без проблем использоваться для работы с обеими системами. Если производитель не оснащает свои устройства какими-то экзотическими комплектующими, то проблем с поддержкой драйверов возникать не должно. Процессоры используются на базе платформы Intel, а это является главным условием, ведь ядро Linux в первую очередь компилируется именно для этой платформы.
Чтобы установить на Windows-планшет операционную систему Debian, он должен соответствовать таким требованиям:
- Иметь достаточную мощность процессора и объём оперативной памяти.
- Иметь возможность выбора загрузочного устройства в настройках BIOS или UEFI (некоторые производители блокируют такую возможность).
- Иметь подключённую через USB внешнюю клавиатуру.
Если основные требования выполнены, приступаем к установке.
- Качаем установочные образ Debian с официального сайта. Он распространяется в виде образа диска формата .iso.
- С помощью приложения Rufus создаём загрузочную флешку. Выбираем наш .iso файл и нажимаем «Старт».
- Втыкаем флешку в USB-разъём планшета и входим в режим BIOS. Для этого должна быть подключена клавиатура. Выбор приоритета загружаемых файлов происходит в разделе Boot — Boot device priority или, как вариант, Hard Disc Drives priority (всё из-за того, что в некоторых случаях флешка определяется как жёсткий диск).
- После загрузки меню установки выбираем свой вариант и версию системы, например, «Графическая установка 64 бита».
- Переходим по всем этапам, предлагаемым установщиком, выбираем нужные нам пункты, вводим нужные данные. В конце выбираем интересующее нас графическое окружение.
- Система автоматически загружает недостающие компоненты и группы пакетов из интернета.
- После завершения установки загрузите планшет и наслаждайтесь установленным Debian.
Зачем?
На первый взгляд может показаться странным, что кто-то пытается запустить на мобильном устройстве операционную систему, в принципе не предназначенную для работы с экраном небольших размеров и без достаточно точного манипулятора (мышь) и клавиатуры. Однако не стоит делать поспешных выводов. Дистрибутив Linux может дать владельцу смартфона достаточно много преимуществ, среди которых набор старых проверенных инструментов, таких как утилиты командной строки, продвинутые редакторы, FTP- и SSH-серверы, сетевые инструменты и средства разработки приложений. Запустив Linux без графической оболочки на смартфоне с хардварной клавиатурой (Motorola Droid, к примеру), можно достаточно комфортно всем этим пользоваться прямо на ходу без необходимости покидать сам Android. Все инструменты доступны в любой момент, а смартфон продолжает оставаться смартфоном, позволяя принимать звонки и слушать интернет-радио.
Второй аргумент за установку Linux на смартфоне — это возможность использовать его в качестве переносной рабочей станции, которую можно подключить к любому ПК и тут же получить доступ к терминалу с помощью SSH/Telnet-клиента либо клиента VNC/RDesktop. Это по определению лучше, чем флешки с установленным Linux, так как нет необходимости, во-первых, перезагружать машину, а во-вторых, гонять туда-сюда данные; результаты твоей работы будут доступны сразу после того, как отключишь смартфон от компа.
Наконец, наибольший выигрыш Linux дает на планшетах, экран которых позволяет более-менее сносно работать в графической среде, а возможность подключить мышь и клавиатуру через OTG-кабель так и вообще дает шанс превратить планшет в полноценную рабочую станцию. При этом никакой особой разницы между установкой дистрибутива Linux на планшет и смартфон нет.
Перенести Linux на Android действительно просто, и главную роль здесь играет ядро Linux. Любой Linux-дистрибутив представляет собой набор приложений и библиотек, работающих поверх ядра Linux, а так как Android сам основан на почти неизмененном ядре Linux, эти приложения и библиотеки можно без каких-либо проблем запустить внутри среды Android. Достаточно лишь подыскать дистрибутив, для которого существует порт на платформу ARM (не забываем, что 99% всех Android-девайсов работают на ARM), установить его с помощью ARM-эмулятора на виртуальный жесткий диск (то есть в файл), скинуть этот файл на SD-карту устройства, открыть терминал, смонтировать образ в качестве loopback-устройства и сделать chroot внутрь. Все! Это так же просто, как запуск FTP-сервера в chroot-окружении — простой и проверенный десятилетиями метод.
Единственный камень преткновения, когда ты решаешь запустить дистрибутив Linux внутри Android, — графическая среда. В то время как с доступом к консоли никаких трудностей не возникает благодаря наличию полноценного эмулятора терминала, с графическими приложениями начинаются проблемы — нативного X-сервера для Android нет, а запустить обычный X-сервер внутри самого дистрибутива невозможно из-за коренных отличий в архитектуре графической подсистемы зеленого робота. Несмотря на то что в основе она использует стандартный Linux Framebuffer, поверх которого можно запустить X-сервер, эксклюзивное право его использования изначально принадлежит более высокоуровневым библиотекам Android, поэтому остается либо загружать Linux-дистрибутив вместо Android (что совершенно непрактично), либо придумывать обходные пути.
Linux Deploy
Компиляция программ может занять немало времени, да и не всякое приложение можно с легкостью собрать (например, текстовый torrent-клиент rtorrent потребует сборку libtorrent, а уж эта библиотека, в свою очередь, потянет за собой Boost). И если для пары‑тройки приложений это не столь критично, то в случае сборки большего количества трудозатраты становятся слишком велики. Да и сами приложения в случае статической компоновки могут раздуваться до невообразимых размеров. Однако есть решение и для этой ситуации — Linux Deploy, который с легкостью можно найти в Google Play.
Поскольку Android построен на базе ядра Linux, а изменения в нем не настолько сильны, чтобы мешать запуску обычных POSIX-приложений (что и было продемонстрировано выше), существует возможность развертывания chroot-окружения (с пробросом соответствующих псевдофайловых систем) и установки в нем userland-части дистрибутивов, поддерживающих архитектуру ARM. Приложение Linux Deploy делает именно это, создавая образ и монтируя его как loop-устройство.
Поддерживаются следующие дистрибутивы:
- Ubuntu;
- OpenSUSE;
- Fedora;
- Arch Linux;
- Gentoo;
- и, наконец, Kali Linux (его наличие, несомненно, обрадует пентестеров).
После развертывания и запуска системы в нее необходимо каким‑то образом войти. Для этого существует два метода: по SSH и через VNC. При наличии SSH-сервера в самом Android в Linux Deploy нужно либо его отключить, либо переопределить порт. А если использовать VNC, необходимо доустановить в Android VNC-клиент (рекомендую bVNC). Стандартные имя пользователя / пароль — android/changeme соответственно.
Запуск окружения Ubuntu в Linux Deploy Ubuntu в Linux Deploy по виду неотличим от десктопного
В данном контейнере можно производить практически те же действия, что и в обычном настольном дистрибутиве Linux, — со скидкой на поддерживаемую ядром функциональность. Замечу, что контейнер не изолирован от основной системы, и запуск служб в некоторых дистрибутивах не поддерживается по причине использования в них современных систем инициализации. Также стоит помнить, что приложения в контейнере нативные, — это изрядно кушает батарею.
Прошивка с помощью ClockworkMod Recovery
ClockworkMod Recovery (либо сокращённо CWM) — это система восстановления, которая используется вместо заводского оригинального Recovery. CWM позволяет установить новую прошивку на мобильное устройство, прошить ядро, сделать резервную копию файлов и восстановить оболочку. Такая система умеет работать с файлами обновления прошивок, имеющих zip-формат. ClockworkMod устанавливается во внутреннюю память устройства, заменяя собой заводское Recovery. Чтобы запустить CWM, необходимо знать комбинацию клавиш, которая подходит для вашего гаджета. В большинстве случаев это комбинация кнопок уменьшения звука и включения питания, которые следует нажать во время загрузки устройства.
Для прошивки ядра следует скачать архив с расширением zip. В нём обязательно должна находиться папка META-INF. Далее существует два варианта. В первом случае нужно указать файл прошивки. Второй вариант предполагает помещение файла прошивки в папку /sdcard. После этого следует активировать ClockworkMod Recovery, найти там функцию Apply update from sdcard и указать необходимый файл.
Следует отметить, что меню ClockworkMod Recovery является удобным и понятным для большинства пользователей. Кроме такой системы восстановления для прошивки, можно использовать TWRP Recovery. Этот инструмент является удобным и популярным среди пользователей Андроид. Главное — выбрать правильный файл прошивки.
Прошивка ядра Андроид — процедура, к которой мы не рекомендуем прибегать, если вас полностью устраивает работа гаджета. Такие действия обусловлены желанием повысить производительность мобильного телефона или планшета. Продвинутые юзеры получают возможность установки параметров на более низком уровне. Но без определённых знаний и объективных причин лучше не изменять программную часть мобильного устройства, поскольку это связано с риском и сбоями в его работе.
Многие современные пользователи компьютеров или мобильных устройств хотя бы краем уха слышали о такой операционной системе, как Linux. Но немногие знают, что популярная мобильная ОС Android также основана на базе этой знаменитой своей безопасностью системе. Естественно, у пытливых умов родился вопрос — а можно ли установить Linux на планшет? Или на смартфон? Вы удивитесь, но можно.
Нативная установка
Запустив Ubuntu с использованием VNC-сервера, ты заметишь неторопливость его работы, которая связана с издержками протокола VNC на передачу картинки «по сети». Чтобы избежать этой проблемы, можно установить Ubuntu в качестве основной системы рядом с Android, так, чтобы она смогла использовать видеоадаптер напрямую. К сожалению, универсального способа сделать это не существует. Каждое устройство по-своему уникально, включая различные таблицы разделов NAND-памяти, на которую производится установка, различные устройства и драйверы для их работы.
Нативный X-сервер для Android
К счастью, процесс установки нативной версии дистрибутива хорошо описан для многих устройств в русскоязычных форумах, поэтому найти инструкцию будет несложно. Стоит, тем не менее, сразу обратить внимание на несколько особенностей такого типа установки:
- Отдельный или основной NAND-раздел. Linux-дистрибутив может быть установлен как в заблаговременно созданный раздел в NAND-памяти, так и в основной загрузочный раздел. В первом случае разработчик прошивки обычно оставляет возможность загрузки Android с помощью специального скрипта либо через загрузку Linux-дистрибутива в режиме восстановления, во втором он будет установлен вместо Android и для возвращения возможности загрузки робота придется заново перепрошивать устройство.
- Возможность двойной загрузки. Если Linux-дистрибутив будет установлен на отдельный раздел, разработчик может оставить возможность загрузки Android. Однако стоит сразу обратить внимание, как эта загрузка происходит: с помощью режима восстановления либо скрипта, запускаемого с обычного компа. Все-таки второй способ будет неудобен в дороге.
- Поддержка оборудования. Оригинальное Linux-ядро Android-прошивки уже включает в себя все необходимые драйверы, которые могут понадобиться для работы полноценной Linux-системы, однако далеко не во всех Linux-прошивках все заведется само собой. Часто возникают проблемы с Wi-Fi-адаптером и сенсорным экраном, который неадекватно реагирует на прикосновения. Поэтому перед установкой прошивки стоит внимательно прочитать о возможных осложнениях.
В любом случае будь готов к тому, что во время установки Linux-дистрибутива все твои данные будут уничтожены. Без этого никак.
Запуск Ubuntu с помощью стартового скрипта
Читайте также: