在 Ubuntu 12.04.2 上安装 VMWare 工具时出现错误“致命错误:linux/smp_lock.h:没有此文件或目录”

在 Ubuntu 12.04.2 上安装 VMWare 工具时出现错误“致命错误:linux/smp_lock.h:没有此文件或目录”

我在 Windows 7 主机上的 VMware 机器上安装了 Ubuntu 12.04.2 LTS。当我尝试安装内核头文件时,似乎遇到了问题

我做到了:

sudo apt-get install gcc make build-essential linux-headers-$(uname -r)

并得到这个:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
gcc is already the newest version.
build-essential is already the newest version.
linux-headers-3.5.0-28-generic is already the newest version.
make is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 100 not upgraded.

但是,在安装 VMware Tools 时出现以下错误:

make[1]: Entering directory `/usr/src/linux-headers-3.5.0-28-generic'
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/backdoor.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/backdoorGcc32.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/bdhandler.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/cpName.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/cpNameLinux.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/cpNameLite.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/dentry.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/dir.o
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/file.o
/tmp/vmware-root/modules/vmhgfs-only/file.c:122:4: warning: initialization from incompatible pointer type [enabled by default]
/tmp/vmware-root/modules/vmhgfs-only/file.c:122:4: warning: (near initialization for ‘HgfsFileFileOperations.fsync’) [enabled by default]
  CC [M]  /tmp/vmware-root/modules/vmhgfs-only/filesystem.o
/tmp/vmware-root/modules/vmhgfs-only/filesystem.c:48:28: fatal error: linux/smp_lock.h: No such file or directory
compilation terminated.
make[2]: *** [/tmp/vmware-root/modules/vmhgfs-only/filesystem.o] Error 1
make[1]: *** [_module_/tmp/vmware-root/modules/vmhgfs-only] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.5.0-28-generic'
make: *** [vmhgfs.ko] Error 2
make: Leaving directory `/tmp/vmware-root/modules/vmhgfs-only'

任何帮助都值得感激!

答案1

来自未来的声音:我正在编译 5.9.0rc5。源代码树正是来自 linux.org 的内容。我的平台:Ubuntu 20.04.1(一周前从 18.04.5 升级而来。没有 VmWare,只有一个原始内核 tarball,但是:

DKMS make.log for virtualbox-guest-6.1.10 for kernel 5.9.0-rc5 (x86_64)
Wed 16 Sep 2020 01:35:06 AM EDT
  CC [M]  /var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/VBoxGuest-linux.o
  CC [M]  /var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/VBoxGuest.o
  CC [M]  /var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/common/string/strformatrt.o
  CC [M]  /var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/combined-agnostic.o
In file included from /var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/VBoxGuest-linux.c:36:
/var/lib/dkms/virtualbox-guest/6.1.10/build/vboxguest/r0drv/linux/the-linux-kernel.h:141:11: fatal error: linux/smp_lock.h: No such file or directory
  141 | # include <linux/smp_lock.h>
      |           ^~~~~~~~~~~~~~~~~~
compilation terminated.

错误出现在两个地方;

/usr/src/virtualbox-guest-6.1.10/vboxsf/r0drv/linux
/usr/src/virtualbox-guest-6.1.10/vboxguest/r0drv/linux

找到旧的、被遗忘的行S,用#if 0和包围#endif,在内核源目录中运行make install,就完成了。我将更改放入修订控制等,但这些步骤并不重要。

哦,版权现在是Oracle,更新到2020年,但代码纯是2003年的。

答案2

VMWare 的工具更新速度不如内核生成器更新速度快。因此,在这种情况下,您必须在未安装 VMware 工具的情况下运行,直到 VMWare 调整好状态并更新 VMTools 以适应 3.5.0-28 内核级别。

我会联系 Vmware 并进行投诉,并要求他们提供变更的预计到达时间 (ETA)。

他们可能已经有可用的最新 VMtools 更新,但 Vmcenter 软件可能尚未更新。因此,您也可以向系统管理员询问 VM 基础架构是否已安装最新的 VMcenter。

答案3

我不认为是内核头文件,因为我的 Ubuntu 客户机上没有 smp_lock.h,并且我在 Ubuntu 12.04 上有 linux-headers-3.2.0-45-generic,而且我能够毫无问题地安装 VMWare 工具。

我读这里自 2.6.39 以来,smp_lock.h 不再存在,所以我认为您使用的是旧版本的 VMware 工具或旧版本的 VMWare Player 或 VMWare Workstation。

您可以在此处查看更多选项:https://help.ubuntu.com/community/VMware/Tools

答案4

已修复(对我来说)。在新机器(Ubuntu 21.04)上安装 Guest Additions 时,我遇到了同样的问题。通过下载最新的 Virtual Box 6.1.26(我使用的是 6.1.8)解决了这个问题。运行 GAs_6.1.8 失败,缺少 smp_lock.h。重新运行 GAs_6.1.26 清除了旧版本并顺利完成运行。现在运行正常。

相关内容