LINUX.ORG.RU
ФорумMobile

android-4.0 livecd with openvz kernel

 , ,


1

3

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

Ядро openvz было расширено заплатками для работы android. livecd iso со сборкой выложен на Google Drive. Получилось 16 частей.

На iso два ядра: 32 и 64 бит, загрузка для VirtualBox и на нативном железе. То есть в отличии от стандартного android-x86 присутствует полный набор модулей ядра от openvz.

system и ramdisk только перепакованы. Ничего докачивать не надо (типа haundini). Каталог android-4.0-r1 можно переписать на любой раздел с ext2/ext3, прописать в загрузчик конфигурацию с iso и получить загрузку android, когда изменения сохраняются между перезагрузками.

initrd — лишь немного модифицированный initrd от gentoo. Поэтому может грузить стандартно с раздела или подкаталога на разделе. Если прописать к параметрам doshell, то вместо загрузки системы получим shell в initrd (с Midnight Commander).

android может запускаться в chroot параллельно X-сам.

Практически все приложения работают. Проблема (стандартная) только с проигрыванием локального видео на CPU от AMD (с Intel вроде должен работать).

Пробовал собрать сам userspace, но он получается немного не таким, как собранные бинарники от android-x86. Например, при начальном старте выскакивает менюшка с просьбой выбрать приложение, которое что-то там должно обработать.

Для работы переключателся ввода рус/англ(CAPSLOK) в VirtualBox пришлось заменить system/usr/keychars/Generic.kcm на содержимое Generic_ru.kcm

Вообще, в исходниках присутствуют игры (quake), но почему-то не попадают в образ. Хотелось бы также, чтоб на iso присутствовало API-demo как в android-3.2

В планах попробовать наложить на ядро заплатки от cells http://systems.cs.columbia.edu/projects/cells/build/ Эти заплатки (для framebuffer и android drivers) позволят запускать android в контейнере.

Если получится портировать, то эти заплатки реализуют для каждого контейнера свой framebuffer. Фактически, контейнеры станут похожи на VM.

Версия ядра изменена с 2.6.32 на 3.26.32, чтоб можно было использовать в CT0 дистры типа calculate с glibc, которая хочет ядро 3.12+

ebuild ядра с patch's для android: openvz_android_kernel_ebuild.tar.bz2

PS: имена файлов на Google Drive — абракадабра, поэтому придётся переименовывать при загрузке.


имена файлов на Google Drive — абракадабра, поэтому придётся переименовывать при загрузке.

wget https://googledrive.com/host/0B35PjbLHNzyqOWU0ZjFSeWZ0UTA https://googledrive.com/host/0B35PjbLHNzyqSEZoZkxBaHlIRDA https://googledrive.com/host/0B35PjbLHNzyqNFBrV05WSlVXREE https://googledrive.com/host/0B35PjbLHNzyqOW1hZU15RGNEbnM https://googledrive.com/host/0B35PjbLHNzyqQWQ1RzBXbHBYWHM https://googledrive.com/host/0B35PjbLHNzyqSkxMWXpweHFBb0U https://googledrive.com/host/0B35PjbLHNzyqTWI0Q0c3Ul9IclU https://googledrive.com/host/0B35PjbLHNzyqbjhwNFpFWVI2MkE https://googledrive.com/host/0B35PjbLHNzyqZEF3b01NM3RSb28 https://googledrive.com/host/0B35PjbLHNzyqUmc2VExJTjVzbk0 https://googledrive.com/host/0B35PjbLHNzyqU1IteUNlT2dETFk https://googledrive.com/host/0B35PjbLHNzyqYUh6RFV2UzBfN1E https://googledrive.com/host/0B35PjbLHNzyqZVd1eGU5OFpOVkE https://googledrive.com/host/0B35PjbLHNzyqVUxCSE11dXBfUTg https://googledrive.com/host/0B35PjbLHNzyqVjRvbGZMbmU1VnM https://googledrive.com/host/0B35PjbLHNzyqQnRhOWI5Q1hDTGs -O - > android-4.0-r1.iso
CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

Круто..

wget ... -O android-4.0-r1

Я бы никогда не догадался.

seyko2
() автор топика

А почему не киткат? Или JB 4.2
4.2 самая годная вроде бы, и не перегружена говном, и функций предостаточно

mystery ★★
()
Ответ на: комментарий от mystery

А почему не киткат? Или JB 4.2

На сегодня 4.0 достаточно долго стабильна. 4.4-r1 (KitKat) от android-x86 была глючная. В общем, дальше видно будет.

Возможно придётся перезаливать на Google Drive начиная с android-4.0-r1.iso.07. Сегодня скачал обратно (по подсказанной выше команде wget) и обнаружил несовпадение начиная с указанного файла. Заливал программой drive (которая на go). Может она сглючила, может wget.

Однако и Google хорош: у него наверно ограничение на количество файлов для одного пользователя. Залил: смотрю нет нулевого. Перезалил, пропал 11й. Пока не удалил другие файлы, так и продолжалось.

PS: для проверки целостности # ls -l android-4.0-r1.iso -rw-r--r-- 1 root root 311072768 Апр 22 14:29 android-4.0-r1.iso

# sha256sum android-4.0-r1.iso d4f3ce355ac411d5915bbfef491094662938fe231d0013ff7aa11a062fcfcbe1 android-4.0-r1.iso

seyko2
() автор топика
Ответ на: комментарий от mystery

4.2 же очень стабильна

android-x86 вроде как не выпускал iso с этой версией (или я ёё пропустил?) А с 4.3 и 4.4-r1 у меня были проблемы. Недавно собрал 4.4-r2 — эта вроде получше.

PS: проверил android-4.0-r1.iso.07 (скачал повторно): всё нормально. Значит сглючил wget. Поэтому наверно лучше скачивать по одному.

seyko2
() автор топика
Ответ на: комментарий от Aceler

Если кто сделает, то хорошо

У меня интернет мобильный, поэтому возможности ограничены (скоростью, которая бысто кончается)

seyko2
() автор топика
16 ноября 2015 г.
Ответ на: комментарий от krakln

два android OS

В данном iso явно установка не предусмотрена (при загрузке предлагается только несколько вариантов ядра Linux с одним и тем же userland). Однако можно отформатировать раздел на жёстком диске и скопировать каталоги с iso на раздел диска. В этом и заключается вся установка. После того, как установим загрузчик на жёсткий диск, iso можно вынимать. При загрузке с жёстого диска (ext3 или ext4 раздел) изменения при перезагрузке будут сохраняться (в каталоге changes)

Установка загрузчика: из меню grub нажимает «c» (command line) cmd > setup (hd0)

Должно сработать. Однако установку с cd я давно не пробовал (пишу по памяти). PS: в параметрах grub можно указать и swap-раздел (его метку) при наличии.

seyko2
() автор топика
Ответ на: два android OS от seyko2

Копировать на жёсткий диск можно из Midnight Commander (он присутствует на iso) Ctrl-Alt-F1 (переключение на tty1), export TERM=linux, mc

PS: Создание разделов на жёстком диске — стандартными средствами (fdisk, mkfs) PPS: Всё это — после загрузки с iso.

seyko2
() автор топика
Ответ на: комментарий от seyko2

Этот же android можно запускать из каталога обычного дистрибутива (если ядро собрано c драйверами android) паралельно X-windows. Ядра 3.10+ уже вполне достаточны.

seyko2
() автор топика
Ответ на: комментарий от seyko2

С установкой вроде как понятно, спасибо, попробую, а как при этом запустить два одновременно работающих android'a? И как между ними переключаться?

krakln
()
Ответ на: комментарий от seyko2

Этот же android можно запускать из каталога обычного дистрибутива (если ядро собрано c драйверами android) паралельно X-windows. Ядра 3.10+ уже вполне достаточны.

Можно пожалуйста поподробнее, как это сделать?

krakln
()
Ответ на: комментарий от krakln

И как между ними переключаться?

Это немного в будующем. Для этого на данное ядро надо наложить патчи от Cells/CellsRock https://github.com/Cellrox/devns-patches После этого вроде как можно будет попробовать https://github.com/Cellrox/devns-demo В данный момент из 8 patch осталось портировать 2: android-logger и android-alarm-dev. После чего android из данного iso можно будет запускать в контейнерах (не только 2) под управлением обновлённого ядра. Для переключения между ними (контейнерами) возможно придётся ввести переключение типа Ctrl-Shift-Alt-F1 .. F2

Конкретно данный iso предназначен для того, чтобы убедиться в нормальной работе android под данным ядром, научиться устанавливать его на жёсткий диск, запускать его из каталога обычного дистрибутива (скажем calculate) параллельно X-windows.

PS: Запуск в контейнере чем-то похож на запуск из каталога.

seyko2
() автор топика
Ответ на: комментарий от krakln

поподробнее, как это сделать?

Этот же android можно запускать из каталога обычного дистрибутива

Поподробнее: берём дистр calculate, я пробовал с 14.12.1, но теоретически можно и более новый. Главная засада — в версии glibc: если она вдруг затребует ядро версии 4.0++, то такой дистр не подходит. Поэтому

1. берём calculate cldx-14.12-i686.iso или cldx-14.12.1-x86_64.iso и устанавливаем в VirtualBox на жёсткий диск. Грузится?

2. копируем ядро и initramfs с android.iso в /boot жёсткого диска. Если умеем править конфиги grub-2, то прекрасно. Я предпочитаю перенести конфиг из grub2 в grub1 (могу в последнем помочь). Поэтому

3. грузимся с android.iso и устанавливаем android и grub1 на HD. Android грузится с жесткого диска? Тогда

4. прописываем в grub/menu.lst конфигурацию загрузки calculate с ядром от android (пункт 2). Получилось загрузить calculate с ядром от openvz (android.iso)? Тогда

5. грузим эту конфигурацию, распаковываем *.lzm с iso в какой-нибудь каталог (это squashfs-архивы, распаковываем по порядку друг на друга с помощью unsquashfs), и запускаем android из данного каталога параллельно X-Windows командой

cd ANDROID-DIR; chroot . ./init

seyko2
() автор топика

Нет желания завести блог и описать все подробнее? Хотелось бы увидеть исходники модифицированого ядра на гитхаб и даже присоединиться к проекту (ближе к Новому году).

tlx ★★★★★
()
Ответ на: комментарий от tlx

исходники модифицированого ядра на гитхаб

Наверно для пользователей не Gentoo это удобней.. Однако приходится быть в синхронизации с ядром openvz, поэтому патчи всё равно придётся хранить отдельно.

PS: Вытащить самому патчи из git (проект cells) не просто. Пока они не опубликовали их отдельно (cellRocks), понять что-либо было трудно.

PPS: наверно клонирую https://github.com/pavel-odintsov/openvz_rhel6_kernel_mirror/commit/b76b5ab6b... Достаточно свежая версия. Советы как вести культурно вести git (чтоб история patch по отдельной теме сохранялась, например aufs) принимаются.

seyko2
() автор топика

А как на счёт блога? Опишите что и как делали, какие задачи нужно выполнить с вводными инструкциями. У меня есть опыт долгой монотонной работы с ядром. Сейчас, как я понимаю, с cells у вас будут как раз такой этап.

tlx ★★★★★
()
Ответ на: комментарий от tlx

А как на счёт блога

Сначала github https://github.com/seyko2/openvz_rhel6_kernel_mirror В данный момент там только openvz-версии: 108.1 109.3 109.4 109.10 111.12 112.4 113.5 (те версии, что компилировал)

Сейчас потихоньку начну ветку fantoo-111.12 с patch aufs, android и тд. В данной ветке все патчи будут раздельны (как в ebuild). Боюсь, что с более новыми возиться не смогу и изменение будет в один шаг/patch

Особенность 112.4 — обновление до RHEL 2.6.32-573.3.1 порушили работу утилит android 4.0..4.4 для работы с wifi. Как их чинить — пока не понятно. Занятно, что в android-3.2-rc1 всё по-прежнему работает. Поэтому android 4.0 4.4 скорее всего застрянут на версии 111.12

Про блог: пока не знаю. С cellRocks долгой монотонной работы не предвидится. Основные patch-и уже портированы. Непонятная пока дополнительная работа — пропатчить как-то ядро на предмет переключения экрана на разные контейнеры по аналогии с переключением tty по Alt-F1..F2 и создание /dev/fb в контейнере. Это придётся сочинять или пока пропустить: переключение в контейнер может делать программа (syscall), а обратно — она же по таймеру.

Все остальные примочки cells завязаны на телефонное применение и для desktop не так важны.

seyko2
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.