簡體   English   中英

Virtualbox引導安裝不會卸載

[英]Virtualbox boot mount won't unmount

如果您在VirtualBox guest虛擬機上使用NetBeans,我在這里有一個非常有用的腳本。 似乎有一個問題:

如果您查看該腳本,它將寫入啟動腳本,該啟動腳本又將NetBeansProjects從主機系統裝載到Guest。 這很好。 但是,將創建一個附加腳本並將其移至用戶本地bin。 實際上,創建了兩個腳本:1)允許用戶安裝和2)卸載已安裝的文件夾以提供靈活性。

我測試了這些腳本,並且除了“ netbeans-unmount.sh”腳本以外,其他所有東西都可以在我的Ubuntu客戶機上運行。

它不會卸載在引導時已掛載的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 Projects文件夾。 因此,我想我要問的是,如果系統初始化安裝了該文件夾,是否甚至可以卸載該文件夾?

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!

諸如“ flat”之類的其他安裝選項也無法正常工作,因為它會卸載所有內容,而我只希望卸載目標目錄。

您可以通過以下方式卸載所有股票:

sudo umount -a -t vboxsf 

或使用fusermount -u

sudo fusermount -u /mnt

我重新檢查了所有的init文件,發現在/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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM