»   Список форумов   »   Все обо всем   »   Информационные технологии
 

Начинаем извращаться или установка Gentoo Linux на Android девайс.

Страницы: 1

Странный Ник - Пн 16 Апр, 2012 17:22
Итак. Решил я поделиться с Вами, уважаемые ITшники своими наработками на вышеуказанную тему, заодно хотелось бы выслушать Ваши коментарии и возможно советы :)
День первый:
Дано:
    Huawei s7 с Android 2.2.2. на борту.
Желаемый результат:\
    Полноценный линукс с полноценным окружением (ака DE)

Этапы реализации:
    1. Подготовка ядра
    2. Подготовка нового root раздела
    3. Настройка параметров ядра
    4. Пробная загрузка ядра
    5. Сборка софта.

Путем гугления и общения на форумах удалось нарисовать примерную схему разбивки файловой системы сего чудо-девайса:
http://gyazo.com/32fec421fc4aab4934ca9e786dff5bdd
эта схема пригодиться мне в дальнейшем для переноса gentoo на планшет.

Для реализации первого шага я воспользовался очень полезным инструментом входящим в gentoo linux (если не входит всегда можно установить коммандой "emerge crossdev") crossdev.
Суть данной утилиты в том, что она позволяет установить такие как gcc glibc и т.д. для огромного количества платформ.
В нашем подопытном девайсе установлен процессор Qualcomm Snapdragon 1Ghz (узнать более подробную информацию можно выполнив на девайсе cat /proc/cpuinfo). Данный процессор относится к семейству ARMv7. Путем проб и ошибок были найдены опции кросскомпиляции для этой платформы.
начнем сборку ядра:
Первым делом нам нужен конфиг для ядра. его мы можем получить из /proc/config.gz нашего девайса

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

загрузчик - 1 страница
ядро - n страниц
ramdisk (initrd) - m страниц  
2 стадия - o страниц. Если честно, то пока не понятно что это и для чего надо сейчас продолжаю изыскания на эту тему.
Где:
n = (размер_ядра + размер_страницы - 1) / размер_страницы
m = (размер_ramdisk + размер_страницы - 1) / размер_страницы
o = (размер_второй_стадии + размер_страницы - 1) / размер_страницы
Всю информацию (если кому-либо интересно) можно получить из заголовочного файла mkbootimg.h, который можно взять из исходников андроида.

Рассмотрев все вышесказанное, пришел к выводу что необходимо немного изменить концепт действий, а именно:
1. Если не получится перепаковать boot раздел, то попытаюсь заменить bootloader на uboot или тому подобное...
2. Попробовать сохранить в рабочем состоянии андроид (с подозрением смотрю в торону recovery раздела)

Сейчас при помощи qemu тестирую свежесобранное ядро на устойчивость.

День шестой:

Прошла почти неделя... И вот результаты работы:)

1. Удалось припилить framebuffer в UBoot
2. На основе ванильного ядра, путем внесения патчей, удалось собрать работоспособную версию ядра с поддержкой моего девайса.
3. Заведено 3 бага на багтрекере Gentoo Linux
4. Собран драйвер framebuffer для X11 (пока не протестирован)
5. Удалось получить полноценный gentoo на планшете (сеть настроена по USB)
6. Настроен ssh доступ и понтирование внешних nfs разделов с большими объемами (/usr/portage/distfiles, /var/tmp)
7. Пересобрать мир :)

Давно я ничего не писал о своем минипроекте....
Столкнулся с проблемой, драйвер Х под видеочип, моего чудо девайса, существует только в версии для xorg 1.5 что для меня не приемлимо, ибо очень хочется посвежее :)
Итог: Патч в апстрим драйвера, который кстате успешно собрался и даже вроде работает, жду принятия.
Второй проблемой стал присловутый udev.... начиная с версии 165 он стал использовать системный вызов accept4(), который появился в ядре 2.6.35 (у меня 2.6.28).
Для решения этой проблемы есть 3 варианта...
1. Патчить udev (чревато неприятными последствиями)
2. Собирать новое ядро (очень трудозатратно ибо китайский вендор не пожелал вносить свои наработки в апстрим) буду реализовывать его вероятнее всего
3. Собрать более старую версию udev (164r4 например) сейчас использую именно этот метод, но уже есть грабли некоторые приложения просят udev поновее приходится ковырятся...

Дальше по плану сборка полноценного окружения (планирую gnome3 но не уверен как это будет работать и как вообще соберется :))))) ) и собственно порт наработок хуавея в новое ядро (3.4.0 ибо там вроде как многие андроплюшки уже есть по дефолту)

На этом пока все.
Изыскания продолжаются...

-legolas- - Пн 16 Апр, 2012 17:25
Странный Ник писал(а):
Как вы считаете?
- Круто, интересно что получится.
- Шлак, нафиг не надо
- Аффтар извращенец.

ну что за опрос? кому интересно протестить свои руки на прямоту, тому круто. кто уже натестился и надоело - пофиг. кто далёк от этого, тому нафик не надо, и автор для него извращенецmellow

Watchman - Пн 16 Апр, 2012 18:44
а я хочу одновременно заставить работать две ОС и с подозрением смотрю в сторону Xen blink

DerevolaZzz - Пн 16 Апр, 2012 18:56
Watchman, в сторону kvm лучше смотри мой тебе совет )

Watchman - Пн 16 Апр, 2012 19:16
DerevolaZzz, проблема в том, что нужно пробросить видеокарту, а из всех гипервизоров только Зен более-менее с этим справляется

-EIN- - Вт 17 Апр, 2012 1:34
sad  вкусные вещи... непонятная кухня

Странный Ник - Вт 17 Апр, 2012 11:48
Обновил первый пост.

Шкодник - Вт 17 Апр, 2012 11:50
голосовал за изврата, ну ты и сам в курсеrolleyes
андроид, линукс, офтоп мимо smile

DerevolaZzz - Вт 17 Апр, 2012 20:47
вы бы ещё на циску винду поставили ё-маё.
Шкодник, в ветке ИТ оффтоп это говорить про преферанс и профурсеток, а не про линукс в теме про линукс.

Странный Ник - Ср 18 Апр, 2012 10:58
Удалось установить UBoot но появилась небольшая проблема, нет фрэймбуфера...
Может кто нить из форумчан знает как получить USBSerial на уровне железа? (в спеке указано что поддержка есть, но по факту девайн не опознается)

Шкодник - Ср 18 Апр, 2012 11:15
DerevolaZzz, именно для того чтобы не было офтопа я и написал линкус как бэ dry

KveldUlf - Чт 19 Апр, 2012 0:17
Возможно стоит воспользоваться опытом натягивания Android на Meego?

Может поможет... : http://4pda.ru/forum/lofiversion/index.php?t322467.html

Странный Ник - Вс 22 Апр, 2012 23:33
Обновил первый пост.
KveldUlf, спасибо некоторые моменты почерпнул, хоть и не для этого проекта (рассматриваю возможность порта Android на Nokia 5800)

ExtEEd - Пн 23 Апр, 2012 7:33
если куплю новый андроид-девайс, то тоже поизвращаюсь над старымmellow  
п.с. а почему именно гента? разве не проще (хД) было LFS собрать?

LifeisGooD - Пн 23 Апр, 2012 17:24
ExtEEd писал(а):
разве не проще (хД) было LFS собрать?

Я думал в этом и суть, чтобы не искать путей попроще. rolleyes

Странный Ник - Вт 24 Апр, 2012 0:49
ExtEEd, LFS конечно хорош, но с зависимостями уж больно много геморроя. +в генту есть приятные плюшечки типа crossdev а заводить все в собственном LFS будет не очень просто, хотя в дальнейшем, вероятно, будет именно LFS сборка.
LifeisGooD писал(а):
Я думал в этом и суть, чтобы не искать путей попроще.

LifeisGooD, тут ты прав :)

Странный Ник - Ср 23 Май, 2012 3:34
Обновил первый пост

Kniginia - Ср 23 Май, 2012 9:20
Странный Ник, ах ты ж мой извращенецwub  Но занятно все расписал, когда куплю новый сматр на андройде, над старым по извращаюсь.

Норб - Чт 07 Июн, 2012 15:01
Хотите извращений? Их есть у меня - http://habrahabr.ru/post/145337/

Kniginia - Пт 08 Июн, 2012 17:02
Норб, ага, читала эту статью. Интересно, но времени не хватает.

Странный Ник - Сб 09 Июн, 2012 22:55
Норб, как по мне так это не извращение а маразм laugh  ибо пыха это отвратный язык программирования, который кроме как для веба применять нет смысла.

Страницы: 1