Дело в том, что мой EasyCAP использует чипсет USBTV007, и чтобы это заработало мне нужнен kernel 3.13+ с модулем usbtv.
Если собирать ядро на RPi, то нужно место(у меня папка с исходниками и результатом компиляции весит 2.11Гб) и много времени(это где-то 10-20 часов, против 10-15 минут на Macbook Pro)
Сам процесс сборки ядра на OS X вполне подробно расписан тут. НО, там отсутствую несколько часто возникающих подводных камней, для одного из которых нет решения в гугле. Теоритически это поможет не только для сборки kernel для RPi, но и для любой другой платформы.
В качестве основы я использовал сборку minibian, т.к. в сборке официальной просто тонна не нужного мусора. проще доставить, что нужно чем вычищать.
1. В случае, если необходимо добавить дополнительные заголовочные файлы в /usr/include может оказаться, что такой директории вовсе нет, решение - переставить Xcode:
2. Исходники ядра 3.14+ я брал так:
git clone -b rpi-3.14.y --single-branch https://github.com/raspberrypi/linux
3. После конфигурации (берем PRi .config и дополняем его через oldconfig, и потом включаем дополнительные нужные нам компоненты), если сразу запустить билд то на компиляции может вывалиться ошибка (вообще ошибся я тем что случайно включил raid6 в ядро для RPi, оно мне там нафиг не нужно, но для какого-нибудь другого устройства может понадобиться):
UNROLL lib/raid6/int1.c
awk: can't open file -vN=1
source line number 1 source file -vN=1
context is
>>> <<<
CC [M] lib/raid6/int1.o
arm-none-eabi-gcc: ошибка: lib/raid6/int1.c: No such file or directory
arm-none-eabi-gcc: фатальная ошибка: не заданы входные файлы
Фиксится правкой файла lib/raid6/Makefile строки 14,15(Добавляем проблемы после -v, -N и меняем порядок, на OS X awk чувствителен):
cmd_unroll = $(AWK) -v N=$(UNROLL) -f $(srctree)/$(src)/unroll.awk \
< $< > $@ || ( rm -f $@ && exit 1 )
4. После этого мы можем запускать make, но make modules выпадет ошибка:
Building modules, stage 2.
xargs: illegal option -- r
Чтобы исправить, мы должны избавиться от использования -r флага в xargs, которы йне поддерживается в BSD версии этой утилиты.
В файле scripts/Makefile.modpost необходимо исправить 63 строку на:
MODLISTCMD := find $(MODVERDIR) -name '*.mod' | grep . | xargs grep -h '\.ko$$' | sort -u
Конструкция
... | xargs -r ...
заменяется на идентичную по результату конструкцию
... | grep . | xargs ...
5. Теперь мы можем сделать make modules и modules_install
И на последок, после переноса собранного ядра и модулей на RPi мне также было необходимо запустить команду depmod, для генерации списка зависимостей, в противном случае modprobe будет выдавать ошибку, что modules.dep.bin не найден при попытке подключить какой либо модуль.
Комментариев нет:
Отправить комментарий