首页 文章

为我的路由器的内核版本编译特定的内核模块

提问于
浏览
1

我有一台运行Linux内核版本2.6.33的路由器,它没有支持tun / tap支持 . cpu是MIPSlittle endien . 我设置了一个buildroot并成功编译了路由器的“Hello world”程序 .

我正在尝试从linux-kernel-2.6.33 / drivers / net / tun.c编译tun.c作为独立的内核对象 . 但我还没有成功!我使用buildroot获取内核的头文件(通过make menuconfig)并为tun.c设置Makefile:

obj-m := tun.o
KDIR=/opt/buildroot/output/build/linux-kernel-2.6.33
PWD=$(shell pwd)
default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

我用make运行make文件

make ARCH = mips CROSS_COMPILE = / opt / buildroot / output / bin / buildroot-compiler-

我得到了警告和错误:

警告:缺少符号版本转储/opt/buildroot/output/build/linux-kernel-2.6.33/Module.symvers;模块没有依赖关系和modversions . include / linux / mmzone.h:18:30:fatel错误:generated / bounds.h . 没有这样的或目录 . #include

我的哪一步是错的?

1 回答

  • 2

    我'm betting you'试图针对纯粹的,未配置的内核源代码树构建您的模块 . 你不能这样做 . 至少,您的内核树必须进行配置,并且不止于此,它应该在顶层运行 make modules_prepare .

    运行 cd /usr/src/linux && make modules_prepare 应该可以解决您的问题 .

相关问题