RHEL:此系统当前未设置为构建内核模块

Posted

技术标签:

【中文标题】RHEL:此系统当前未设置为构建内核模块【英文标题】:RHEL: This system is currently not set up to build kernel modules 【发布时间】:2018-08-28 08:57:19 【问题描述】:

我正在尝试在 RHEL 7 VM 上安装 virtualbox5.2 当我尝试重建内核模块时,我收到以下错误:

[root@myserver~]# /usr/lib/virtualbox/vboxdrv.sh setup
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    kernel-devel kernel-devel-3.10.0-693.11.1.el7.x86_64

我尝试安装 kernet-devel 并收到成功消息

Installed:
  kernel-devel.x86_64 0:3.10.0-693.21.1.el7                                     

Complete!

但设置仍然失败。

知道这里缺少什么吗?

【问题讨论】:

对于任何在基于 Debian 的发行版上遇到相同问题的人,请安装缺少的软件包:sudo apt-get install -y linux-headers-amd64 linux-headers-$(uname -r) 有一个guide for RHEL(我没有针对 RHEL 测试过)我成功验证了 Fedora 34。 【参考方案1】:

sudo yum install -y "kernel-devel-$(uname -r)"

在 Fedora 上替换 dnf。我不需要重新启动,但是 ymmv。

2020 年编辑:

Centos/RHEL 8 现在也使用dnf 而不是yum。我还没有机会在这些发行版上进行测试,所以同样的 YMMV 免责声明仍然适用。

【讨论】:

【参考方案2】:

首先在终端中运行:uname -r 然后您将获得有关当前内核 (CURRENT_KERNEL) 的名称和信息。

现在您可以使用命令安装:yum install kernel-devel-CURRENT_KERNEL

注意:将 CURRENT_KERNEL 替换为您从 uname -r 获得的字符串。

【讨论】:

【参考方案3】:

当我尝试在我的 Kali Linux(GNU/Linux 滚动版本)上升级 VirtualBox 5.2.12 Guest Additions 时,发生了同样的消息。我通过以下步骤修复了它:

    进行 apt update/upgrade 以使您的系统保持最新。不要忘记重新启动系统。 运行“apt-get install linux-headers-$(uname -r)”。 从终端运行 VBoxLinuxAdditions.run,错误消息消失,Guest Additions 将成功安装。 重启系统,Guest Additions 工作正常。

【讨论】:

【参考方案4】:

我来这里是为 CentOS 6 寻找相同的答案,上面的答案稍作修改就可以工作(所以,对于其他也登陆这里的人)...

yum install -y kernel-devel kernel-devel-$(uname -r)

所以,“yum”而不是“apt-get” 另外,有些 Linux 使用“linux-headers”而不是“kernel-devel”,但原理似乎是一样的。

【讨论】:

【参考方案5】:

您使用的内核是 kernel-devel-3.10.0-693。11.1.el7.x86_64 与您安装 kernel-devel.x86_64 0:3.10 的内核略有不同.0-693.21.1.el7 。就我而言,我的操作系统上安装了几个不同的版本,“sudo yum install kernel-devel”总是为我安装最新的版本。然后我通过将我的默认内核版本设置为与为我安装的 yum 相同来解决这个问题。您可以通过以下命令检查您在操作系统上安装的内核:

sudo awk -F\' '$1=="menuentry " print i++ " : " $2' /etc/grub2.cfg

然后只需将你选择使用的内核版本设置为和yum为你选择的一样,通过以下命令:(注意最后的数字是从前面的命令结果中提取的),

sudo grub2-set-default 0

使用 'gurb2-mkconfig' 命令生成 grub2 配置,然后重启服务器。

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot

【讨论】:

【参考方案6】:

米兰拉科斯是对的。您安装的 kernel-devel 必须具有与 uname -r 输出完全相同的后缀字符串。此外,vboxdrv.sh 设置过程中的日志还显示了所需的 kernel-devel 版本。

所以对于你的情况,你将运行命令:sudo yum install kernel-devel-3.10.0-693.11.1.el7.x86_64

【讨论】:

【参考方案7】:

为了解决这个问题,我运行了yum update -y。我认为这是解决它的最快方法。另一种解决方案是使用安装 DVD 配置 repos,这样您就可以安装当前 CentOS 版本的内核头文件。

我的历史:

yum install epel-release yum install perl gcc dkms kernel-devel kernel-headers make bzip2 yum groupinstall "Development tools" yum update -y reboot

之后,我挂载了 de VBoxGuestAdditions 并运行了该过程

【讨论】:

【参考方案8】:

yum install kernel-devel-3.10.0-693.11.1.el7.x86_64 解决了这个问题。

【讨论】:

没有包 kernel-devel-3.10.0-693.11.1.el7.x86_64 可用。 @SzymonRoziewski 您可能已经安装了 openVZ,在这种情况下,您应该在您的内核开发包名称中添加“vz”:yum install vzkernel-devel-3.10.0-693.11.1.el7.x86_64

以上是关于RHEL:此系统当前未设置为构建内核模块的主要内容,如果未能解决你的问题,请参考以下文章

静态插入linux内核模块

Linux 内核编译 Linux 内核 ⑦ ( 安装内核模块 | 安装内核 | 重启系统 | 查看当前内核版本 )

静态插入linux内核模块

我应该如何为 linux 内核模块构建设置额外的包含路径?

如何从另一个模块调用导出的内核模块函数?

深度解析KGDB调试Linux模块和内核