В течение нескольких дней я пытался включить и выключить модуль для моего беспроводного USB-устройства.
Это Edimax EW-7811UN
Я нашел несколько ресурсов по созданию модулей для Debian, но ни одного для Arch. В настоящее время я пытаюсь выполнить кросс-компиляцию, используя ToolChain, найденную на Raspberry Pi GitHub . Вот шаги, которые я предпринял:
- Загрузил источники драйверов с сайта Edimax .
- Скачал исходники ядра с GitHub .
- Создано специальное правило make (согласно документации Edimax) в Edimax MakeFile:
ifeq ($(CONFIG_PLATFORM_PI), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-bcm2708-linux-gnueabi-
KVER := 3.1.9-30-ARCH+
KSRC := /pi-sources/lib/modules/3.1.9-30-ARCH+/build
MODDESTDIR := /pi-sources/lib/modules/3.1.9-30-ARCH+/kernel/drivers/net/wireless/
INSTALL_PREFIX :=
endif
KSRC
каталог, содержащий исходные коды ядраMODDESTDIR
каталог, который вы хотите, чтобы модуль заканчивал.CROSS_COMPILE
мой набор инструментов (который был добавлен вPATH
)
Первая попытка make
дает эту ошибку:
fatal error: linux/smp_lock.h: No such file or directory
Я обнаружил, что это устаревший заголовок, и ссылка на него smp.h
должна решить проблему. Тем не менее, сборка по-прежнему не удается с исходными ошибками, которые выглядят так:
error: field 'recv_tasklet' has incomplete type
Я сделал достаточно компиляции, чтобы понять, что это выглядит так, как будто сборка не поддерживает последнюю версию ядра, но если это так, то как она была построена для Debian?
Дополнительная информация:
- Полный вывод здесь .