4.4.0-143-通用升级 16.04 VMware 不再起作用

4.4.0-143-通用升级 16.04 VMware 不再起作用

Vmware 不再针对 4.4.0-143-generic 进行编译,4.4.0-142-generic 是 VMware Workstation 12.5.9 的最新工作内核

答案1

在这里,我找到了更好的方法来“更新” vmware 以与我的 linux 配合使用。似乎从中删除了一个参数get_user_pages,因此只需0从参数中删除它,一切就都好了。

在root用户下执行以下操作:

# cd /usr/lib/vmware/modules/source
# cp vmnet.tar vmnet.tar.bak
# cp vmmon.tar vmmon.tar.bak
# tar xf vmnet.tar
# tar xf vmmon.tar
# vi vmnet-only/userif.c

find:
   retval = get_user_pages(current, current->mm, addr,
                           1, 1, 0, &page, NULL);


change to:
   retval = get_user_pages(current, current->mm, addr,
                           1, 1, &page, NULL);


# vi vmmon-only/linux/hostif.c

find:
   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
                           numPages, 0, 0, ppages, NULL);

change to:
   retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
                           numPages, 0, ppages, NULL);

# rm vmnet.tar ; tar cf vmnet.tar vmnet-only
# rm vmmon.tar ; tar cf vmmon.tar vmmon-only
# vmware-modconfig --console --install-all

享受!

答案2

是时候升级您的 vmware 了。最终影响到 Ubuntu 4.4.0-143 内核的内核更改应该在最新的 Vmware 产品中有一个可用的驱动程序。Nvidia 驱动程序也存在这个问题,新驱动程序已修复。其他旧驱动程序(使用 get_user_pages() 函数的任何驱动程序)需要重写,但像 Vmware 这样的大供应商自 1 月以来就一直在为 Ubuntu 提供可用的驱动程序...4.4。


对于无法通过购买新驱动程序来解决问题的用户,请参阅更完整的答案为什么内核更新至 4.4.0-143-generic 后调谐卡驱动程序无法构建?
冻结您在以前版本使用的内核将放弃后续的安全补丁。N0rbert 比我更乐观,认为另一个 4.4 内核版本将可用来修复此问题。您也可以通过将版本升级到具有(仍然)工作的 Vmware 驱动程序的更高内核来解决问题。16.04 仍有多年的支持,并且有可用的 HWE 内核更新,但运行 Xenial HWE 的 14.04 只剩下一个月的支持,因此处于这种情况的人最好将精力集中在选择操作系统版本升级上。

答案3

Vmware 不再适用于 ubuntu 16.04 LTS。手动编译模块时:

vmware-modconfig --console --install-all

产生以下错误:

/tmp/modconfig-AVZerP/vmnet-only/userif.c:124:13: error: too many arguments to function ‘get_user_pages’

临时解决方案是在系统启动时按住 Shift 键并选择 4.4.0-142 内核版本。这会有所帮助。

但一段时间后,4.4.0-142 版本从列表中消失,然后使用以下命令将其恢复:

sudo apt-get install linux-image-4.4.0-142-generic linux-image-extra-4.4.0-142-generic linux-headers-4.4.0-142 linux-headers-4.4.0-142-generic

相关内容