简体   繁体   English

Virtualbox引导安装不会卸载

[英]Virtualbox boot mount won't unmount

I have what I think is a very useful script here if you use NetBeans on VirtualBox guest. 如果您在VirtualBox guest虚拟机上使用NetBeans,我在这里有一个非常有用的脚本。 There seems to be one problem: 似乎有一个问题:

If you look at the script, it writes to a boot scripts that in turn, mounts NetBeansProjects from the Host system to Guest. 如果您查看该脚本,它将写入启动脚本,该启动脚本又将NetBeansProjects从主机系统装载到Guest。 This works fine. 这很好。 However an additional script is created and moved to the users local bin. 但是,将创建一个附加脚本并将其移至用户本地bin。 In fact, two scripts are created: 1)To allow user to mount and 2)Unmount the mounted folder to allow flexibility. 实际上,创建了两个脚本:1)允许用户安装和2)卸载已安装的文件夹以提供灵活性。

I test the scripts and everything works on my Ubuntu guest, except the 'netbeans-unmount.sh' script. 我测试了这些脚本,并且除了“ netbeans-unmount.sh”脚本以外,其他所有东西都可以在我的Ubuntu客户机上运行。

It will not unmount the sirectory that was mounted at boot and I have tried giving the scripts file 'root' access... 它不会卸载在引导时已挂载的sirectory,我已尝试授予脚本文件“ root”访问权限...

Any clues as to if this will work and how? 关于这是否有效以及如何起作用的任何线索? :

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

Update: Hand coded unmounting in terminal also fails to unmount the NetBeans Projects folder. 更新:在终端中手动编码卸载也无法卸载NetBeans Projects文件夹。 So I guess I need to ask if it's even possible to unmount this folder if the system initialization mounted the folder? 因此,我想我要问的是,如果系统初始化安装了该文件夹,是否甚至可以卸载该文件夹?

Update2:Still Stuck, but I have some new info after looking in etc/mtab . Update2:仍然卡住,但是在etc/mtab查看后,我有了一些新信息。 Here is what I see: 这是我看到的:

...
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
...

It is clear that I have to run sudo unmount ~/NetBeansProjects many times!! 很明显,我必须多次运行sudo unmount〜/ NetBeansProjects!

Additional mount options like 'flat' won't work either as it unmounts everything and I only want my targeted directory unmounted. 诸如“ flat”之类的其他安装选项也无法正常工作,因为它会卸载所有内容,而我只希望卸载目标目录。

you may unmount all shares with: 您可以通过以下方式卸载所有股票:

sudo umount -a -t vboxsf 

or use fusermount -u 或使用fusermount -u

sudo fusermount -u /mnt

I rechecked all my init files and found there were some additional mounts added to /etc/init.d/rc.local I now test for existing string before writing like this (as an example): 我重新检查了所有的init文件,发现在/etc/init.d/rc.local添加了一些附加的挂载,现在我在测试这样的字符串之前(例如)测试现有的字符串:

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

then echo "JAVA_HOME=${javaUsrLib}/jdk1.7.0_01" | 然后回显“ JAVA_HOME = $ {javaUsrLib} /jdk1.7.0_01” | sudo tee -a /etc/environment fi sudo tee -a / etc / environment fi

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM