如何构建单个树内核模块?

linux-source -…有一个模块在config /boot/config-3.4-trunk-686-pae中被禁用,因此它不是linux-image -…的一部分(这是在Debian上,但是对于Ubuntu,解决方案应该是相同的,或者?),例如

# CONFIG_CAN_PEAK_USB is not set 

如何编译该内核模块,以便它可以与分布式内核一起使用?

相应的linux-source -…软件包已经安装,解压缩并链接到/ usr / src / linux。 将/boot/config-3.4-trunk-686-pae复制到/usr/src/linux/.config并进行修改

 CONFIG_CAN_PEAK_USB=m 

 make make modules 

可以编译内核和所有模块。 但是如何只编译那个特定的单个模块呢?

(注意:内核需要先编译,否则会出现以下错误: no symbol version for module_layout

我有同样的问题。 我假设您不仅需要复制.config而且还需要复制Module.symvers

我编译模块ft1000的步骤(运行Debian Wheeze 7.1.0;内核3.2.0-4-686-pae):

 aptitude install linux-headers-3.2.0-4-686-pae aptitude install linux-source-3.2 cd /usr/src/ tar xjf linux-source-3.2.tar.bz2 cd /usr/src/linux-source-3.2 cp ../linux-headers-3.2.0-4-686-pae/Module.symvers . make oldconfig # it copies .config to ./ vi .config # enable ft1000 module: CONFIG_FT1000=m make prepare # setup FT1000 as module make modules_prepare make SUBDIRS=scripts/mod make SUBDIRS=drivers/staging/ft1000/ft1000-usb modules cp drivers/staging/ft1000/ft1000-usb/ft1000.ko /lib/modules/3.2.0-4-686-pae/kernel /drivers/staging/ depmod modprobe ft1000 

在顶级源目录中,只需指定模块名称或模块目录的路径,例如:

 make drivers/net/can/usb/peak_usb/ 

或者更简单的示例(英特尔e1000以太网驱动程序):

 make drivers/net/ethernet/intel/e1000/e1000.ko