Eu escrevi o script a seguir que pode ser útil ao executar o Ubuntu no VirtualBox e usar o NetBeans. Os scripts podem até ser usados para outras necessidades do VirtualBox enquanto ele tenta:
- Instale um aplicativo (NetBeans).
- Testa se o Ubuntu está rodando com adições de convidados.
- Tenta montar uma pasta compartilhada com base no nome do projeto padrão, que normalmente permanece o mesmo em qualquer sistema (host ou convidado).
- Grava a montagem
rc.local
para facilitar o uso. - Cria e/ou anexa um arquivo na lixeira do usuário para permitir que a pasta seja desmontada.
O script funciona perfeitamente, a menos que você atualize. Nesse cenário, diversas montagens serão feitas e o script de desmontagem não funcionará conforme planejado, pois haverá diversas entradas no arquivo /etc/mtab
.
Isso não pode ser resolvido com o uso de umount
sinalizadores, -f -l -a -t
pois normalmente isso pode resultar na desmontagem de todas as montagens. umount -a -t vboxsf
na opção /target
Também não é a solução desejada, pois pode não ser necessário desmontar todas as pastas compartilhadas.
Eu encontrei uma solução, mas sou novo em bash/scripts e não sei como implementá-la. Minha solução é testar rc.local
possíveis linhas duplicadas para evitar montagem duplicada:
#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH
#Modify these variables as needed...
tempWork=/tmp/work
startupScript=/etc/init.d/rc.local
defaultNetBeansVersion=7.0.1
echo "Provide NetBeans version (7.0.1 is default) then hit [Enter] :"
read NetBeansVersion
if [ -z "$NetBeansVersion" ]
then
$NetBeansVersion=$defaultNetBeansVersion
fi
mkdir -p /$tempWork;
cd /$tempWork;
wget http://dlc.sun.com.edgesuite.net/netbeans/7.0.1/final/bundles/netbeans-$NetBeansVersion-ml-javase-linux.sh;
sh $tempWork/*sh;
#Add Netbeans launcher to your PATH. Doing so allows you to run 'netbeans' command from the terminal
#This line will need to be changed if you changed the default install location (IOW Netbeans is not in ~/)
sudo ln -f -s ~/netbeans-$NetBeansVersion/bin/netbeans /usr/bin/;
#If you use VirtualBox , you can share your projects between Host and guest. Name of shared
#folder must match 'NetBeansProjects'
mkdir -p $HOME/NetBeansProjects
if [ -f /sbin/mount.vboxsf ]
then
sudo /sbin/umount /home/$HOME/NetBeansProjects
sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects
fi
if mountpoint -q ~/NetBeansProjects
then
#Add it to the universal start script to automate process...
sudo sed -ie '$d' $startupScript
echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects"| sudo tee -a $startupScript
echo "exit 0"| sudo tee -a $startupScript
sudo chmod +x $startupScript
#Create a mount and unmount script file and add it to users local bin
rm -rf $tempWork/*
echo '#!/bin/bash' > $tempWork/netbeans-mount.sh
echo '#!/bin/bash' > $tempWork/netbeans-umount.sh
echo '#!/bin/bash' > $tempWork/mount-from-host.sh
echo '#!/bin/bash' > $tempWork/unmount-from-host.sh
echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/netbeans-mount.sh
echo "sudo /sbin/mount.vboxsf NetBeansProjects $HOME/NetBeansProjects" >> $tempWork/mount-from-host.sh
echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/netbeans-umount.sh
echo "sudo umount $HOME/NetBeansProjects" >> $tempWork/unmount-from-host.sh
echo "exit 0" >> $tempWork/unmount-from-host.sh
echo "exit 0" >> $tempWork/mount-from-host.sh
echo "exit 0" >> $tempWork/netbeans-mount.sh
echo "exit 0" >> $tempWork/netbeans-umount.sh
sudo chmod +x $tempWork/*
sudo mv -f $tempWork/*.sh /usr/local/bin
rm -rf $tempWork
fi
#This function is used to cleanly exit with an error code.
function error_exit {
sleep 7
exit 1
}
#restart
sudo reboot
exit 0
Alguma indicação? Meu objetivo é escrever superscripts para desenvolvedores Java que baixem as ferramentas mais necessárias em qualquer Linux (não apenas no Ubuntu) e montem coisas potenciais que não precisam ser reinstaladas se você tiver um host de desenvolvimento existente. Coisas como Maven, Tomcat, SVN, JBoss não precisam de instalação especial como convidado se já estiverem no sistema host e há benefícios adicionais em combinar diferentes sistemas em um; por exemplo, o Windows pode executar o navegador Photoshop e Safari, mas o Linux oferece melhor personalização e ferramentas como ssh prontas para uso.
Responder1
Não tenho certeza se entendi... mas aqui conto o número de linhas exclusivas da saída do grep.
grep "sudo /sbin/mount.vboxsf" /etc/rc.local | sort | uniq -c | wc -l
Dois vêm das linhas de eco e dois das linhas de comando. Deve ser sempre igual a quatro, certo?