Você está tendo este problema porque sua configuração do X está tentando carregar o driver nvidia, que então está procurando por um dispositivo nvidia compatível. Tal dispositivo não existe no ambiente convidado, em vez disso, um dispositivo gráfico virtual VMware é apresentado e, portanto, o driver nvidia não é o driver correto no sistema operacional convidado.
O driver correto para a interface gráfica virtual VMware é aquele fornecido pelo pacote xserver-xorg-video-vmware, não os fornecidos pelos pacotes nvidia- *, que são adequados apenas para acesso direto à GPU. Você pode instalar o driver correto usando o seguinte comando no guest:
sudo apt-get install xserver-xorg-video-vmware
Verifique também se a aceleração 3D está ativada na configuração da máquina virtual e se você instalou as adições de convidado do vmware corretamente. Você também deve se certificar de que você não possui um arquivo xorg.conf que esteja explicitamente selecionando o driver nvidia, já que isso falhará.
Se você quisesse que um script pudesse ser executado no boot, antes do lightdm ser iniciado, você poderia tentar algo assim:
#!/bin/bash
# Vendor identifiers
nvidia=\"10de\"
vmware=\"15ad\"
# Detect NVIDIA driver
nvidia_driver='dpkg --get-selections | awk '/nvidia-[0-9]+\t+install/ { print }''
# Detect PCI bus ID
vga_bus_id='lspci | awk '/VGA/ { print }''
# Detect VGA vendor identifier
vga_vendor=$(lspci -nm | awk "/$vga_bus_id/ { print $3 }")
if [ $vga_vendor == $nvidia ]; then
# Configure for nvidia GLX via update-alternatives
update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/${nvidia_driver}/alt_ld.so.conf
update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/${nvidia_driver}/alt_ld.so.conf
update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/${nvidia_driver}/ld.so.conf
update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/${nvidia_driver}/ld.so.conf
elif [ $vga_vendor == $vmware ]; then
# Configure for mesa GLX via update-alternatives
update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/i386-linux-gnu/mesa-egl/ld.so.conf
update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/x86_64-linux-gnu/mesa-egl/ld.so.conf
else
# Configure for mesa GLX via update-alternatives
update-alternatives --set i386-linux-gnu_gl_conf /usr/lib/i386-linux-gnu/mesa/ld.so.conf
update-alternatives --set i386-linux-gnu_egl_conf /usr/lib/i386-linux-gnu/mesa-egl/ld.so.conf
update-alternatives --set x86_64-linux-gnu_gl_conf /usr/lib/x86_64-linux-gnu/mesa/ld.so.conf
update-alternatives --set x86_64-linux-gnu_egl_conf /usr/lib/x86_64-linux-gnu/mesa-egl/ld.so.conf
fi
O script verifica qual identificador de fornecedor é detectado para a placa gráfica, se nvidia irá configurar ld para usar as bibliotecas opengl fornecidas pela nvidia entretanto se o dispositivo vmware for detectado ele irá configurar para mesa, mesa sendo o padrão se nenhuma string de fornecedor é reconhecido.
Várias suposições estão sendo feitas aqui, o script não funcionará corretamente se não for o caso:
- A instalação Multilib é assumida, assim, as configurações para i386 e x86_64
- Assume-se que o ubuntu fornecido driver nvidia é instalado isso não vai funcionar se você instalou o driver nvidia manualmente sem usar o apt.
No entanto, não tenho o vmware instalado, portanto, só posso testar e ter certeza de que ele funcionará corretamente quando o dispositivo nvidia for detectado e os drivers nvidia fornecidos pelo ubuntu estiverem instalados.