2012-01-13 4 views
2

У меня есть то, что я считаю очень полезным скриптом здесь, если вы используете NetBeans на гостевой системе VirtualBox. Существует, по-видимому, одна проблема:Загрузочный ботинок Virtualbox не будет отключен

Если вы посмотрите на скрипт, он записывает сценарии загрузки, которые, в свою очередь, монтируют NetBeansProjects из Host System to Guest. Это прекрасно работает. Однако создается дополнительный скрипт и перемещается в локальную корзину пользователя. На самом деле создаются два сценария: 1) разрешить пользователю монтировать и 2) отключить установленную папку, чтобы обеспечить гибкость.

Я тестирую скрипты, и все работает на моем гостевом компьютере Ubuntu, кроме сценария 'netbeans-unmount.sh'.

Это не размонтировать sirectory, который был установлен при загрузке и я попытался дать сценарии файл «корневой» доступ ...

Все улики, чтобы, если это будет работать и как? :

#!/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 

Обновления: Ручные закодированы размонтировании в терминале также не отмонтировать папку Проектов NetBeans. Поэтому я думаю, мне нужно спросить, возможно ли даже размонтировать эту папку, если инициализация системы смонтировала папку?

Update2: Still Stuck, но у меня есть новая информация после просмотра etc/mtab. Вот что я вижу:

... 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
NetBeansProjects /home/yucca/NetBeansProjects vboxsf rw 0 0 
... 

ясно, что я должен запустить Sudo размонтировать ~/NetBeansProjects много раз !!

Дополнительные параметры монтирования, такие как «f-l-a-t», не будут работать, поскольку он размонтирует все, и я хочу, чтобы мой целевой каталог был отключен.

+0

Failure размонтировать обычно из-за какой-то процесс проведения файл открывается где-то внутри этой точки монтирования или используется в качестве рабочего каталога. Файловые системы не разрешают размонтировать, пока они все еще используются (если не принудительно). –

+0

@MarcB Я только что добавил новую информацию, вы можете помочь? – thejartender

+0

Я не знаю, почему он был установлен несколько раз, но вы должны знать, какие процессы/пользователи держат открытые файлы в этой точке монтирования с помощью команды «fuser». –

ответ

1

Я перепроверил все мои файлы инициализации и нашли там были какие-то дополнительные крепления добавлены к /etc/init.d/rc.local теперь проверить для существующей строки, прежде чем писать, как это (в качестве примера):

if ! grep "JAVA_HOME=${javaUsrLib}/jdk1.7.0_01" /etc/environment 

затем эхо «JAVA_HOME = $ {javaUsrLib} /jdk1.7.0_01 "| Судо тройник -a/и т.д./окружающая среда фи

5

вы можете отключить все акции с:

sudo umount -a -t vboxsf 

или использовать fusermount -u

sudo fusermount -u /mnt