1:make menuconfig中的 kernel modules
其中的各个配置选项来自于下面目录中的.mk文件
[root@localhost /openwrt/openwrt/trunk/package/kernel/linux/modules]$ls
001-depends.mk crypto.mk hwmon.mk leds.mk netdevices.mk.bak nls.mk sound.mk video.mk wireless11221.mk
block.mk firewire.mk i2c.mk lib.mk netfilter.mk other.mk spi.mk virtual.mk wireless.mk
can.mk fs.mk input.mk netdevices.mk netsupport.mk pcmcia.mk usb.mk w1.mk
[root@localhost /openwrt/openwrt/trunk/package/kernel/linux/modules]$
兄弟们可以打开就知道,
其中我们将自己将要添加的内核模块添加到Network Devices中。添加之后的效果为:
2:添加自己的模块到文件netdevices.mk
其中自己的模块代码在 FILES:=$(LINUX_DIR)/drivers/net/ethernet/ethernet中
内核控制选项为:CONFIG_AR9344_PHY8035 其中这个很重要需要在多个文件中进行定义AR9344_PHY8035。
在下面的目录中的Makefile添加obj-y += ethernet/
[root@localhost /openwrt/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/net/ethernet]$more Makefile
#
# Makefile for the Linux network Ethernet device drivers.
#
obj-y += ethernet/
同时还需要在Kconfig中添加source "drivers/net/ethernet/ethernet/Kconfig"
其中内容如下:
[root@localhost /openwrt/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/net/ethernet/ethernet]$cat Kconfig
config AR9344_PHY8035 //很重要的东西
tristate "db12x borad for 9344chip"
depends on PCI
---help---
This driver supports for ar9035 phy id
其中看看自己模块中的makefile的内容如下:
主要上面makefile中的CONFIG_AR9344_PHY8035的变量,关于此值相关的配置值如下:
[root@localhost /openwrt/openwrt/trunk]$cat .config |grep 9344
CONFIG_PACKAGE_kmod-ar9344_ethernet=y
其中不管CONFIG_PACKAGE_kmod-ar9344_ethernet=y的 值是Y还是M,Linux内核目录中的CONFIG_AR9344_PHY8035的值都是M,古可以知道在根目录(/openwrt/openwrt/trunk)中的make menuconfig的时候是会与Linux内核中的config文件建立起联系的,之间是怎么的联系,现在还不是很清楚。
当在在总的menuconfig中选中自定义的模块之后,系统会自动将此模块加载到内核所在文件系统中
同事也会成ipk格式的文件。
Generating index for package ./kmod-ar9344_ethernet_3.10.36-1_ar71xx.ipk