Встала необходимость поднятия на WB6 IPSec. Обнаружилось, что соответствующие модули в стандартном ядре отсутствуют. Плюсом при подключении через сим-карту выявилось отсутствие опции PPPFilter.
Скачал тулчейн “gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf”, дерево исходников и “упрощающие сборку” скрипты.
Установил mxs_wirenboard_defconfig
Сделал menuconfig с включениме недостающих опций и savedefconfig с копированием в /arch/arm/configs/mxs_wirenboard_defconfig
в параметре CROSS_COMPILE указывал соответствующий путь до тулчейн.
На этапе ./build.sh что-то пошло не так, поэтому компиляцию и установку производил вручную по командам из скрипта ./build.sh и scp_kernel.sh. А именно:
make -j8 ARCH=arm LOCALVERSION= CROSS_COMPILE=/home/user/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- zImage
make -j8 ARCH=arm LOCALVERSION= CROSS_COMPILE=/home/user/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- modules
make -j8 ARCH=arm LOCALVERSION= CROSS_COMPILE=/home/user/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- dtbs
make -j8 ARCH=arm CROSS_COMPILE=/home/user/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/user/linux-wb/build_kernel/deploy/tmp/1 modules_install
make -j8 ARCH=arm CROSS_COMPILE=/home/user/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=/home/user/linux-wb/build_kernel/deploy/tmp firmware_install
Всё скомпилировалось без проблем. Правда смутил вес ядра(чуть более 3 мегабайт).
Скопировал полученные модули, ядро и Firmware на Wirenboard:
ядро - в /boot
дерево устройств - /boot/dtbs
модули - в /lib/modules/4.9.22
firmware - в /lib/firmware и для верности в /lib/firmware/4.9.22
Перезапустил Wirenboard
Загрузка останавливается на сообщении “Загрузка ядра”.
То есть ядро соответствующего формата есть, всё остальное вроде тоже имеется, но ядро загрузить девайс не может! Подскажите, что делаю не так?
Сделать листинг команды в данный момент проблематично, так как загрузка не осуществляется. Если память не изменяет я скопировал новое ядро с именем 4.9.22 и создал на него новую ссылку с именем zImage, предварительно удалив старую. Стандартное ядро при этом не удалял(оставил в папке /boot)
В целом проблема с ядром я так понимаю самоустранилась, и теперь в логе отладчика вижу ошибки на отсутствующие файлы дерева устройств. Скрин лога в аттаче.
Не совсем понятен алгоритм. На первом этапе(после подачи команды make mxs_wirenboard_defconfig) мы выбираем дефолтный конфиг, на основе которого создаётся файл .config в директории KERNEL. Далее после подачи make menuconfig мы добавляем/убираем опции из всё того же .config. И, наконец, делая savedefconfig и копируя defconfig в папку arch/arm/configs я так понимаю файлы должны становиться идентичными? Но они явно отличаются! Вопрос - так по какому конфигу всё-таки происходит компиляция после подачи команды make zImage modules и dtbs?
И сопутствующий вопрос - файлы .dtb копировал из KERNEL/arch/arm/boot/dts(при помощи поиска, аналогично скрипту). Если конфигурационный файл корректный, с моими дополнениями, то по какой причине необходимые файлы .dtb могут отсутствовать? Скопировать из старого дерева(того, что на устройстве) я так понимаю не совсем корректно? Как быть?