Комментарии (2)
Конфигурация ядра для Sailfish OS
Самые, как оказалось проблемы со сборкой Sailfish OS связаны с fixup-mountpoints и сборкой ядра. Ну чтож...давайте начнём с последнего. Инструкция по настройке ядра для Sailfish OS под катом
Сперва-наперво нам нужно узнать, с каким конфигом собирается наше ядро для андройда.
Для этого идём в $ANDROID_ROOT/device/$VENDOR/$DEVICE и в одном из конфигов ищем KERNEL_DEFCОFIG или TARGET_KERNEL_CONFIG
Для Nexus 5 оно, например находится тут. Там же можно узнать, где у нас ядро лежит, но обычно это $ANDROID_ROOT/kernel/$VENDOR/$DEVICE
Далее, через HADK (ну вы помните нашу матрёшку HOST-SDK-HADK) создаёте .config для ядра.
Как же правильно?
Дальше: наш .config всё равно перезапишется при пересборке. Так что, чтобы его не потерять копируем его в папочку $ANDROID_ROOT/$VENDOR/$DEVICE/arch/arm/configs/$DEVICE_sf_defconfig и меняете переменную KERNEL_DEFCОFIG или TARGET_KERNEL_CONFIG на это название. Чистим папочку ядра командой
Сперва-наперво нам нужно узнать, с каким конфигом собирается наше ядро для андройда.
Для этого идём в $ANDROID_ROOT/device/$VENDOR/$DEVICE и в одном из конфигов ищем KERNEL_DEFCОFIG или TARGET_KERNEL_CONFIG
Для Nexus 5 оно, например находится тут. Там же можно узнать, где у нас ядро лежит, но обычно это $ANDROID_ROOT/kernel/$VENDOR/$DEVICE
Далее, через HADK (ну вы помните нашу матрёшку HOST-SDK-HADK) создаёте .config для ядра.
Код BASH:
Вот мы создали полный конфиг ядра для андройд девайса. Проверим, подходит ли он для Sailfish OS
HABUILD_SDK $ cd $ANDROID_ROOT/kernel/$VENDOR/$DEVICE #тут меняем на путь к Вашему ядру ARCH=arm make KERNEL_CONFIG #тут KERNEL_CONFIG заменяем на тот что нашли выше
Код BASH:
Ну естественно не подходит, видим кучу предупреждений и ошибок. Ошибки надо исправить ВСЕ! Предупреждения надо минимизировать. Как это делать? Самая главная ошибка тупо все необходимые модули ядра запихнуть в .config ТАК ДЕЛАТЬ КАТЕГОРИЧЕСКИ НЕЛЬЗЯ! Некоторые опции зависят от других опций и просто будут сброшены при проверке конфига.
HABUILD_SDK $ ./$ANDROID_ROOT/hybris/mer-kernel-check/mer_verify_kernel_config $ANDROID_ROOT/kernel/$VENDOR/$DEVICE/.config
Как же правильно?
Код BASH:
И поочерёдно ищем все параметры и от кого они зависят и включаем - кнопочка "" Вам в помощь. После того, как закончили перепроверяем ещё раз - подходит ли нам конфиг.
HABUILD_SDK $ ARCH=arm make menuconfig
Код BASH:
Если всё без ошибок, то радуемся и проверяем, нет ли в конфиге параметра CONFIG_CMDLINE, если есть, то ПРИПИСЫВАЕМ к нему " selinux=0 audit=0" Ещё раз! Не переписываем, а дописываем! Если же его нет, то ищем там, где мы нашли конфиг ядра строчку BOARD_KERNEL_CMDLINE там опять таки же ДОПИСЫВАЕМ " selinux=0 audit=0" сохраняем и откладываем в сторону.
HABUILD_SDK $ ./$ANDROID_ROOT/hybris/mer-kernel-check/mer_verify_kernel_config $ANDROID_ROOT/kernel/$VENDOR/$DEVICE/.config
Дальше: наш .config всё равно перезапишется при пересборке. Так что, чтобы его не потерять копируем его в папочку $ANDROID_ROOT/$VENDOR/$DEVICE/arch/arm/configs/$DEVICE_sf_defconfig и меняете переменную KERNEL_DEFCОFIG или TARGET_KERNEL_CONFIG на это название. Чистим папочку ядра командой
Код BASH:
И собираем hybris-hal
HABUILD_SDK $ ARCH=arm make mrproper
случаем не надо кросс-компилером его собирать? т.е.
ARCH=arm CROSS_COMPILE=arm-linux-androidkernel- make menuconfig
или типа того? какой там точный триплет надо...
source build/envsetup.sh и lunch target всё уже само настраивается