Ubuntu ядро для android

Сборка ядра для Android-устройств на примере Solid Kernel для LG e975

Подготовка

Что нам потребуется
  • 64 битная система Linux (я использую Ubuntu 14.04)
  • Рутованый телефон/планшет/иной девайс на Android’е с процессором QUALCOMM
Подготовка системы

Установим необходимые пакеты. Набирем в терминале:

Нажимаем Enter и пишем далее:

Качаем исходники

Идем на GitHub и скачиваем исходники (исходники для каждого девайса разные, поэтому ссылок давать не буду) архивом (в правой части экрана должна находиться кнопочка «Download ZIP»). Распаковываем архив в любое удобное место (у меня это папка /home/system-exe/Solid).

Качаем тулчейн. Переходим по ссылке, отмечаем галочкой нужный тулчейн (для меня это cortex-a15, зависит от ядер процессора) и нажимаем «скачать». Распаковываем скачанный архив в папку /home/%USERNAME%/Toolchain/Linaro-4.9.3 (вместо %USERNAME% подставляем имя учетки).

Выдираем файл конфигурации из девайса

Идем по пути /proc (на телефоне) и копируем файл config.gz на комп, распаковываем и получаем файл config, которые переименовываем по шаблону %устройство%_defconfig (у меня это e975_defconfig). Кладем получившийся файл по пути /home/%USERNAME%/Solid/arch/arm/configs

С подготовкой окончили.

Сборка ядра

Заходим в терминал и набираем команду:

(таким образом мы перешли в папку с нашими исходниками)

(у меня надо так: make e975_defconfig)

После завершения пишем:

(здесь правим нужные значения конфигурации. Тут все предельно просто, думаю разберетесь.)

После завершения начинаем сборку:

Параметр -j8 нужен только если у вас многоядерный процессор. Цифра 8 определяет количество ядер(потоков, в случае с Intel i3, i5, i7 процессорами). К примеру у меня — Intel i7, он четырехядерный, но поддерживает два потока на каждое ядро, поэтому 2 * 4 = 8.

В конце должна появиться надпись «zImage is ready».

Идем по пути /home/%USERNAME%/Solid/arch/arm/boot и видим там наше ядро — zImage.

Тестирование

Теперь нам осталось заставить работать этот самый zImage на нашем устройстве.

А вот теперь трижды подумайте надо ли вам это? Уверены ли вы в своих силах и в том, что правильно собрали ядро?

Подумали? Уверены? Точно уверены? Тогда продолжаем.

Извлекаем boot.img из нашего девайса. Набираем в терминале на телефоне:

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Переносим boot.img, который лежит на карте памяти, на комп. Распаковываем его (в интернете есть множество описаний распаковки и запаковки boot.img), меняем оригинальный zImage на наш и собираем boot.img.

Закидываем наш собранный образ на карту памяти под именем new_boot.img
В терминале набираем:

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Перезагружаем девайс. Если телефон загрузился, то все сделано правильно, если — нет, то читаем инструкцию внимательней и пробуем снова.

Для отката в случае неудачи используем наш оригинальный boot.img, который надо было оставить на карте памяти. Для отката в терминале набираем:

Вместо… подставляем путь до папки by-name (у меня надо подставить msm_sdcc.1).

Источник

Сборка Android под Ubuntu Linux

Эта заметка является косвенным продолжением моей первой публикации Сборка Android под Mac OS X и имеет аналогичную цель — решение проблем сборки относительно старых версий Android 4.0.x.

Коротко вводная. В одном из проектов я занимаюсь доработками оригинального кода Android для создания прошивки под специфичную железку. Версия для сборки была выбрана уже относительно старая — AOSP 4.0.4, но на ней базируется стабильная ветка кода от производителя железки. Первоначально я работал на MacOS, но для этого проекта решил переключиться на Linux для удобства разработки. Итак волею судеб я перешел с MacOS на более менее свежий Ubuntu Linux 12.04.3, рекомендованную на данный момент версию Linux для сборки Android.

Основной сложностью в новом окружении осталась старая проблема — старые версии AOSP не отслеживаются и новые правки в сборочную систему не вносятся. Поэтому если сборка master’а особой сложности не представляет, то сборка предыдущих версий Android под более свежие версии Ubuntu требует исправления ряда проблем.

Читайте также:  Android usb driver unity

В моем случае рабочее окружение выглядит так:

  • AOSP 4.0.4 r1.1
  • Ubuntu Linux 12.04.3 x64
  • GNU Make 3.81 и другие рекомендованные утилиты

Все основные моменты и сложности сборки AOSP хорошо описаны в официальной документации. Как и для MacOS, в случае с Ubuntu, для сборки AOSP 4.0.x версий предлагается использовать более старые версии базовой ОС. В частности в разделе «Known Issues» для решения проблемы «Build error with 4.0.x and earlier on Ubuntu 11.10» предлагается использовать старый релиз Ubuntu 10.04, что не очень хочется делать, если предполагается заниматься в ОС и другими задачами, кроме сборки AOSP.

Решение

Установка производилась на практически чистую Ubuntu, за исключением нескольких прикладных программ. Первичная настройка окружения производилась в соответствии с официальным описанием.

Ниже я привожу тексты ошибок из консоли и методы исправления. В зависимости от версии AOSP и вашего окружения они могут проявляться все или частично. Большинство решений можно найти в интернете, я привожу лишь краткое описание необходимых действий.

Ошибка 0

Или вовсе и не ошибка, а необходимость установить для сборки проприетарные пакеты Oracle Java, которые с некоторых пор не входят в поставку Ubuntu.

Исправление

Для сборки Android нам необходим JDK 6ой версии, соответственно для этого прописываемыем репозиторий Oracle с нужными пакетами и устанавливаем требуемый:

Аналогично можно установить последний JDK 7ой версии, если это требуется для других целей:

Ошибка 1

При установке необходимых пакетов не устанавливается пакет libgl1-mesa-glx:i386 в котором паходится нужная нам библиоткеа libGL x86. Не устанавливается со следующей причиной:

Вместе с ним для установки указан пакет libgl1-mesa-dev в котором содержится libGL, но x64 версия, что нам не подходит для сборки AOSP.

Если попробовать сборку с libgl1-mesa-dev для x64 архитектуры, то при линковке получим ошибку:

Исправление

Вместо пакетов libgl1-mesa-glx:i386 и libgl1-mesa-dev установить пакет libgl1-mesa-dev:i386:

Более подробное описание содержимого пакета можно найти в описании Ubuntu, видно что он содержит и нужный libgl1-mesa-glx.

Также при установке пакета будет создан и симлинк в директории /usr/lib/i386-linux-gnu/, поэтому дополнительно его создавать не нужно, как указано в руководстве командой:

Ошибка 2

Используемая в системе версия компилятора gcc (4.6.x) имеет проблему с переопределением символа _FORTIFY_SOURCE, о чем так же написано в официальных «Known Issues». Как решение предлагается откатиться на Ubuntu 10.04, что очевидно не самый лучший вариант. Текст предупреждения и ошибки будет такой:

Исправление

Эту проблему можно решить установив gcc-4.4 и необходимые библиотеки:

Подробнее про настройку 2х версий gcc и использование gcc-4.4 как приоритетной версии можно прочитать в этом блоге. Для наших же целей достаточно установить нужные пакеты и запускать сборку командой с указанием версии компилятора:

После приведенных выше операций Android соберется как мы и хотели, но постфактум можно столкнуться еще с парой неприятностей.

Ошибка 3

При запуске эмулятора с указанным параметром «-gpu on» для включения аппаратного ускорения отрисовки вы получите слежующее сообщение и черный экран в эмуляторе:

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

Исправление

Путем проверки пакетов выяснилось что при установке одного из них был удален проприетарный графический драйвер от NVidia и как следствие система забыла как регулировать скорость вращения вентилятора, а также где искать нужную библиотеку. Вредоносным пакетом оказался libncurses5-dev:i386, обратите внимание что при его установке будет следующий запрос:

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

Ошибка 4

Возникает при запуске эмулятора без указания файла ядра системы. В предыдущей статье я забыл указать этот момент, в этой исправляюсь чтобы описание было до конца полным. Итак при запуске эмулятора AOSP 4.0.4 мы получим сообщение:

Читайте также:  Как скопировать через блютуз андроид

Проблема возникла из-за того что в более свежих версиях AOSP prebuilts перенесли в другую директорию и это исправление попало в сборочные скрипты для старых версий, а вот местоположение не изменили.

Исправление

Указать при запуске эмулятора расположение ядра, путь относительно корня сборки:

Источник

Ubuntu ядро для android

Ubuntu 21.04 On android

This means now you can install ubuntu like above screenshot right in your smartphone without destroying your phone with rooting

This project is
status
Maintainence status
Platform Android Termux App (proot prtace() )
Linux Distribution
Community
Code quality & stats
  • codename -> udroid

Note & Disclaimer (Must read !)

A note before you try

  • As lot of it is preinstalled you can login and start right after you install
  • As this runs on termux and on software rendering so performence clearly depends on CPU, ram and storage read-write speed!
  • Don’t try heavy apps unless you have a good device 🙂
  • If you have any issues or suggestions make sure i know at https://github.com/RandomCoderOrg/ubuntu-on-android/issue (create an issue)
  • i dont work with any company or organization of ubuntu or any third party sources took in making fs(for now).
  • This project works by compliying to selinux android. and all aim of the project is just run linux on android without direct root with a twist and this project improves time by time with your support and motivation.
  • the linux you trying to install from this repo is not fully functional in target space because of the selinux policies, and increasing requirement in linux requirements and also because project is set to run with ptrace() a low level access in android kernel
  • Graphics performence is really bad cause proot and usage on VNC, we dont support any adoptation on improving it for now cause insufficient data on android (ping me in discord if you have any ideas or any codes on this)
    • (Update) see https://github.com/RandomCoderOrg/ubuntu-on-android/wiki/XWayland-in-proot to run smooth and fast session
  • This project comes without warranties or data protection

supported architectures status

arch status
arm64
armv7l
armv8l
amd64
Others not started

Getting Sources and install scripts

Command Usage
udroid To login to shell
udroid upgrade to upgrade fs or to get new features if available
startvnc start vncserver at port 1 (you can change default port by exporting env varaible DEFAULT_VNC_PORT to a port number)
udroid stopvnc stop vncserver at given or default port 1
udroid —enable-dbus To start udroid with dbus hack enabled
udroid —enable-dbus-vnc To start vnc session with dbus hack enabled
  • DEFAULT_VNC_PORT to set vnc port for scripts
  • HIPPO_BRANCH to set custom branch for cloning code

pulseaudio starts everytime you invoke start commands with udroid

You can start audio manually with this command

password
udroid user secret
vncserver root secret

A small help from me if you want to build your own rootfs wiki_page

Made with ❤️ from:

MIT Copyright (c) 2021 Saicharan Kandukuri

More Updates coming soon 💛

  • feel free to contribute to this repo 🙂

About

Run Ubuntu 21.04 with pre-installed Desktop Environments in android/termux with ease! Everything is preinstalled so just download install and done 🚀 🚀

Источник

AnLinux: простой способ установить Linux-окружение на Android-телефон без рута

Любой телефон или планшет, работающий на Android, — это устройство, которое управляется ОС Linux. Да, очень модифицированной ОС, но все же основа Android — ядро Linux. Но, к сожалению, для большинства телефонов опция «снести Android и поставить дистрибутив по своему вкусу» недоступна.

Поэтому, если хочется Linux на телефоне, приходится покупать специализированные гаджеты вроде PinePhone, о котором мы уже писали в одной из статей. Но есть еще один способ получить Linux-окружение практически на любом смартфоне, причем без root-доступа. Поможет в этом инсталлятор, который называется AnLinux.

Что такое AnLinux?

Это специализированное ПО, которое дает возможность использовать Linux на телефоне при помощи монтирования образа, содержащего root-файловую систему любого из дистрибутивов, включая Ubuntu, Kali, Fedora, CentOS, OpenSuse, Arch, Alpine и многих других. Инсталлятор использует PRoot для эмуляции root-доступа.

PRoot перехватывает все выполняемые пользователем вызовы, которые требуют в обычной ситуации root-доступа, и обеспечивает их работоспособность в обычных условиях. В PRoot используется системный вызов ptrace для отладки ПО, который помогает достичь цели. С PRoot все это можно сделать как с chroot, но без root-прав. Кроме того, PRoot предоставляет фейковый доступ пользователю для пседвофайловой системы.

AnLinux — небольшая программа. Но этого достаточно, ведь единственное ее предназначение — установка образов систем и запуск скриптов, поднимающих пользовательское окружение. Когда все сделано, пользователь получает вместо смартфона Linux-ПК, причем Android продолжает работать на фоне. Подключаемся к устройству при помощи VNC-вьювера или терминала, и можно работать.

Конечно, это не идеальный вариант «завести» Linux на смартфоне, но он вполне рабочий.

С чего начать?

Основное — Android-смартфон с версией ОС не ниже Lollipop. Кроме того, пойдет и 32-битное или 64-битное ARM или x86-устройство. Кроме того, потребуется солидный объем свободного файлового пространства. Для этого можно использовать карту памяти или просто устройство с большим объемом внутренней памяти.

Кроме того, потребуется:

  • AnLinux (вот ссылка на Google Play).
  • Termux (снова понадобится Google Play).
  • VNC Client (VNC Viewer — хороший вариант).
  • Bluetooth-клавиатура (опционально).
  • Bluetooth-мышь (опционально).
  • HDMI кабель для мобильного телефона (опционально).

Termux и VNC нужны для получения доступа к своему «компьютеру на Linux». Последние три элемента требуются лишь для того, чтобы обеспечить комфортную работу с телефоном и установщиком. HDMI-кабель нужен только в том случае, если пользователю удобнее работать с большим экраном, а не вглядываться в дисплей телефона.

Что же, приступим

Как только установлен Termux, получаем полноценную консоль. Да, рута нет (если телефон не рутован), но ничего страшного. Следующий шаг — установка образа для дистрибутива Linux.

Теперь нужно открыть AnLinux и затем — выбрать Dashboard из меню. Всего есть три кнопки, но выбрать можно лишь одну, первую. После этого появляется меню выбора дистрибутива. Можно выбрать даже не один, а несколько, но в этом случае понадобится большой объем свободного файлового пространства.

После выбора дистрибутива активируются две другие кнопки. Вторая позволяет загрузить в буфер обмена команды, необходимые для загрузки и установки Linux. Обычно это pkg, wget команды и скрипт для их выполнения.

Третья кнопка запускает Termux, так что команды можно вставлять в консоль. Как только все сделано, запускается скрипт, позволяющий загрузить окружение дистрибутива. Для вызова дистрибутива нужно каждый раз запускать скрипт, но установку проводим только один раз.

А что с графической оболочкой?

Если она нужна, то следует лишь выбрать меню для десктопного окружения и использовать больше кнопок — появится не три, а больше. Кроме самого дистрибутива, нужно выбрать еще и оболочку, например, Xfce4, Mate, LXQt или LXDE. В целом, ничего сложного.

Потом кроме скрипта, который запускает дистрибутив, потребуется еще один — он активирует сервер VNC. В целом, весь процесс простой и понятный, он вряд ли способен вызвать затруднения.

После запуска сервера VNC подключаемся со стороны клиента, воспользовавшись вьювером. Требуется знать порт и localhost. Все это сообщает скрипт. Если все сделано правильно, то пользователь получает доступ к своей виртуальной Linux-системе. Производительность современных телефонов на высоте, так что особых проблем не будет. Конечно, вряд ли смартфон сможет полностью заменить десктоп, но, в целом, все это работает.

Этот способ может пригодиться, если вдруг нужно срочно подключиться к серверу, а вы в машине, без ноутбука (конечно, в этом случае все описанные выше операции с AnLinux уже должны быть выполнены). Виртуальная Linux-машина позволяет подключиться к рабочему или домашнему серверу. А если в автомобиле по какой-то причине оказался дисплей и беспроводная клавиатура, то за считанные секунды в салоне можно организовать рабочий кабинет.

Источник

Читайте также:  Системная клавиатура для андроид
Оцените статью