我有一台openvz机器,我是root
,它是我ssh
的虚拟机:
>uname -a
Linux molo 2.6.32-042stab084.25 #1 SMP Wed Feb 12 16:04:42 MSK 2014 x86_64 x86_64 x86_64 GNU/Linux
我正在尝试构建一个hello world内核模块:
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);
obj-m = hello.o
KVERSION = $(shell uname -r)
all:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
当我尝试编译hello.c
时:
#make
make -C /lib/modules/2.6.32-042stab084.25/build M=/local/my_modules modules
make: *** /lib/modules/2.6.32-042stab084.25/build: No such file or directory. Stop.
make: *** [all] Error 2
这是内核版本uname -r
报告
#uname -r
2.6.32-042stab084.25
以下也没有帮助:
$sudo apt-get install "linux-headers-$(uname -r)"
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-2.6.32-042stab084.25
E: Couldn't find any package by regex 'linux-headers-2.6.32-042stab084.25'
这是/lib/modules
目录:
modules.alias modules.ccwmap modules.dep.bin modules.ieee1394map modules.isapnpmap modules.pcimap modules.softdep modules.symbols.bin
modules.alias.bin modules.dep modules.devname modules.inputmap modules.ofmap modules.seriomap modules.symbols modules.usbmap
答案 0 :(得分:2)
从openvz页面下载并安装linux-headers包(更多内容见http://openvz.org/Installation_on_Debian)
1)添加来源
cat << EOF > /etc/apt/sources.list.d/openvz-rhel6.list
deb http://download.openvz.org/debian wheezy main
# deb http://download.openvz.org/debian wheezy-test main
EOF
2)安装
wget http://ftp.openvz.org/debian/archive.key
sudo apt-key add archive.key
sudo apt-get update
sudo apt-get install "linux-headers-$(uname -r)"
请记住,您只能从“主机”执行此操作,而不能从OpenVZ VPS内部执行此操作。这意味着只允许从主机加载内核驱动程序到内核,并且会影响该主机上的所有容器。
答案 1 :(得分:1)
您的内核似乎不是Canonical提供的内核之一,通常官方内核以版本号或generic
或其他后缀结尾。
通常你会在pool/main/l
下找到包含内核头文件的包,你可以看到here在Ubuntu Saucy的security
存储库中。
你应该向提供你正在使用的内核的人提出这个问题,除非你愿意去寻求官方支持的内核,否则没有更多的信息就没有那么多。