Как добавить отсутствующие заголовки ядра в Banana PI M2 Zero для сборки модуля ядра? - PullRequest
0 голосов
/ 31 марта 2020

Во-первых, у меня мало опыта работы с нестандартным оборудованием. Пока что я спроектировал только модули ядра Linux на готовых системах, поэтому это может быть глупой проблемой, но я не могу ее решить.

У меня есть Banana PI M2 Zero с минимальная Linux 5.6.0-rx5 + основанная на ядре Ubuntu. Я хочу создать драйвер для аналогового интерфейса ADS1294 SPI, поэтому я начал с самого базового c файла ядра:

#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("GPL");

static int __init test_init(void){
    printk(KERN_INFO "TEST: starting...");
    return 0;
}

static void __exit test_exit(void){
    printk(KERN_INFO "TEST: stopping...");
}

module_init(test_init);
module_exit(test_exit);

с файлом Makefile:

obj-m := test_mod.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

После выполнения make all система заявляет, что make[1]: *** /lib/modules/5.6.0-rc5+/build: No such file or directory. Stop..

Если я перечислю содержимое /lib/modules/5.6.0-rc5+/, я получу: build kernel modules.alias modules.alias.bin modules.builtin modules.builtin.bin modules.builtin.modinfo modules.dep modules.dep.bin modules.devname modules.order modules.softdep modules.symbols modules.symbols.bin source

Аналогично для ls /usr/src/linux-headers-5.6.0-rc5+/ Я получу папка include.

Из них у меня есть подозрение, что каким-то образом заголовки сломаны (?), но я не уверен, как поступить, что проверить. Если возможно, я бы хотел избежать перестройки ядра.

1 Ответ

0 голосов
/ 01 апреля 2020

Похоже, вы используете какое-то экспериментальное ядро, например, https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal

v32 mailine kernel 5.6.0-rc5 (экспериментальное) Ubuntu 19.10 EOAN

Он был специально скомпилирован для вашей платы, и если вы не можете собрать модули ядра, он, кажется, не полностью установлен в образ ни вами, ни автором изображения. (ls -l /lib/modules/5.6.0-rc5+/build или ls -l /lib/modules/$(uname -r)/build может помочь отладить эту проблему.)

Вы можете попробовать:

  • связаться с автором изображения, чтобы получить подсказки установки заголовков ядра для компиляции модуля; (он сделал файл публикации sh linux -image, но не файл deb заголовков в https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.2)
  • переключился на другую версию ядра с более правильным установочным пакетом;
  • или перекомпилируйте ядро ​​(если у автора образа есть сценарии для сборки c) и установите его правильно. На самом деле ручная установка, вероятно, просто укажет каталог build на каталог, в котором было построено ваше ядро.

His https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/releases/tag/v3.2 - linux -image-5.6.0 -rc5 + _1.0-41.deb не полностью упакован, build - это просто символическая ссылка на его локальный каталог, который не включен в выпущенный файл deb:

$ dpkg-deb -c ~/Downloads/linux-image-5.6.0-rc5+_1.0-41.deb |grep build
lrwxrwxrwx root/root         0 2020-03-10 02:10 ./usr/lib/modules/5.6.0-rc5+/build -> /arm/ubuntu/cubieboard2/linux-5.6.y

PS: Вы уже сделали свяжитесь с ним: https://github.com/avafinger/bananapi-zero-ubuntu-base-minimal/issues/34

...