ฉันลองและปิดหลายวันเพื่อสร้างโมดูลสำหรับอุปกรณ์ไร้สาย USB ของฉัน
มันเป็นEdimax EW-7811UN
ฉันพบทรัพยากรหลายอย่างเกี่ยวกับการสร้างโมดูลสำหรับ Debian แต่ไม่มีสำหรับ Arch ขณะนี้ฉันกำลังพยายามที่จะข้ามรวบรวมโดยใช้toolchain พบได้ในราสเบอร์รี่ Pi GitHub นี่คือขั้นตอนที่ฉันได้ทำ:
- ดาวน์โหลดแหล่งที่มาขับจากเว็บไซต์ Edimax
- ดาวน์โหลดแหล่งเคอร์เนลจาก GitHub
- สร้างกฎการทำเฉพาะ (ตามเอกสาร 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
คือ toolchain ของฉัน (ซึ่งถูกเพิ่มในPATH
)
ความพยายามครั้งแรกที่make
ให้ข้อผิดพลาดนี้:
fatal error: linux/smp_lock.h: No such file or directory
ฉันพบว่านี่เป็นส่วนหัวที่ล้าสมัยและเชื่อมโยงไปยังsmp.h
ควรแก้ไขปัญหา อย่างไรก็ตามบิลด์ยังคงล้มเหลวด้วยข้อผิดพลาดของแหล่งที่มาซึ่งมีลักษณะดังนี้:
error: field 'recv_tasklet' has incomplete type
ฉันได้รวบรวมพอที่จะรู้ว่าสิ่งนี้ดูเหมือนว่าการสร้างไม่สนับสนุนรุ่นเคอร์เนลล่าสุด แต่ถ้าเป็นเช่นนั้นแล้วมันถูกสร้างขึ้นสำหรับ Debian อย่างไร