Ubuntu 17.10 升级导致 VMWare Workstation 12.5 崩溃

Ubuntu 17.10 升级导致 VMWare Workstation 12.5 崩溃

你好,升级到 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

  1. 提取vmmon.tarvmnet.tar

    sudo tar -xf vmmon.tar
    sudo tar -xf vmnet.tar
    

    这将创建vmmon-onlyvmnet-only目录。

  2. 获取补丁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 的类似修复)

  3. 编辑vmnet-only/bridge.c

    639c639
    <        atomic_inc(&clone->users);
    ---
    >        atomic_inc((atomic_t*)&clone->users);
    
  4. 跑步

    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
    
  5. 作为用户:

    /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 的原始步骤在内核修补后自动重新编译内核模块。

相关内容