你好,升级到 Ubuntu 17.10 后,vmware 现在无法启动。
我收到消息:
/usr/lib/vmware/bin/vmware-modconfig: Relink `/lib/x86_64-linux-gnu/libbsd.so.0' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
我知道有可用的补丁,我正在尝试应用这些补丁并重新编译。我已经从解决方案运行https://communities.vmware.com/thread/571370:
cd ~
#Copy the vmmon source tar ball to your temporary location
cp /usr/lib/vmware/modules/source/vmmon.tar .
#Extract the tar ball
tar xf vmmon.tar
#Download the modified file that mkubecek posted and overwrite the one from the tar ball for VMware Workstation 12.5:
wget -O ./vmmon-only/linux/hostif.c https://raw.githubusercontent.com/mkubecek/vmware-host-modules/b50848c985f1a6c0a341187346d77f0119d0a835/vmmon-only/linux/hostif.c
#Wrap up the newly modified files into a tar ball replacing the original one
sudo tar cf /usr/lib/vmware/modules/source/vmmon.tar vmmon-only
#Rebuild the VMware kernel modules
sudo vmware-modconfig --console --install-all
Failed to get gcc information.
gcc --version
gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0 ...
不幸的是,vmware-modconfig 失败了,因为它似乎依赖于某个特定的 gcc 版本。我走对路了吗?任何有关此问题的帮助都将不胜感激。
编辑 谢谢 Steve,下面已让 vmware 再次运行。我做了一些小修改。测试并确认我可以运行虚拟机。
sudo su
# do all below as root
cd /usr/lib/vmware/modules/source
tar xvf vmmon.tar
tar xvf vmnet.tar
wget -O ./vmmon-only/linux/hostif.c https://raw.githubusercontent.com/mkubecek/vmware-host-modules/b50848c985f1a6c0a341187346d77f0119d0a835/vmmon-only/linux/hostif.c
vim vmnet-only/bridge.c
cd vmmon-only/
make
cd ../vmnet-only/
make
cd ..
mkdir /lib/modules/4.13.0-16-generic/misc
cp *.o /lib/modules/4.13.0-16-generic/misc
insmod /lib/modules/4.13.0-16-generic/misc/vmmon.o
insmod /lib/modules/4.13.0-16-generic/misc/vmnet.o
rm /usr/lib/vmware/lib/libz.so.1/libz.so.1
ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1
vmware-networks --start
exit
# run vmware as normal user
/usr/lib/vmware/bin/vmware
答案1
我已经设法让 VMWare Workstation 12.5.7 在 Kubuntu 17.10 上运行。
在/usr/lib/vmware/modules/source
:
提取
vmmon.tar
和vmnet.tar
sudo tar -xf vmmon.tar sudo tar -xf vmnet.tar
这将创建
vmmon-only
和vmnet-only
目录。获取补丁
hostif.c
sudo wget -O vmmon-only/linux/hostif.c https://raw.githubusercontent.com/mkubecek/vmware-host-modules/b50848c985f1a6c0a341187346d77f0119d0a835/vmmon-only/linux/hostif.c
(笔记:https://communities.vmware.com/thread/571370- 还包含针对 VMWare Workstation 14 的类似修复)
编辑
vmnet-only/bridge.c
:639c639 < atomic_inc(&clone->users); --- > atomic_inc((atomic_t*)&clone->users);
跑步
make -C vmmon-only make -C vmnet-only cp -t /lib/modules/4.13.0-16-generic/misc *.ko modprobe -r vmmon insmod /lib/modules/4.13.0-16-generic/misc/vmmon.ko rm /usr/lib/vmware/lib/libz.so.1/libz.so.1 ln -s /lib/x86_64-linux-gnu/libz.so.1 /usr/lib/vmware/lib/libz.so.1/libz.so.1 # see https://communities.vmware.com/thread/572259 vmware-networks --start # see https://forum.chakralinux.org/viewtopic.php?id=8579
作为用户:
/usr/lib/vmware/bin/vmware
(以防止其运行
vmware-modconfig
)
答案2
我尝试了几乎所有其他解决方案,但都没有奏效。但这些步骤在 Ubuntu 18.04、VMware 12.5.9 上对我有用
git clone https://github.com/mkubecek/vmware-host-modules.git
cd vmware-host-modules
git checkout workstation-12.5.9 (change it to your version. it's important)
make && sudo make install
cd /usr/lib/vmware/lib/libz.so.1
sudo mv libz.so.1 libz.so.1.old
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 .
sudo depmod -a
sudo /etc/init.d/vmware restart
参考:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1715552
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1715552/comments/29
答案3
Stephen 所描述的错误修复导致许多人发现另一个错误:“无法获取 gcc 信息”。
这最简单的解决方案是下载 VMware Player 工作站 14.1。
安装而不是 12.5 版本解决了上述问题。
要这样做,只需运行
chmod +x VMware-Player-14.1.1-7528167.x86_64.bundle
sudo ./VMware-Player-14.1.1-7528167.x86_64.bundle
并按照图形安装程序中的说明进行操作。
答案4
除了史蒂芬·瓦塞尔,如果您仍在运行 VM Workstation 12.5.x 版本,则需要.ko
为每个内核补丁重新编译。这很麻烦。
您可能会看到此错误:(模块格式无效)
# insmod /lib/modules/4.13.0-31-generic/misc/vmnet.ko
insmod: ERROR: could not insert module /lib/modules/4.13.0-31-generic/misc/vmnet.ko: Invalid module format
这是一个工具,用于在内核修补之后保持 ubuntu-flavor-distros 的内核模块更新。
https://gist.github.com/shadowbq/5897002b620b093ca7578b5f13c3f3a1
我还附加了一个简单的包装器.sh
,您可以使用它来替代启动 vmware 工作站,以便确保它每次都能正确加载 vm-network 和 vm-mon 内核模块。
注意:此脚本不会扩展“tar”或“patch”源文件,这是为了按照 Stephen Wassell 的原始步骤在内核修补后自动重新编译内核模块。