
Как-то без должного внимания остался факт открытия BQ исходного кода для своих планшетов и читалок. Между тем, в линейке BQ присутствуют модели Darwin, Verne и Voltaire - планшеты, построенные на платформе RK2818. Насколько я понимаю, для RK2818 это один из первых открытых релизов исходников ядер.
Часто производители не спешат обнародовать попадающие под действие лицензии GPL ПО, однако петиции энтузиастов всё-таки работают (отличный пример - эпопея с прошивкой для телевизоров Samsumg C-серии).
Так что стучите - и вам откроют!
Да, платформа старая. Да, на горизонте процессор RK3018.
Но теперь пресловутый kernel.img перестанет быть крепким орешком.
Ссылка: RK2818 kernel source code
Пара слов о попытке компиляции:
В Makefile нет цели для сборки kernel.img, зато есть скрипт sh_new
Коррекция видеодрайвера под Bq Voltaire:
cp drivers/video/logo/STM7UH/logo_stm7uh_clut224.ppm \ drivers/video/logo/logo_oem_clut224.ppm -f rm drivers/video/logo/logo_oem_clut224.c rm drivers/video/logo/logo_oem_clut224.o
Коррекция .config и компиляция:
make STM7UH_defconfig make
Сборка готового ядра:
./mkkrnlimg arch/arm/boot/Image kernel.img.tmp cat kernel.img.tmp System.map > kernel.img
Формат kernel.img для rk2818
Устройства, реализованные на RK2818 можно условно разделить на два типа:1. Работающие на частоте 600mhz и выше. Таких аппараты часто работают с SDK2-подобным форматом ядра (boot.img = zImage + initramfs-cpio)
2. Зажатые на ~300mhz (Archos 70b ereader, Bq Voltaire и масса китайских девайсов). Здесь используется свой собственный, скудно документированный формат.
Утилита mkkrnlimg подписывает несжатое ядро (arch/arm/boot/Image) специальным образом:
./mkkrnlimg arch/arm/boot/Image kernel.img.tmp
Ядро склеивается с таблицей адресов System.map
cat kernel.img.tmp System.map > kernel.img
При распаковке прошивки утилитой rkunpack (на AFPTool не сработает) видно следующее:

kernel.img-raw - несжатое ядро (т.е. файл arch/arm/boot/Image поcле компиляции)
kernel.img-symbol - таблица адресов (System.map поcле компиляции)
Результат работы утилиты mkkrnlimg:

dword 0x4C4E524B - маркер-идентификатор KRNL
dword 0x0045D2BC - размер ядра без таблицы адресов
Т.е. mkkrnlimg по функционалу идентична утилите rkcrc из комплекта rkutils, запускаемой с ключом "-k":
./rkcrc -k kernel.img-raw kernel.img-signed cat kernel.img-signed kernel.img-symbol > kernel.img
При проверке такие ядра полноценно функционировали.
Ох щи...
А вот заставить Bq Voltaire работать на ядре, собранном из исходников мне не удалось. Пока получаю одни бутлупы. Использовал тулчейны arm-eabi-4.4.3, arm-eabi-4.4.0 и от codesourcery. Варьировал опции компиляции.
Непонятно зачем в архиве с исходниками тулза mkbootimg, склеивающая ядро с рамдиском. Формат ядра правильный и всяким ramdisk-boot там не место.
В темах англоязычных форумах уже как месяц молчание.
Скорее всего упускаю из вида что-то очевидное.
- ЧЯНТД?