суббота, 30 ноября 2013 г.

Windows 8.1,Пуск вернули,а лаги остались!




Я думаю все помнят скандал с кнопкой Пуск в Windows 8,его не обсуждал только ленивый.
Вкратце:всеми любимое и удобное меню Пуск выпилили из его естественной среды обитания-Рабочего стола и сделали отдельной панелью(Растянули на весь экран,некрасиво,неэстетично и неудобно).Я быстро привык к новому неудобному Пуск,да и программы типа Start8,очень помогли!
Ну вот свершилось!Корпорация Зла(а-ха-ха,всегда нравилось это прозвище!)впервые прислушалась к  мнению пользователей гласу здравого смысла и вернула обожаемую блондинками пользователями,простую и удобную,кнопку Пуск!Но теперь позлорадствуем(да люблю это делать,особенно над Apple и Microsoft).Первый вопрос при загрузке в новую ОС:И это все?!Да вы будете задавать его и в Windows 9 и наверное Windows 10,ведь меняются лишь цифры,а стабильность и безопасность,как были в самом дне(я был сказал днище,дальше падать просто некуда!!!)так и остались!Да и Пуск,мягко говоря,уже не тот:он конечно вернулся на рабочий стол,но теперь он открывает не знакомую и удобную панельку,а все то же громозкое Киевское Метро!Вот такую вот свинью подложила пользователям Корпорация Зла(нет,мне определенно нравится это прозвище!)
Продолжим ржать хихикать над Микроскопическим(во всех смыслах этого слова)софтом!
Я как настоящий бета-тестер качал все предварительные сборки,даже изобрел способ запуска на таких сборках Маркет.Были,скажем так,мелкие недочеты,баги,неисправности,но это нормально,их даже в бетах Линукса полно(увы,что не прискорбно)!Ну вот пришла пора оффициального альфа-теста,сперва все идет гладко:я спокойно гружусь в ОС,ставлю драйвера,подключаю WI-FI,ставлю галочку на Подключать автоматически,затем подключить и First Blood!!!Зависание и перезагрузка!!!Разве это альфа?!Да бета была стабильней раз в десять!!!Но и этому есть обьяснение:все просто,все беты утекшие в сеть были предназначены для спонсоров Корпорации Зла(хи-хи,Зла,ха-ха!!!),естественно хочется попонтоваться покрасоватся перед спонсорами,ведь они дають деньги на новые ОС от Мелких,а пользователи-гавно и на них можно ЗАБИТЬ!Одно я знаю точно,бету писали руками,а альфу,извините за выражение,ЖОПОЙ!Да именно,сели на клавиатуру задницой,пару раз проехались,взад-вперед и чудеса,новая ОС от Гавнософта!

Ну сейчас,слава Богу все баги закрыты(вранье,наглая ложь!),и ОС пригодна для повседневного использования.Можна пробовать!

И да,у меня радость,моя кошка,по имени Масяня,родила 5-ых котят!

пятница, 22 ноября 2013 г.

Свершилось!!!

Сегодня на оффициальном сайте Linux Mint заметил надпись о релизе Петры!Да именно так называется 16-я версия Linux Mint(мой любимый cinnamon тоже есть!)

Вот сообщение,поскольку ужу позно я решил не переводить,а лечь поспать(завтра переведу...или после завтра:))

Linux Mint 16 “Petra” Cinnamon RC released!

Written by Clem on Friday, November 15th, 2013 @ 11:24 am | Main Topics
The team is proud to announce the release of Linux Mint 16 “Petra” Cinnamon RC.
Linux Mint 16 Petra Cinnamon Edition
Linux Mint 16 is the result of 6 months of incremental development on top of stable and reliable technologies. This new release comes with updated software and brings refinements and new features to make your desktop even more comfortable to use.
New features at a glance:
For a complete overview and to see screenshots of the new features, visit: “What’s new in Linux Mint 16 Cinnamon“.
Important info:
  • PAE required for 32-bit ISOs
  • EFI Support
Make sure to read the “Release Notes” to be aware of important info or known issues related to this release.
System requirements:
  • x86 processor (Linux Mint 64-bit requires a 64-bit processor. Linux Mint 32-bit works on both 32-bit and 64-bit processors).
  • 512 MB RAM (1GB recommended for a comfortable usage).
  • 5 GB of disk space
  • Graphics card capable of 800×600 resolution
  • CD/DVD drive or USB port
Bug reports:
  • Please report bugs below in the comment section of this blog.
  • Please visit https://github.com/linuxmint/Roadmap to follow the progress of the development team between the RC and the stable release.
Download:
Md5 sum:
  • 32-bit: b88c71ed43b199a934a3105d2a7c3455
  • 64-bit: 232b8e3de36abccdaedc1dd904e2bded
Torrents:
HTTP Mirrors for the 32-bit DVD ISO:
HTTP Mirrors for the 64-bit DVD ISO:
Enjoy!
We look forward to receiving your feedback. Thank you for using Linux Mint and have a lot of fun testing the release candidate!

Перевод(как и обещал):

Linux Mint 16 "Петра" RC выпустили!

Команда с гордостью объявляет о выпуске Linux Mint 16 "Петра" Корица RC .

Linux Mint 16 Петра 
Linux Mint 16 является результатом 6 месяцев труда по развитию и надстроек над стабильной и надежной технологией. Эта новая версия поставляется с обновленным программным обеспечением и привносит усовершенствования и новые функции, чтобы сделать Ваш рабочий стол еще более удобным в использовании.
Новые возможности:
Cinnamon 2.0
Login Screen
Улучшение USB поддержки
Повышение производительности
Software Manager
Улучшения системы
Улучшения Artwork
Улучшения основные компоненты
Важная информация:
PAE необходимый для 32-битных ISO-образов
Поддержка EFI
Обязательно прочитайте" Примечания к выпуску ", чтобы быть в курсе важной информации или известных вопросов, связанных с этой версии.
Системные требования:
процессор x86 ( Linux Mint 64-разрядных требуется 64 -разрядный процессор . Linux Mint 32-разрядных работы на 32- разрядных и 64- разрядных процессоров ) .
512 Мб оперативной памяти (рекомендуется 1 Гб для комфортного использования ) .
5 Гб дискового пространства
Видеокарта с 800 × 600 пикселей
CD / DVD диск или USB- порт
Отчет об ошибке :
Пожалуйста, сообщайте ошибки ниже в разделе комментариев этого блога .
Пожалуйста, посетите https://github.com/linuxmint/Roadmap следить за ходом команды разработчиков между бетой и стабильным релизом .
Наслаждайтесь !
Мы с нетерпением ожидаем получения ваших отзывов. Спасибо за использование Linux Mint!

Шарики за ролики или Андроид на стероидах.

Сегодня я решил перестать отрицать очевидное,я довольно много пишу про разные ОС и не только про Linux Mint,я решил добавить тем для создания обзоров и инструкций,теперь я пишу обзоры на Windows OS,Linux,Android,IOS(при поддержке моего друга toxanik),ну и если я осилю написание kext на Mac OS X,то еще и Mac.

Ну а сегодня я поговорю о добавлении мощности Андроиду(сразу предупреждаю владельцев китайских устройств ВСЕ ЧТО ВЫ ДЕЛАЕТЕ НА ВАШ СТРАХ И РИСК,китайцы могут этого просто не пережить,знаю по своему плачевному опыту)

Начнем с Seeder: как утверждает разработчик программы,в Андроид ОС допущена серьезная проблема,генератор свободной энтропии(бог его знает что это,я не разобрался,по идее это увеличивает количество свободного RAM под интерфейс)

Есть два варианта установки: через CWM Recovery или как .apk
От себя:Реально работает(На 4.4 не нужен,там и так все плавно,прям не нарадуюсь)интерфейс работает шустрее,к примеру приложения через многозадачность закрываются без(как раньше)артефактов(они практически не заметны,но все равно раздражают),висяки появляются реже,вообще чудо

Скачать:4PDA XDA

Swapper
Это бомба в особенности в паре с seeder,планшет даже быстрее загружаться стал,что уж говорить про UI.Никогда бы не подумал что всего один файл в домашней директории несет за собой такие глобальные изменения!

Скачать:4PDA

Так RAM,или не RAM

RAM одна из основных критерий быстродействия девайса,у кого писька RAM больше тот и круче(несмотря на утверждения что размер не имеет значения:))Я правда немного их побаиваюсь,ведь это как алкоголь:прикольно,интересно,но бьет по печени процессору.
Но если вы экстремал,пробуйте(ну или если вашему устройству предыдущие способы,что мертвому припарки)

Скачать:RAM Control RAM Control Extreme G137

zRAM

Ну что ж пробовали,прикольно,но изменений особо не заметил(может слишком много твиков было наставлено и они просто перекрывали его действие).Насколько я понял оно делает из Андроида не кастрированный урезанный,а полноценный Linux.
Вообщем кто заинтересовался таким скудным объяснением,качаем:

Скачать:zRAM

Натянуть CPU на...ну вообщем сами понимаете

CPU три магические букву объясняющие выбор устройства,ведь где CPU больше,больше вероятность что запустятся самые производительные свистелки и перделки.А кто обделен CPU вынужденны менять устройства(а они все равно через пару лет перестанут запускать современные игры).Все ли так безнадежно?НЕТ!Слава богу есть люди разрабатывающие программы типа Pimp my CPU(а еще ядра,прошивки...ну и прочую бурду)
Я не пробовал,поэтому отписаться не могу,вообщем все на ощупь!

Скачать:Pimp my CPU

Будем знакомы,Твики!
Здесь просто твики,с общеобразовательными многогранными возможностями.Они ускоряют систему,оптимизируют память и батарею.ВНИМАНИЕ:МОГУТ КОНФЛИКТОВАТЬ С ДРУГИМИ ТВИКАМИ!

Скачать:Gentleman Set Android Tweaker Control Center(как в IOS) mcTweaker

Ядра

Наверно самое верное средство,многие ядра имеют поддержку разгона(не рекомендую,опасно для устройства)и оптимизацию памяти ну и парочку веселеньких функций.Я к примеру пробовал Bulletproof,веселенько,прикольненько,но бесполезно,разблокировалось конечно быстрее из-за обхода аппаратных клавиш питания.

Скачать:лучше ищите ядра для своего устройства,а то я вам дам,но не уверен что оно вам пойдет,вобщем читайте внимательней!franko.kernel.updater

Cyanogenmod мне в процессор!

Это отдельная тема,вокруг вопроса о повышении быстродействия в cyan по сравнению со стоковым Андроид ведутся не шуточные дебаты,но мы в них участия принимать не будем я лишь от себя добавлю что разница есть(в положительную сторону)!Не может не радовать и пункт в меню настроек о разгоне(вдруг захочется поэкспериментировать).Также недавно компания объявила о намерении стать третей экзосистемой на рынке мобильных устройств и в связи с этим "волнующим" событием был выпущен специальный установщик(а вот это и вправду интересно!)Я лично установщик опробовал,но не до конца,до установки не дошло,установщик на андроид являет из себя интерактивную инструкцию,а на Windows программу для поиска->скачивания->прошивке cyan на устройство.

Скачать:Cyanogenmod Installer

Спасибо за внимание,удачи с улучшением вашего Андроида!

суббота, 2 ноября 2013 г.

Android 4.4 или как сделать из говна KitKat.

Я неофициально обновил свой flo до Андроид КитКат,ну что ж я если честно ожидал большего,но почитав changelog понял что все основные изменения произошли под капотом и Google-молодцы поняли чего им не хватало!Теперь ОС более яростно сражается за память(ОЗУ),как говорится,не байта врагу:),Также теперь ос перестанет лагать даже если у вас 512 мб Оперативной Памяти,это очень радостная новость для всех владельцев китайских смартфонов,теперь мы нечем не хуже Apple с их Айболитами!Для всех любителей социальных сетей,теперь смайлы есть сразу в клавиатуре,да и вмонтированый свайп тоже не может не радовать,для всех гиков теперь голосовой ввод всегда висит в фоне,а чтобы его вызвать нужно сказать кодовое слово(какое не говорят,партизаны фиговы!).К сожалению в плане UI изменения нулевые,помоему единственное изменение это перекрашеные индикаторы батареи и WIFI,теперь они серые!Если вы несмотря на все это захотели попробовать вот вам инструкция с сайта 4pda.ru(сразу предупреждаю-это долго,пока я пишу эту запись у меня скачиваются исходники,это идет уже наверное три часа):

Долго собирался, наконец сегодня взялся написать свой первый серьёзный мануал, а именно мануал по сборке андроида из исходников, ибо тот, что был до этого в шапке морально устарел))
Мануал будет разделен на этапы, с простым, понятным для новичков объяснением. Все буду объяснять на примере сборки андроида для своего текущего девайса, китайского телефона - Newman N2, а именно сборку CyanogenMod 10 с нуля, т.е. не имея никаких исходников от производителя. Будут присутствовать элементы портирования, также поделюсь некоторыми "ухищрениями", которые мне лично помогают. Постараюсь ответить на многие вопросы начинающих ромоделов, таких как: "Как начать?", "Что установить?", "Где взять?". И так, приступим! ;) 

Спойлер (+/-) (Этап 1. Выбор среды развертывания. Хост или ВМ?)
Это как говорится по вкусу и по обстоятельствам. Если вы не хотите ставить линукс второй системой или же у вас на HDD всего 1 раздел и тот "битком набит", то лучше воспользоваться виртуальной машиной. Сгодится VM Ware или VirtualBox...НО! Я категорически советую вам не полениться и все таки разбить ваш жесткий диск на разделы и поставить второй осью линукс! Почему?
*работать будет быстрее
*не будет ошибок при компиляции. Дело в том, что работая в среде виртуализации, ваше железо эмулируется виртуальным и компилятор может попросту не найти инструкций для работы с таким "виртуальным железом".
*используя ВМ вы губите потенциал своего ПК, ведь если он у вас мощный - воспользуйтесь этим! следствие -> пункт №1
*опять же, в продолжении предыдущего пункта, при компиляции необходимо много свободной оперативной памяти, поэтому использование ВМ накладно.
Так что, ставьте линукс второй осью!


Спойлер (+/-) (Этап 2. Выбор ОС)
Можно компилировать в линуксе, можно в MAC OS. Я останавлюсь на линуксе, т.к. с маком дела не имел.
Собственно какой дистрибутив выбрать? Вопрос актуальный, особенно если вы новичок в линуксе или же только что пересели с Windows.
Мой ответ на этот вопрос - не парьтесь! Выбирайте Ubuntu, а лучше такой дистрибутив основанный на Ubuntu как Linux Mint! Простой, удобный и понятный!
Хорошо зарекомендовала себя версия Linux Mint 9. Стабильная, основанная на Ubuntu 10.04, в которой на 100% соберется все, что только на данный момент есть(вплоть до Android 4.3). Скачать можно ТУТ.
Но время не стоит на месте, сейчас уже доступна 15-я версия самого популярного линукс-дистрибутива. Linux Mint 15 "Olivia". Собственно на "Оливии" я сейчас и сижу, пишу для вас этот мануал :D . Красивая и очень быстрая!
Какую версию качать? Если вы в первый раз сталкиваетесь с таким выбором, то мой совет - качайте MATE, с кодеками. Разрядность соотвественно смотрите сами.


Спойлер (+/-) (Этап 3. Настройка рабочего окружения)
Окей. Ось скачали, установили, обои любимые на рабочий стол поставили :D теперь к делу)
Некоторые операции придется проделовать со скрытыми файлами, так что включите сразу их отображение: Вид -> Показывать скрытые файлы
3.1. Установка JDK(Java Development Kit)
Вот это надо установить первым делом. И не надо мне говорить что у вас уже стоит какой то там JDK!!! Да, действительно, в том же Linux Mint уже стоит предустанвленный OpenJDK, но скажу сразу - он для сборки андроида нам не подойдет, нужен JDK именно от компании Sun. Да и еще что версии 1.6 был! зачем старье, есть же новый 1.7?! Дело в том, что новый JDK пока не "дружит" с текущими исходниками и поэтому нужен именно версии 1.6.
И так, идем на сайт www.oracle.com, регаемся там(регистрация нужна чтобы скачать архивную JDK).
Далее, идем СЮДА и качаем в зависимости от разрядности jdk-6u45-linux-i586.bin или jdk-6u45-linux-x64.bin.
Скачали? Хорошо, теперь допустим это все добро скачалось к нам в домашний каталог(/home/<как_Вас_по_батьке/>), а если скачалось в др. место, преместите в домашний каталог для удобства. Теперь выполним некоторые манипуляции со скаченным файлом. Откройте свойства данного фйла и на вкладке "Права", поставьте крестик в пунтке "Позволять выполнение файла как программы". Открываем терминал и пишем:
Код
sh jdk-6u45-linux-i586.bin

или
Код
sh jdk-6u45-linux-x64.bin

В результате появится каталог jdk1.6.0_45. Для удобства переименуем его в jdk. Бинарник можно удалить.
Теперь чтобы компилятор знал где лежит наша ява, укажем к ней путь:
Код
export PATH=$PATH:~/jdk/bin

Чтобы каждый раз не писать эту строку заново, необхожимо закинуть ее в файл .bashrc, он расположен в домашнем каталоге. Если такого файлв нет, создайте его.
Отлично! С явой разобрались, двигаем дальше.
3.2. Установка пакетов.
Собственно я если честно, всегда пакеты ставлю как попало, какие попало и откуда придется :D Но можно последовать мудрому руководству от Google по настройке окружения. Там вы найдете все, но не все там так сладко да гладко, хотя бы с тем же JDK...
Там пакеты разделены на 4 списка, в зависимости от версии убунты. Копируем что нужно и ставим.
Лично у меня с этим возникла проблемка на "Оливии" (Mint 15, 64bit). Т.к. она основана на Ubuntu 13.04, у меня не получилось загрузить нужные пакеты из инструкции от гугла. Но это не проблема:
Код
sudo apt-get install -y git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev libxml2-utils u-boot-tools libc6-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown xsltproc

Нужные пакеты стоят. Идем дальше.
3.3. Android SDK, adb и fastboot.
Идем СЮДА и качаем Android SDK. Качаем, распаковываем и переименовываем для удобства в sdk.
Обновляем SDK:
Код
cd ~/sdk/tools
sudo sh android update sdk -u

Потом ставим ADB:
cd ~/sdk/tools && ./android update adb
Потом ставим fastboot:
Код
cd ~/sdk/platform-tools/ && wget [url="http://dl.dropbox.com/u/6751304/fastboot"]http://dl.dropbox.com/u/6751304/fastboot[/url] && sudo cp adb /usr/bin/adb && sudo cp fastboot /usr/bin/fastboot && sudo chmod 755 /usr/bin/adb && sudo chmod 755 /usr/bin/fastboot

Если эта команда не покатит, то сделайте так:
Скачайте в ручную http://dl.dropbox.com/u/6751304/fastboot ,закиньте в platform-tools, а потом
Код
cd ~/sdk/platform-tools/ &&sudo cp adb /usr/bin/adb && sudo cp fastboot /usr/bin/fastboot && sudo chmod 755 /usr/bin/adb && sudo chmod 755 /usr/bin/fastboot

Чтобы воспользоваться fastboot, например хотим мы залить получившуюся прошивку через fastboot, или же просто выполнить манипуляции с устройством через adb, надо сделать так чтобы комп "увидел" наш телефон. На винде это называется "установить usb-дрова", а у нас на линуксе это называется "законнектиться по ADB" :russian_ru:
Как это сделать:
ЛИБО
*идем в /etc/udev, выделяем папку rules.d и делаем клик по правой кнопке мыши, выбираем пункт "Открыть от администратора", вводим пароль.
*в открывшейся папке создаем файлик 51-android.rules
ЛИБО
Код
sudo gedit /etc/udev/rules.d/51-android.rules
(если вы на Ubuntu)
Код
sudo pluma /etc/udev/rules.d/51-android.rules
(если вы на Mint 15)
*вставляем в него:
Код
SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", MODE="0666", OWNER="y"

Как определить что вставлять за место "xxxx" и "y"?
Заместо "xxxx" у нас вставляется 4-х значный код вендора нашего девайса. Чтобы его узнать, отключите девайс от USB, выполните команду:
Код
lsusb

Затем подключите девайс к USB и повторите команду. Вы увидите новую строчку. Нам нужны символы после "ID" и перед ":". Например, для моего Newman N2, будет такая вот строчка:
Код
Bus 003 Device 009: ID 283b:3011

283b - и есть код вендора.
Заместо "y" - название владельца и группы в кот. он находится. Узнаем командой:
Код
id

Ну думаю тут и без объснений все будет понятно))
Пример. После всех манипуляций, применительно к моему Newman N2, я получил вот такой 51-android.rules:
Код
SUBSYSTEM=="usb", ATTR{idVendor}=="283b", MODE="0666", OWNER="scorpio92"

Затем в ~/.android/adb_usb.ini нужно добавить строку:
Код
0x"xxxx"

применительно к моему Newman N2:
Код
0x283b

И наконец добавляем в ~/.bashrc (либо вводим в терминале, если файла .bashrc нет)
Код
export PATH=${PATH}:~/sdk/tools
export PATH=${PATH}:~/sdk/platform-tools

Все. Сохраняем. Закрываем.


Спойлер (+/-) (Этап 4. Качаем исходники)
Еще немного понастраиваем))
4.1. Ставим repo
Код
mkdir ~/bin
PATH=~/bin:$PATH

Код
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

4.2. Качаем!
Ну наконец то мы все настроили! Пришло время скачать исходники андроида :happy:
Что качать дело ваше. AOSP или CyanogenMod, а может быть AOKP? Лично я рекомендую новичкам начинать с CyanogenMod. Там и косяков в коде меньше и поддержка сторонних девайсов гораздо шире.
Собственно как качать? картина дествий тут общая:
Создаем рабочий каталог
Код
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

А дальше, инициализируем repo, соединяемся с хранилищем исходников. Тут есть варианты. Наиболее распространенные:
*Официальные исходники от Google(AOSP код):
Код
repo init -u https://android.googlesource.com/platform/manifest -b <название нужной ветви>

*Другие исходники, например CyanogenMod с Github.com:
Код
repo init -u git://github.com/CyanogenMod/android.git -b <название нужной ветви>

Что такое "ветвь"? Ветвь это как бы...тут написано :D
Как выбрать ветвь? Можно инициализировать ветку master( заодно и repo обновится до самого последнего):
Код
repo init -u https://android.googlesource.com/platform/manifest

а далее получить список всех доступных ветвей;
Код
git --git-dir .repo/manifests/.git/ branch -a

Либо можно зайти к примеру на гит цианогена, скажем СЮДА и щелкнуть по кнопке branch.
К примеру, я захотел собрать CyanogenMod 10 для своего Newman N2, так вот:
Код
mkdir CM10
cd CM10
repo init -u git://github.com/CyanogenMod/android.git -b jellybean

я создам рабочую директорию и инициализирую нужную ветвь.
Далее, последний этап и самый долгий:
Код
repo sync

Вводим эту команду и ждем...
П.С. если вдруг произошел обрыв или соединение нестабильное. используйте эту команду:
Код
repo sync -f

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

Для вледельцев Nexus 7 2013(WIFI)(flo) или Nexus 7 2013(LTE)(deb) или Nexus 7(grouper) или Nexus 10(Manta) этот шаг не обязателен,они уже сразу есть в папке device,но ради уверености проверьте все ли файлы из мануала есть в папке!
Спойлер (+/-) (Этап 5. Настройка конфигурации сборки)
Ну что же вот мы и подошли к самому интересному! Здесь я как раз и постараюсь ответить на многие вопросы начинающих.
5.1. Сбор информации об устройстве.
И так, первым делом мы должны узнать технические характеристики того устройства, для кторого будем делать прошивку.
Это можно сделать найдя описание в интернете, благо сейчас есть информация практически для любого устройства. Можно заглянуть в программы-тесты, например в тот же Antutu.
Вот например что написано о моем Newman N2:
 Уменьшено на 69%
Прикрепленное изображение
720 x 1280 (133.74 КБ)

Нет, я не наврал, это не SGS3, просто стоит маскировка под него :D
Собственно то что нам нужно - это модель процессора(ЦП, CPU), разрешение экрана и модель видеоускорителя(ГП, GPU).
Далее определяемся с архитектурой ядер процессора. Собственно, она нам уже известна - в данном случае это ARM v7. Но этого мало, надо определить какая именно: Cortex A7,8,9 или A15.
Для этого гуглим название архитектуры, зная чиповку. Чип(сокет) - это те самые MTK6589, Exynos 4412, Snapdragon S4 Pro и пр. знаменитые представители своих популярных ныне семейств.
Могу порекомендовать ЭТОТ источник, а также ЭТОТ.
В результате узнаем, что мой чип Exynos 4412 построен на архитектуре ARM v7 Cortex A9. А ваш?)
Также о чипе и архитектуре процессора, написано в файле /proc/cpuinfo (для его просмотра необходимы рут-права и Root Explorer)
Самое основное мы узнали. Далее пойдут спецификации.
Узнаем что у нас с разделами. Какого формата, размера и куда монтируются.
Подключаем устройство к компьютеру и в терминале вводим команду:
Код
adb shell mount

мы получим список точек монтирования разделов, а также их файловые системы. По сути дела, нам необходимы только разделы Data, System и Cache.
Далее узнаем размеры разделов:
Код
adb shell
df

В принципе это пока что все, нам этого хватит для начала. Дальнейшую спицифику: WiFi, Bluetooth и др. модули вы можете разобрать самомстоятельно, гугл в помощь как говорится)) Да и вообще все специфику знать необязательно, т.к. не на все есть исходники и вам вероятно просто можно будет взять необходимые части из стоковой прошивки.
5.2. Создание файлов конфигурации(.mk) 
5.2.1. Создание папки девайса (device folder)
Сейчас будем создавать непосредственно конфигурацию для сборки. Если вы имеете готовые шаблоны или чьи то наработки - то вам повезло, но я в первую очередь расписываю это для тех, кто в первый раз сталкивается с этим и делает это с нуля не имея образца конфигов для такого же устройства. Что можно посоветовать - помоги сами себе поищите наработки на гитах, например зайдите в гугл и попробуйте повбивать запросы типа: <название вашего устройста> git, <название вашего устройста> github, <название чипа процессора> github. Вообще советую пользоваться именно Github.com, оттуда проще скачать исходники - просто заходите в нужный репозиторий и нажимате кнопку: "Download ZIP".
Можно также клонировать понравившийся гит:
Код
git clone git://github.com/нужный_репозиторий.git -b <название_ветки>

Это касается примеров. Не ленитесь, поищите и посмотрите как можно больше примеров. Заметите общие особенности.
Старайтесь выбирать как можно более близкий по параметрам девайс и использовать его конфиг. Именно так я и поступил со своим Newman N2 - я взял за основу конфиг от Samsung Galaxy S3.
Итак, поехали создавать структуру.
Зайдите в папку с исходниками. В папке device создайте папку с именем производителя устройства (в моем случае samsung), далее в созданной папке создайте папку с именем модели устройства (в моем случае i9300).
У меня получилось так: CM10/device/samsung/i9300
Далее создадим следующие файлы в последнем каталоге (в моем случае в CM10/device/samsung/i9300): Android.mk, AndroidProducts.mk, BoardConfig.mk, Конфиг_файл_продукта.mk, system.prop. Это минимальный набор.
Сейчас на своем примере буду рассказывать что да как заполнять. По случаю можете глянуть мой гит с конфигом, он не претендует на звание образцового, но тем не менее пойдет для понимания общей картины:
https://github.com/Scorpio92/android_device_exynos4Brothers

Создаем Android.mk, заполняем:
Код
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),<название_модели_устройства>)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

У меня так:
Код
LOCAL_PATH := $(call my-dir)
ifeq ($(TARGET_DEVICE),i9300)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif


Создаем AndroidProducts.mk, заполняем:
Код
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/<Конфиг_файл_продукта>.mk

У меня так:
Код
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/newman.mk


Создаем BoardConfig.mk, вот тут остановимся подробнее, это самый важный файл!. Помните о той информации которую мы собрали в пункте 5.1? Сейчас она нам пригодится. Заполняем:
Код
TARGET_CPU_ABI :=
TARGET_CPU_ABI2 :=
TARGET_ARCH :=
TARGET_ARCH_VARIANT :=
TARGET_ARCH_VARIANT_CPU :=
TARGET_BOARD_PLATFORM :=
TARGET_SOC :=

Как минимум должно быть это. Опять же повторюсь, все давно сделано за вас не знаете как правильно написать - и не надо! загуглите по названию чипа конфиг на гите, там все есть, для любого чипа, любой платформы.
У меня так:
Код
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_ARCH := arm
TARGET_ARCH_VARIANT := armv7-a-neon
TARGET_ARCH_VARIANT_CPU := cortex-a9
TARGET_BOARD_PLATFORM := exynos4
TARGET_SOC := exynos4x12

armeabi-v7a, arm, cortex-a9, exynos4 - вспоминаете эти строки?) Ищите конфиги по ним, все аналогично будет и у вас!
Обязательно не забываем про спецификации для каждого типа процессоров. Для них есть свои классы - их указывать обязательно! Опять же ищите примеры конфигураций процессоров. Обратите внимание на специфичные инструкции для своего процессора, такие как например NEON. Вот у меня например такие спецификации:
Код
TARGET_CPU_SMP := true
ARCH_ARM_HAVE_NEON := true
ARCH_ARM_HAVE_TLS_REGISTER := true
TARGET_GLOBAL_CFLAGS += -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
TARGET_GLOBAL_CPPFLAGS += -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp
EXYNOS4X12_ENHANCEMENTS := true
EXYNOS4_ENHANCEMENTS := true
ifdef EXYNOS4X12_ENHANCEMENTS
COMMON_GLOBAL_CFLAGS += -DEXYNOS4_ENHANCEMENTS
COMMON_GLOBAL_CFLAGS += -DEXYNOS4X12_ENHANCEMENTS
COMMON_GLOBAL_CFLAGS += -DDISABLE_HW_ID_MATCH_CHECK
endif

Собственно то, что мы сейчас разобрали это обязательные вещи, при правильно указании которых прошивка уже загрузится.
Едем дальше. Помните мы узнавали как у нас с памятью (в см. с памятью в устройстве)? Вот сейчас используем эти знания:
Код
BOARD_NAND_PAGE_SIZE := 4096
BOARD_NAND_SPARE_SIZE := 128
BOARD_FLASH_BLOCK_SIZE := 4096
BOARD_SYSTEMIMAGE_PARTITION_SIZE := размер_раздела_в_мб*1024*1024
BOARD_USERDATAIMAGE_PARTITION_SIZE := размер_раздела_в_мб*1024*1024
TARGET_USERIMAGES_USE_EXT4 := true

Первые три строчки практически везде одинаковые, последняя - смотря какая файловая система. Вот как у меня:
Код
BOARD_NAND_PAGE_SIZE := 4096
BOARD_NAND_SPARE_SIZE := 128
BOARD_FLASH_BLOCK_SIZE := 4096
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 515899392
BOARD_USERDATAIMAGE_PARTITION_SIZE := 1198522368
TARGET_USERIMAGES_USE_EXT4 := true

Можно еще указать размеры boot.img(бута) и recovery.img(рекавери), но нам это пока не надо, упрощаем себе задачу, возиться пока с ними не будем. Наша цель собрать правильный system.img - собственно сам андроид.
Дальше разберемся с флагами:
Код
TARGET_NO_BOOTLOADER := true
TARGET_NO_RADIOIMAGE := true
TARGET_NO_RECOVERY := true

Это думаю понятно, нам не нужны эти образы, в данном случае пока что не нужны.
Т.к. у нас нет никаких исходников(предположим), у меня вот так например, то соотвтественно будем портировать, а не собирать из исходников нужные модули. Поэтому делаем как минимум так:
Код
BOARD_USES_GENERIC_AUDIO := true
USE_CAMERA_STUB := true

Т.е. говорим что мы не имеем исходников аудио и камеры.
Далее добавим еще несколько флагов.
Код
DISABLE_DEXPREOPT := true
- Включает деодекс по-умолчанию
Код
BOARD_USE_LEGACY_TOUCHSCREEN := true
- пригодится для портирования драйвера тач-скрина
Тааакс....ну пока это все. Что бы просто запустить сборку этого хватит, но естественно кое-что работать не будет. В последствии я еще раз вернусь к BoardConfig, а сейчас едем дальше.

Создаем Конфиг_файл_продукта.mk. 
Ну для начала придумайте ему имя. У меня он называется newman.mk. Придумали? Тогда поехали заполнять(заполнять желательно в такой же последовательности):
Код
LOCAL_PATH := device/ папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства

Это переменная для сокращения прописываемоего пути. Полезная вещь.
У меня такой путь:
Код
LOCAL_PATH := device/samsung/i9300

Далее прописываем разрешение экрана под которое будут собираться приложения и фреймворк:
Код
PRODUCT_AAPT_CONFIG :=ldpi mdpi hdpi xhdpi
- практически все возможные разрешения от мала до велика...
Код
PRODUCT_AAPT_PREF_CONFIG := <разрешение экрана вашего устройтсва>

Тут если сомниваетесь, то отталкивайтесь от показателя плотности точек(dpi). Помните циферку dpi из Antutu? Теперь гляньте в табл.1 ТУТ и вам станет понятно что писать.
Мое разрешение экрана: 1280х720, HD, плотность(dpi):320, следовательно:
Код
PRODUCT_AAPT_PREF_CONFIG := xhdpi

Далее указываем папочку для переопределения исходных конфигураций(overlay):
Код
DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay

Заодно и создайте ее сразу. Поговорим о ней сразу после обсуждения текущего конфига.
Далее укажем привязку, время и дату сборки:
Код
PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0

Далее необходимо взять со стока ядро(zImage), не путать с boot.img!!! Как разобрать boot.img на ядро и рамдиск, ищите на форуме, тем много, все написано. Указываем где лежит наше ядро:
Код
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/zImage:kernel

Т.е. положим его рядом с конфигами (device/ папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства/zImage).
Далее пропишем пакеты которые нужно будет собрать(мимнимальный набор, всякие там живые обои и пр. если захотите добавьте сами):
Код
PRODUCT_PACKAGES += \
    com.android.future.usb.accessory \
    libnetcmdiface \
    Stk
    static_busybox \
    make_ext4fs \
    setup_fs

Далее добавляем хардварные файлы, очень важно, список их можно уточнить, все зависит от того какое железо у вас в девайсе (датчики и пр.):
Код
PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \
    frameworks/native/data/etc/android.hardware.camera.autofocus.xml:system/etc/permissions/android.hardware.camera.autofocus.xml \
    frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:system/etc/permissions/android.hardware.camera.flash-autofocus.xml \
    frameworks/native/data/etc/android.hardware.camera.front.xml:system/etc/permissions/android.hardware.camera.front.xml \
    frameworks/native/data/etc/android.hardware.camera.xml:system/etc/permissions/android.hardware.camera.xml \
    frameworks/native/data/etc/android.hardware.location.gps.xml:system/etc/permissions/android.hardware.location.gps.xml \
    frameworks/native/data/etc/android.hardware.location.xml:system/etc/permissions/android.hardware.location.xml \
    frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:system/etc/permissions/android.hardware.sensor.accelerometer.xml \
    frameworks/native/data/etc/android.hardware.sensor.compass.xml:system/etc/permissions/android.hardware.sensor.compass.xml \
    frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:system/etc/permissions/android.hardware.sensor.gyroscope.xml \
    frameworks/native/data/etc/android.hardware.sensor.light.xml:system/etc/permissions/android.hardware.sensor.light.xml \
    frameworks/native/data/etc/android.hardware.sensor.proximity.xml:system/etc/permissions/android.hardware.sensor.proximity.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.xml:system/etc/permissions/android.hardware.touchscreen.multitouch.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \
    frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
    frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
    frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml \
    frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \
    frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml \
    frameworks/native/data/etc/android.software.sip.xml:system/etc/permissions/android.software.sip.xml \
    frameworks/native/data/etc/handheld_core_hardware.xml:system/etc/permissions/handheld_core_hardware.xml \
    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml

Далее вызываем проприетарный конфиг(копирование файлов со стока, на которых нет исходников):
Код
$(call inherit-product-if-exists, vendor/папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства/название_конфига_какое_душе_угодно.mk)

У меня это:
Код
$(call inherit-product-if-exists, vendor/samsung/i9300/newman.mk)

Пока что просто создайте такую структуру. О вендорной папке с проприетариями мы поговорим в пункте 5.2.2. А сейчас дальше.
Далее база которая собирается по умолчанию, основа андроида + языковые пакеты и gps конфиг:
Код
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
$(call inherit-product, device/common/gps/gps_us_supl.mk)

Ну и наконец последний штрих - указываем реквизиты))
Код
PRODUCT_NAME := имя_Конфига_файла_продукта
PRODUCT_DEVICE := имя_папки_с_именем_модели_устройства
PRODUCT_BRAND := имя_папки_с_именем_производителя_устройства
PRODUCT_MANUFACTURER := имя_папки_с_именем_производителя_устройства
PRODUCT_MODEL := ну_а_тут_модельку_устройства_пишем

Например, как у меня:
Код
PRODUCT_NAME := newman
PRODUCT_DEVICE := i9300
PRODUCT_BRAND := samsung
PRODUCT_MANUFACTURER := samsung
PRODUCT_MODEL := GT-I9300


Создаем system.prop
Этот файлик с некоторыми конфигами, которые затем пойдут в файл build.prop. Наверняка про такой слышали))
Для начала возьмем со стока только самое необходимое, не надо сразу пихать туда всякие твики и пр.!
Первым делом добавим строки инициализации радиомодуля(ищем в своем build.prop со стока аналогичное):
Код
rild.libpath=/system/lib/lib***ril***.so
rild.libargs=-d /dev/***

Далее прописываем параметры Dalvik-машины:
Код
dalvik.vm.execution-mode=int:jit
- включаем JIT
Далее прописываем все те же параметры dalvik.vm.*** что и на стоке, от себя ничего придумывать не надо!
Прописываем параметр плотности экрана:
Код
ro.sf.lcd_density=

Указываем интерфейс Wi Fi:
Код
wifi.interface=wlan0

Параметры USB:
Код
persist.sys.usb.config=mass_storage,adb

Параметр OpenGL, обязательно!
Код
ro.opengles.version=131072

Ну и параметры добавляющие производительность:
Код
debug.sf.hw=1
video.accelerate.hw=1
debug.performance.tuning=1
debug.composition.type=gpu
debug.gralloc.vsync=0
hwui.render_dirty_regions=false
media.stagefright.enable-player=true
media.stagefright.enable-meta=false
media.stagefright.enable-scan=false
media.stagefright.enable-http=true
media.stagefright.enable-aac=true
media.stagefright.enable-qcp=true

Внимательно посмторите остальные параметры со стока, также это могут быть парметры вида:
Код
ro.product.camera=
ro.bt.bdaddr_path=
persist.rild.nitz***=
mobiledata.interfaces=
ro.ril.baseband=

С конфигом устройства в принципе все. Можно добавить сборку нужных пакетов по вкусу + дописать вызов нужных .mk...Но пока я думаю оно вам не надо)))
Папка overlay
Песня отдельная конечно. Это папка для переопределения исходных параметров. Обычно в ней меняются пути монтирования карты памяти, назввания сетевых интерфейсов и просто корректируются такие дефолтные параметры как яркость, звук и пр. Сейчас разберемся с этим.
Первым делом необходимо взять со стока файл framework-res.apk и декомпилировать его. Как? ТУТ написано.
Далее в папке overlay создаем структуру: frameworks/base/core/res/res/values
У меня к примеру вот так: device/samsung/i9300/overlay/frameworks/base/core/res/res/values
Там создаем файл config.xml со след. содержимым:
Код
<?xml version="1.0" encoding="utf-8"?>
<resources>

</resources>

Собственно пространство между тэгом resources мы сейчас будем с вами заполнять, используя значения со стока.
Далее шагаем по пути: <папка с разобранным фреймом>/res/values и открываем arrays.xml.
Открываем мой оверлейный config.xml и просто аналогично заменяем мои значения в конфигах на свои из стокового arrays.xml.
Например. Нам нужно записать в оверлейный конфиг(переопределить) параметр автояркости(если у вашего устройства есть датчик освещения конечно):
Код
<integer-array name="config_autoBrightnessLevels">
        <item>...</item>
                     ...
        <item>...</item>
    </integer-array>

Копируем название параметра - config_autoBrightnessLevels и ищем его в стоковом arrays.xml. У меня в стоке прописан массив таких вот значений:
Код
<item>3</item>
        <item>150</item>
        <item>3000</item>

Соответсвенно в моем оверлейном конфиге появится вот такое переопределения параметра автояркости:
Код
    <integer-array name="config_autoBrightnessLevels">
        <item>3</item>
        <item>150</item>
        <item>3000</item>
    </integer-array>

Ну я думаю дальше понятно, аналогично поступаем с остальными параметрами. Какие параметры менять - смотрим в моем примере, а также можно покопаться в сторонних, но я думаю моего хватит, у меня все самое основное.
Дальше будем разбираться с монтированием карт(ы) памяти.
Тут можно сделать проще: перенести файл storage_list.xml из <папка с разобранным фреймом>/res/xml/ в .../overlay/frameworks/base/core/res/res/xml/
А теперь давайте вернемся к BoardConfig.mk. Заметьте возвращаться придется много раз, больше чем Арнольд Шварценеггер)))
Добавим следующее:
Код
TARGET_USE_CUSTOM_LUN_FILE_PATH :=

Это у нас параметр драйвера карты памяти кот. нах в ядре. Путь у всех схожий.
Либо
Код
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/class/android_usb/android0/f_mass_storage/lun/file"
- в старых девайсах такое обычно встречается
Либо
Код
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/бла-бла-бла-usbgadget/gadget/lun%d/file"
- в новых девайсах
Глянуть это все можно прям с устройтсва, при наличии root-прав и Root Explorer,а.
У меня так:
Код
TARGET_USE_CUSTOM_LUN_FILE_PATH := "/sys/devices/platform/s3c-usbgadget/gadget/lun%d/file"

Еще, если у вас несколько карт памяти, допусти внутренняя и внешняя, то потребуется еще и этот параметр:
Код
BOARD_VOLD_EMMC_SHARES_DEV_MAJOR := true

Ну я думаю пока с конфигом девайса и оверлеем достаточно. Это база, дальше смотрите примеры сами и добавляйте что вам по душе. Можно также переопределить настройки пакетов.
5.2.2. Создание папки вендора
Предлагаю ознакомится с мои примером на гите: https://github.com/Scorpio92/android_vendor_exynos4Brothers
Тут у нас будут лежать проприетарные файлы, т.е. те элементы прошивки, на которые нет исходников. Это могут быть бинарники, библиотеки, конфиги(*.conf, *.xml), скрипты(*.sh).
В предыдущем пункте мы уже создали необходимую структуру: vendor/папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства
У меня это выглядит след. образом: vendor/samsung/i9300
Необходим еще .mk файл в котором будет прописано копирование проприетариев и который будет вызываться из device/папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства/Конфиг_файл_продукта.mk
Сперва создайте файл конфига, у меня это newman.mk.
Далее для удобства, в том же каталоге создайте папку system, а в ней папки: app, bin, etc, lib, usr, vendor, xbin.
Теперь нам необходимо эти папки наполнить, т.е. взять из стоковой прошивки необходимые файлы и положить их в соответсвующие папки в вендорную папке. Как это сделать и что брать?
Распакуйте system.img со стока либо возьмите прошивку для рекавери формата *.zip и распакуйте ее.
Для начала пара советов:
*в качестве донора - оф. прошивки с которой будете тащить проприетарии, берите самую последнюю оф. прошивку.
*если ваша последняя оф. прошивка не выше android 2.3, то без исходников вам не удастся нормально запустить android 4.x, если же исходников на ваш девайс вообще не существует в свободном доступе, то ищите максимально похожий на ваш девайс и берите что нужно с него.
*не пытайтесь сразу перепрыгнуть несколько версий андроида и собрать самую последнюю версию. Т.е. если ваша последняя оф. прошивка базируется на андроиде 4.1, то не пытайтесь сразу собрать 4.2 или 4.3, у вас ничего не получится, а если даже и повезет, то работать будет очень криво! Возьмитесь за прошивку, которая будет основываться на той же версии андроида что и ваша оф. прошивка. Например возьмите и соберите CyanogenMod10.
*Добейтесь максимальной совместимости и выясните базу(спсиок проприетариев) необходимую для дальнейшего продвижения.
*для выяснения зависимостей между библиотеками и бинарниками очень поможет программа IDA. Скачать можно ТУТ.
*ну и конечно глядите примеры на гитах, пробуйте, экспериментируйте!

А теперь поговорим о самих проприетариях, какие файлы со стока надо тащить?
Нам понадобятся проприетарии графики, vold, тачскрина, key map, звука, камеры, кодеков, bluetooth, wi-fi, ril, gps, сенсоров. Самое первое что нужно перенести это: графика, vold, тачскрин, key map.
Поговорим о них по-отдельности.
Графика
Это в первую очередь драйвера видеоускорителя, а также библиотеки HAL(system/lib/hw): copybit(для андроид 2.3 и ниже), hwcomposer, gralloc.
С HAL в принципе все понятно, для всех устройств их список выглядит примерно так(на своем примере):
Код
system/lib/hw/hwcomposer.smdk4x12.so
system/lib/hw/gralloc.smdk4x12.so

Где smdk4x12, как вы поняли - платформа на которой базируется ваше устройство.
С драйверами видеоускорителя чуть сложнее, в первую очередь это библиотеки OpenGL и конфиг egl.cfg, а также нек. специфичные библиотеки(приведу с возможными варинтами):
Код
system/lib/egl/egl.cfg
system/lib/libEGL***.so
system/lib/libGLES***.so
system/lib/libgsl.so
system/lib/libsc***.so
system/lib/libOpenVG.so
system/lib/libUMP.so
system/lib/lib<специфика, например Mali, Adreno и т.д.>.so
:system/lib/egl/libq3dtools***.so
system/lib/egl/eglsubAndroid.so
system/etc/firmware/yamato***.fw
system/etc/***_config.txt

Например в моем случае(Android 4.1, Mali-400MP) для работы графики я тащил:
Код
system/lib/hw/hwcomposer.smdk4x12.so
system/lib/hw/gralloc.smdk4x12.so
system/lib/egl/egl.cfg
system/lib/egl/libEGL_mali.so
system/lib/egl/libGLESv1_CM_mali.so
system/lib/egl/libGLESv2_mali.so
system/lib/libEGL.so
system/lib/libGLES_trace.so
system/lib/libGLESv1_CM.so
system/lib/libGLESv2.so
system/lib/libMali.so
system/lib/libUMP.so
system/lib/libion.so
system/lib/libion2.so


Vold
Этот сервис отвечает за монтирование КП. Частично мы с ним уже разобрались: прописали параметры lun-файла в BoardConfig, а также прописали точки монтирования в overlay.
Осталось только добавить файл из стока: system/etc/vold.fstab
Все, теперь наша(и) КП должны монтироваться!

Тачскрин
Помните куржочек-курсор на экране в CyanogenMod? Причина по которой он появляется - отсутствие драйвера тачскрина. Портировать его просто, необходимо взять из стока:
Код
/system/usr/idc/<все файлы *.idc, кроме qwerty и qwerty2>.idc


Key map
Чтобы правильно распознавались действия по нажатию на кнокпи девайса, необходима карта как физических так и виртуальных кнопок девайса, она есть в:
Код
system/usr/keylayout/<AVRCP, Generic, все кроме qwerty>.kl


Звук
Обычно это одна-две библиотеки(в Андроид ICS и выше)
Код
system/lib/hw/audio.primary.<platform>.so
system/lib/hw/audio_policy.<platform>.so

В Андроид 2.3 и ниже это:
Код
system/lib/libaudio.so


Камера
Аналогично как и со звуком. В Андроид ICS и выше:
Код
system/lib/hw/camera.<platform>.so

В Андроид 2.3 и ниже это:
Код
system/lib/libcamera.so

В некоторых случаях может понадобиться библиотека:
Код
system/lib/libcamera_client.so

Также может потребоваться специфика. Ее советую выяснять с помощью программы IDA.

Кодеки
Следующий элемент который тесно связан с камерой. Нет кодеков - не будет работать видеозапись в камере и не будет проигрываться видео. Обычно используются OpenMax кодеки.
Код
system/lib/omx/*.so

или
Код
system/lib/lib***OMX***.so

Также иногда производители специально патчат стандартную библиотеку андроид - libstagefright.so. Возможно потребуется перенос со стока всех библиотек libstagefright***.so, т.к. они тоже могут быть пропатчены.

Bluetooth
Для работы необходима связка бинарников, библиотек, конфигов и возможно скриптов инициализации.
Обычно сам радио модуль это файл *.hcd, который располагается либо в system/bin либо в system/etc/bt. Там же может находится скрипт инициализации, но чаще всего он скрыт в рамдиске(ramdisk).
Еще может понадобиться:
Код
system/etc/bluetooth/main.conf


Wi-Fi
Здесь ситуация практически однотипная:
Код
system/bin/wpa_supplicant

И
Код
system/etc/wifi/*.bin, cal, conf, txt

Либо
Код
system/etc/wl/*.bin, cal, conf, txt

Также вероятно потребуется библиотека libhardware_legacy.so.

RIL
Это библиотеки отвечающие за радиомодуль. Если все ril библиотеки на месте значит будет работать мобильная сеть и интернет.
Вот здесь как никогда пригодится IDA, бывает зависимостей куча, а бывает нужно всего пара библиотек:
Код
system/lib/libril.so
system/lib/libreference-ril.so

Обязательно бинарник rild:
Код
system/bin/rild

+ возможно еще какой нибудь бинарник, ищите по "gsm" в system/bin.

GPS
Обычно в ICS и выше, "железная" часть как всегда перенесена в HAL, поэтому для работы GPS потребуется всего-лишь:
Код
system/lib/hw/gps.<platform>.so

В Андроид 2.3 и ниже:
Код
system/lib/libgps.so
system/lib/libloc***.so

В любом случае пригодятся конфиги:
Код
system/etc/gps.conf
system/etc/gpsconfig.xml

Также среди бинарников может спрятаться и бинарник, отвечающий за GPS, но это как говорится - специфика.

Сенсоры
Датчики освещенности, гироскоп, компас и т.д. все это относится к сенсорам. И обычно представлены:
Код
system/bin/akmd***
system/lib/hw/sensors.<platform>.so


Ну я думаю кратко о проприетариях я вам рассказал, примерный их список у вас есть и вы их уже раскидали по подкаталогам папки system в вендорной папке. Теперь добавим копирование этих файлов в .mk файл вендора. Это очень просто.
Добавляем в файл переменную:
Код
LOCAL_PATH := vendor/папка_с_именем_производителя_устройства/папка_с_именем_модели_устройства

Она нужна для сокращения написания пути. У меня вот так:
Код
LOCAL_PATH := vendor/samsung/i9300

Дальше для каждого проприетарного файла прописываем:
Код
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/путь_до_файла/проприетарный_файл:system/.../проприетарный_файл \

Например:
Код
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/system/lib/libril.so:system/lib/libril.so \

Обратите внимание на синтаксис, везде в .mk файлах где имеет место перечисление, ставится символ "\". На последнем элементе списка он не ставится, например:
Код
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/system/lib/libril.so:system/lib/libril.so \
    $(LOCAL_PATH)/system/lib/libreference-ril.so:system/lib/libreference-ril.so \
    $(LOCAL_PATH)/system/bin/rild:system/bin/rild \
   $(LOCAL_PATH)/system/bin/gsm0710muxd:system/bin/gsm0710muxd

или
Код
PRODUCT_PACKAGES += \
    Galaxy4 \
    HoloSpiralWallpaper \
    LiveWallpapers \
    LiveWallpapersPicker \
    MagicSmokeWallpapers \
    NoiseField \
    PhaseBeam \
    VisualizationWallpapers \
    librs_jni

Собственно о вендорной папке ВСЕ!


Спойлер (+/-) (Этап 6. Сборка проекта)
Все настроено, все готово. Ну так поехали!
Для сборки перейдите в папку с исходниками:
Код
cd WORKING_DIRECTORY

И дальше дайте команду на сборку. Если хотите собрать обычную сборку, пользовательскую, как говорится "в массы", то используйте эту команду:
Код
make -j* PRODUCT-<название_продукта>-user dist

если хотите собрать инженерную сборку, для тестов:
Код
make -j* PRODUCT-<название_продукта>-eng

Вместо * указывайте количество потоков процессора у вашего ПК + 1. Например у меня Intel Core i5 3570k - 4 ядра, по 1 потоку на каждое, поэтому в моем случае команда на сборку будет выглядить след. образом:
Код
make -j5 PRODUCT-newman-user dist

Ну и наконец последнее действие: жмем Enter))) А дальше кому как больше по душе: :russian: или :rabbi:
На выходе(папка_с_исходниками/out/target/product/название_продукта/), если все сложится благополучно и сборка пройдет без ошибок, получите system.img и возможно нек. др. образы, смотря что указали в BoardConfig.
Если возникнут ошибки - гуглите, ищите решение(в шапке), спрашивайте тут, удачи!
Что делать с system.img расскажу в след. главе.


Спойлер (+/-) (Этап 7. Подготовка к прошивке. Тестирование)

7.1. Прошивка получившейся сборки через fastboot или recovery
Ну допустим все удачно собралось. Поздравляю! Теперь необходимо залить полученную сборку на телефон, но прежде выполним еще одно действие: подготовим рамдиск(ramdisk).
Распаковываем boot.img. Как его распаковывать, я рассказывать не буду, могу лишь порекомендовать одну известную кухню для линукса с XDA - dsixda's Android Kitchen. Получаем ramdisk и zImage(ядро).
Если же у вас рамдиск формата uboot, например у вас китайский телефон как у меня и нет boot.img как такового(рамдиск и ядро прошиваются отдельно), то качаем Прикрепленный файлunzramdisk.sh.tar.gz ( 367 байт )
. Распаковываем скрипт в удобное для вас место, убеждаемся что разрешен запуск этого скрипта как программы, ложим рядом ramdisk-uboot.img и в терминале даем команду:
Код
./unzramdisk.sh -c ramdisk-uboot.img

Далее и идем в папку ramdisk или boot.img-ramdisk(смотря какой метод распаковки использовали) и открываем init.rc, также открываем <папка_с_исходниками>/out/target/product/название_продукта/root/init.rc и из него копируем значение переменной BOOTCLASSPATH в тот файл init.rc, который из распакованного рамдиска. Т.е. например меняем строкой(из CyanogenMod 10) вида:
Код
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar

строку из стокового init.rc.
Сохраняем изменения и собираем рамдиск обратно. Для рамдиска формата uboot, сборка выглядит примерно след. образом:
Код
cd ramdisk
find . | cpio -o -H newc | gzip > ../ramdisk-out.cpio.gz
cd ..
mkimage -A ARM -O Linux -T ramdisk -C none -a 0x******** -e 0x******** -n ramdisk -d ./ramdisk-out.cpio.gz ramdisk.img

******** - заголовок рамдиска в HEX-редакторе.
Рамдиск готов. Если нужно, объединяем его с ядром в boot.img.
После этого можно прошивать. Шить можно 2-мя способами: через fastboot и через рекавери. Тут могу дать совет: большие образы system.img > 200Мб не стоит шить через fastboot, лично у меня они не шьються! Если образ < 200Мб, то можно спокойно шить. Команда (для линукса):
Код
fastboot flash ramdisk <путь_до_образа>/образ.img

если не работает эта команда(ПК видит устройство), то попробуйте эту команду:
Код
fastboot -i 0x<код_вендора> flash ramdisk <путь_до_образа>/образ.img

П.С.:
*код вендора - тот же что когда мы настраивали ADB
*чтобы не прописывать путь к образу просто перекиньте его в окно терминала.

Теперь поговорим о прошивке через рекавери. Нам необходим update-архив формата zip со скриптом update-script. Тема по update-script есть ТУТ.
Наверняка местные ромоделы уже собирали для вашего девайса прошивки для рекавери, можно взять их, можно сделать самому на основе update.zip от других похожих аппаратов, главное вписать правильные пути монтирования разделов(их берем из пункта 5.1), например:
Код
mount("ext4", "EMMC", "/dev/block/mmcblk0p2", "/system");

ext4, "/dev/block/mmcblk0p2" - знакомая нам информация из пункта 5.1.
Также обратите внимание на правильную расстановку разрешений(permissions) на файлы и на все ли файлы проставлены разрешения, особенно это актуально для того же CyanogenMod, в например есть папка init.d со скриптами, поэтому проставляем в update-script отдельно разрешение для папки init.d и ее содержимого:
Код
set_perm_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");
set_perm(0, 0, 0755, "/system/etc/init.d");

Проверьте праильность написания имен файлов и синтаксис скрипта, из-за этого возможно возникновение ошибок при прошивке(status 7 и прочие).
В начале скрипта я рекомендую прописать форматирование разделов, полный вайп, для очистки от всего что было ранее(иначе возможны проблемы с запуском прошивки из-за хвостов старой прошивки):
Код
format("ext4", "EMMC", "/dev/block/mmcblk0p*", "0");

Скрипт готов? сохраняем, пихаем его в архив и прошиваем.

7.2. Тестирование
Тут все просто, когда нужно снять лог (допустим лог загрузки девайса), вводим командув терминале:
Код
adb logcat

По экрану побегут куча строк да еще и быстро...читать не удобно, не правда ли?) Это решается записью лога в файл:
Код
adb logcat > log.txt

В результате весь лог осядет в файле и вы можете его потом спокойно посмотреть.
П.С. файл с логом появится в той директории, откуда вы запустили эту команду!
Практически все ошибки в логе легко "гуглятся", либо понятны и так. Так что на этом останавливаться не будем. Главное - не останавливайтесь вы! Если не получается устранить проблему - пробуйте, пытайтесь - в конце концов ваши старания будут вознагграждены и все обязательно получиться!
Могу посоветовать сделать мини-апдейт архив для рекавери, в который пихать тестируемый модуль и прошивать его по ходу пьесы, чтобы не перешивать заново все прошивку.
Также можно глядеть системные логи на самом устройстве, тут:
Код
data/system/dropbox

Обычно там скапливаются логи крахов приложений или сервисов.


Ну вот пока и все, для начального старта думаю хватит! После того как полностью запустите все на своей первой собранной прошивке, можно браться за ядро. По возможности, если для похожего девайса имеются полные исходники, можно взять исходники той же библиотеки HAL audio.<platform>.so или любой другой, собрать из них нужные библиотеки и заменить ими проприетарные.
Удачи!