Vagrant e atualização dos pacotes da VM Ubuntu 12.04

Mon, Jul 9, 2012 2-minute read

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.