RHEL: 当前系统未设置构建内核模块的环境

11

我正在尝试在RHEL 7虚拟机上安装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

我尝试安装kernel-devel并获得了成功的消息

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

Complete!

但是安装仍然失败。

有任何想法这里缺少什么?


4
对于在基于Debian的发行版上遇到同样问题的用户,可以使用以下命令安装缺失的软件包:sudo apt-get install -y linux-headers-amd64 linux-headers-$(uname -r) - emrekgn
这里有一个适用于RHEL的指南(我没有测试过RHEL),但我已经成功地在Fedora 34上验证了它。 - Eugene Gr. Philippov
9个回答

16

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

在 Fedora 上请使用 dnf。我不需要重启,但你的情况可能会有所不同。

2020 年修改:

CentOS/RHEL 8 现在也使用 dnf 而非 yum。我还没有在那些发行版上测试过这个命令,因此同样适用 YMMV 声明。


13

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

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

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


3
当我试图在我的Kali Linux(GNU / Linux Rolling版本)上升级VirtualBox 5.2.12 Guest Additions时,出现了同样的错误信息。我按照以下步骤解决了这个问题:
  1. 运行apt update/upgrade以保持您的系统最新。 不要忘记重新启动系统。
  2. 运行“apt-get install linux-headers- $(uname-r)”。
  3. 从终端运行VBoxLinuxAdditions.run,错误信息消失并且Guest Additions将成功安装。
  4. 重新启动系统,Guest Additions正常工作。

2
您使用的内核是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 <kernel-version>

sudo grub2-set-default 0

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


注:Original Answer翻译成“最初的回答”为不正确的翻译。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot

2

我来这里是为了寻找关于CentOS 6的同样问题的答案,上面的答案稍作修改后也适用(因此,对于其他人也可以在这里找到答案)...

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

因此,使用“yum”代替“apt-get”。此外,一些Linux版本使用“linux-headers”而不是“kernel-devel”,但原则似乎相同。

1
米兰·拉科斯是正确的。您安装的kernel-devel必须具有与uname -r输出完全相同的后缀字符串。此外,在vboxdrv.sh设置期间的日志还显示了所需版本的kernel-devel。
因此,对于您的情况,您将运行以下命令:sudo yum install kernel-devel-3.10.0-693.11.1.el7.x86_64

1
为了解决这个问题,我运行了yum update -y。我认为这是最快的解决方法。另一个解决方案是使用安装DVD配置仓库,这样你就可以安装当前版本的CentOS内核头文件。
我的历史记录:
  • yum install epel-release
  • yum install perl gcc dkms kernel-devel kernel-headers make bzip2
  • yum groupinstall "Development tools"
  • yum update -y
  • reboot
之后,我挂载了VBoxGuestAdditions并运行了该进程。

0

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


5
没有可用的kernel-devel-3.10.0-693.11.1.el7.x86_64软件包。 - Szymon Roziewski
@SzymonRoziewski,你可能已经安装了OpenVZ,在这种情况下,你应该在你的kernel-devel软件包名称中添加“vz”: yum install vzkernel-devel-3.10.0-693.11.1.el7.x86_64 - Shlomi

0
有点晚了,但我最近遇到了这个问题,以下是我解决问题的方法。
yum update -y
yum install -y redhat-lsb-core net-tools kernel-headers kernel-devel epel-release
yum groupinstall -y "Development Tools"
reboot

在继续之前,请确保您的系统已经通过yum update -y命令进行了完全更新!

谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接