我正在尝试在用户模式Linux中的模块上运行'make'来安装一个简单的makefile。这是我的make文件:
obj-m := hello.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
当我在用户模式Linux中运行时,我收到以下错误:
make[1]: Entering directory `/lib/modules/2.6.28/build' make[1]: *** No rule to make target `modules'. Stop. make[1]: Leaving directory `/lib/modules/2.6.28/build' make: *** [default] Error 2
问题是/lib/modules/
下没有文件。 2.6.28或build没有目录。根据我的阅读,这些应该是/usr/src
的符号链接,但在/usr/src
下,我也看不到任何文件。
答案 0 :(得分:1)
必须使用UML内核的源代码和头文件为它编译模块。
您可以在UML内部或仅在主系统中编译它,但您必须使用UML的内核头文件并构建脚本
答案 1 :(得分:0)
您需要构建并安装正在编译的内核版本。从kernel.org获取源代码,配置(我认为make menuconfig
从正在运行的内核中选择配置),构建并安装它。你可以在普通用户的主目录下进行构建,当然你需要root来安装它。
万一你错过了这个 - 这里是User Mode Linux HOWTO。它包含用于构建和安装内核和模块的特定项。希望这会有所帮助。