Há muito tempo eu estava curioso para testar o Vagrant que, para quem não conhece, é uma ferramenta para auxiliar na gestão de máquinas virtuais, utilizando como base o Oracle VirtualBox. Após ler o post do Elton Minetto, decidi botar a mão na massa e criar uma VM para meu ambiente de desenvolvimento Java e PHP. Comecei instalando a VM com a última versão LTS do Ubuntu:
vagrant box add precise32 http://files.vagrantup.com/precise32.box
Depois disso iniciei um projeto Vagrant com o comando:
vagrant init precise32
E iniciei a máquina virtual com:
vagrant up
Acessar a máquina criada por SSH é bem prático:
vagrant ssh
Estando na máquina, resolvi atualizar os pacotes com os comandos:
sudo apt-get update
sudo apt-get dist-upgrade
Desliguei a máquina virtual com o comando:
vagrant halt
E liguei novamente com o comando:
vagrant up
Depois dessa atualização, o kernel da máquina virtual foi atualizado, e o resultado do comando vagrant up veio acompanhado de um erro:
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` v-root /vagrant
O problema ocorre porque ao atualizar o kernel, o pacote de Guest Additions precisa ser recompilado com os headers do kernel atual. Para solucionar o problema, foi necessário instalar os headers para o kernel atual:
sudo apt-get install build-essential linux-headers-`uname -r`
E re-adicionar o pacote Guest Additions:
sudo /etc/init.d/vboxadd setup
Ao reiniciar a máquina virtual, o erro desapareceu. Mais informações: Issue #733 no GitHub.