Загрузочное монтирование Virtualbox не будет размонтировано

StackOverflow https://stackoverflow.com/questions/8852590

Вопрос

У меня есть, на мой взгляд, очень полезный скрипт, если вы используете NetBeans в VirtualBox guest.Кажется, есть одна проблема:

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

Я тестирую скрипты, и все работает на моем Ubuntu guest, за исключением 'netbeans-unmount.sh'.

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

Есть какие-нибудь подсказки относительно того, сработает ли это и как?:

#!/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: Все еще застрял, но у меня появилась кое-какая новая информация после просмотра 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 unmount ~/NetBeansProjects много раз!!

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

Это было полезно?

Решение 2

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

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

затем повторите "JAVA_HOME=${javaUsrLib}/jdk1.7.0_01" | sudo tee -a /etc/environment fi

Другие советы

вы можете отключить все общие ресурсы с помощью:

sudo umount -a -t vboxsf 

или используйте fusermount -u

sudo fusermount -u /mnt
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top