Конфигурация ядра для Sailfish OS

Самые, как оказалось проблемы со сборкой Sailfish OS связаны с fixup-mountpoints и сборкой ядра. Ну чтож...давайте начнём с последнего. Инструкция по настройке ядра для Sailfish OS под катом
Конфигурация ядра для 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 для ядра.

Код BASH:
  1. HABUILD_SDK $
  2. cd $ANDROID_ROOT/kernel/$VENDOR/$DEVICE #тут меняем на путь к Вашему ядру
  3. ARCH=arm make KERNEL_CONFIG #тут KERNEL_CONFIG заменяем на тот что нашли выше
Вот мы создали полный конфиг ядра для андройд девайса. Проверим, подходит ли он для Sailfish OS

Код BASH:
  1. HABUILD_SDK $
  2. ./$ANDROID_ROOT/hybris/mer-kernel-check/mer_verify_kernel_config $ANDROID_ROOT/kernel/$VENDOR/$DEVICE/.config
Ну естественно не подходит, видим кучу предупреждений и ошибок. Ошибки надо исправить ВСЕ! Предупреждения надо минимизировать. Как это делать? Самая главная ошибка тупо все необходимые модули ядра запихнуть в .config ТАК ДЕЛАТЬ КАТЕГОРИЧЕСКИ НЕЛЬЗЯ! Некоторые опции зависят от других опций и просто будут сброшены при проверке конфига.

Как же правильно?
Код BASH:
  1. HABUILD_SDK $
  2. ARCH=arm make menuconfig
И поочерёдно ищем все параметры и от кого они зависят и включаем - кнопочка "" Вам в помощь. После того, как закончили перепроверяем ещё раз - подходит ли нам конфиг.

Код BASH:
  1. HABUILD_SDK $
  2. ./$ANDROID_ROOT/hybris/mer-kernel-check/mer_verify_kernel_config $ANDROID_ROOT/kernel/$VENDOR/$DEVICE/.config
Если всё без ошибок, то радуемся и проверяем, нет ли в конфиге параметра CONFIG_CMDLINE, если есть, то ПРИПИСЫВАЕМ к нему " selinux=0 audit=0" Ещё раз! Не переписываем, а дописываем! Если же его нет, то ищем там, где мы нашли конфиг ядра строчку BOARD_KERNEL_CMDLINE там опять таки же ДОПИСЫВАЕМ " selinux=0 audit=0" сохраняем и откладываем в сторону.

Дальше: наш .config всё равно перезапишется при пересборке. Так что, чтобы его не потерять копируем его в папочку $ANDROID_ROOT/$VENDOR/$DEVICE/arch/arm/configs/$DEVICE_sf_defconfig и меняете переменную KERNEL_DEFCОFIG или TARGET_KERNEL_CONFIG на это название. Чистим папочку ядра командой

Код BASH:
  1. HABUILD_SDK $
  2. ARCH=arm make mrproper
И собираем hybris-hal
Комментарии (2)
  1. > ARCH=arm make menuconfig

    случаем не надо кросс-компилером его собирать? т.е.

    ARCH=arm CROSS_COMPILE=arm-linux-androidkernel- make menuconfig

    или типа того? какой там точный триплет надо...
  2. когда вы делаете

    source build/envsetup.sh и lunch target всё уже само настраивается
Copyright 2016-2019 NeoChapay