Como montar uma pasta compartilhada do VirtualBox na inicialização?

67

Eu tenho o Ubuntu instalado no Virtualbox. Eu quero montar minha pasta compartilhada VirtualBox no Ubuntu automaticamente quando eu logar no Ubuntu. Eu coloquei a seguinte linha no meu ~. / Bashrc e ~ / .bash_profile:

sudo mount -t vboxsf windows_share /media/windows_share

em que windows_share é o nome que eu criei com o Virtualbox. Mas toda vez que eu inicio meu Ubuntu, ele me pede passwd, pois precisa de sudo. Existe alguma maneira de montar automaticamente o compartilhamento do Windows sem digitar a senha toda vez que eu fizer login?

    
por tonga 08.02.2013 / 19:58

6 respostas

86

Para montar sempre uma "pasta compartilhada" do Virtual Box na inicialização de um convidado do Ubuntu, temos duas opções. Cabe à preferência pessoal qual opção funciona melhor em nosso ambiente.

1. Monte com fstab

Para montar uma pasta compartilhada usando o sistema de arquivos vboxsf fornecido com Adições aos convidados primeiro precisamos garantir que os pré-requisitos conheceu . Então podemos colocar a seguinte linha no nosso arquivo etc/fstab :

<name_of_share>   /path/to/mountpoint   vboxsf   <options>  0   0

Substitua name_of_share e /path/to/mountpoint por sua configuração individual (o diretório do ponto de montagem deve ser criado primeiro). Veja a página man do mount <options> . Uma possibilidade é montar com defaults ou fornecer opções de montagem específicas (por exemplo, rw, suid, exec, auto, users ).

Em alguns sistemas, o módulo do kernel vboxsf ainda não está carregado no momento em que fstab é lido na inicialização. Isso pode ajudar a anexar o módulo do kernel vboxsf a /etc/modules .

Alguns sistemas podem precisar da opção comment=systemd.automount em sua entrada fstab ( source ).

2. Montar com caixa virtual "montagem automática":

Em versões recentes do Virtual Box, também podemos montar automaticamente pastas compartilhadas na criação:

Após a reinicialização do convidado, essa pasta compartilhada será montada no diretório de convidados /media/<username>/sf_<name_of_share> acessível a todos os usuários que se tornaram membros do grupo vboxsf .

    
por Takkat 08.02.2013 / 20:29
24
  1. Edite o /etc/rc.local

    sudo -H gedit /etc/rc.local
    
  2. Antes de exit 0 type:

    mount.vboxsf windows_share /media/windows_share vboxsf
    
  3. Salvar

  4. (Opcional) Crie um atalho para a área de trabalho ou pasta pessoal:

    ln -s /media/windows_share /home/freddy/Desktop
    

Para inicializar sem erros, como pressionar S para pular de montagem ou pressionar M para reparar manualmente, talvez seja necessário excluir sua entrada em fstab

    
por Fred Collins 28.01.2015 / 00:07
3

Depois de uma manhã cansativa tentando todas as etapas acima no Ubutntu 16.04 rodando no VirtualBox 5.0.20 sem sucesso (particularmente desapontado que a solução rc.local não funcionou), funcionou por:

  1. Registrando no menu Pastas Compartilhadas do Virtualbox GUI o diretório requerido, mas NÃO montando automaticamente ou a montagem permanente do Virtualbox. Caso contrário, o diretório host é montado pelo root e é difícil acessá-lo por usuários não-root, mesmo do grupo admin.

  2. adicionando uma entrada simples no fstab:

    [VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir]    vboxsf   rw, noauto   0     1
    

    Observe a opção noauto - caso contrário, o carregador de inicialização falha, como foi observado.

  3. Adicione a linha correspondente a /etc/sudoers da seguinte maneira usando o comando visudo de dentro do sistema operacional convidado:

    ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/
    

Isso permitirá que processos não-raiz montem especificamente isso (como fstab não pode montar com a opção 'user' ...)

  1. Adicione a linha correspondente ao .profile do usuário:

    sudo mount /media/[guestOSuser]/[mountSubdir]/
    

Agora, o subdiretório de host selecionado é preparado para o usuário selecionado no login!

    
por Michael Moutoussis 04.06.2016 / 13:35
3

Eu tentei a solução rc.local, mas não consegui fazê-la funcionar.
No entanto, descobri que o problema parece estar relacionado à pasta na qual você executa o comando (não sei por que). Então eu adicionei uma linha para mudar o diretório para minha pasta de início antes do comando mount, e agora ele funciona.

Então, meu compartilhamento do Windows é chamado Dropbox , meu ponto de montagem é /home/jamie/Dropbox , meu nome de usuário é jamie , é isso que eu coloco em rc.local:

cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
    
por DeepFried 17.12.2016 / 13:12
2

Eu faço isso de um modo muito semelhante ao proposto acima, mas esse script cria o necessário e monta ou desmonta a pasta compartilhada com o seguinte script:

#!/bin/bash
#
# Mount automatically even shared folder on startup and unmount it at shutdown.
#
# VirtualBox (c) 2015 by Oracle Systems Inc.
#
####

# Check user privileges.
if [[ $EUID -ne 0 ]]; then
    echo -e "This script must run at ROOT user!" \
        "\nPlease, use 'sudo', 'visudo' or any other to run it."
    exit 1
fi

# Check paramas from caller.
if [[ $# -eq 0 ]]; then
    echo -e "Auto-Mount selected shared folder of VirtualBox machine." \
        "\nUsage:" \
        "\n    VBoxShared <drive_one> <drive_two> <...>"
    exit 2
fi

declare EVENT=          # This set the ACTION: -m OR -u
declare -a DRIVES=()

# Processing each param:
for arg in "$@"; do
    case "$arg" in
        "-m"|"--mount")
            if [[ -z ${EVENT} ]]; then
                EVENT=-m
            else
                exit 318        # parameters at conflict!
            fi
            ;;

        "-u"|"--umount")
            if [[ -z ${EVENT} ]]; then
                EVENT=-u
            else
                exit 318        # parameters at conflict!
            fi
            ;;

        *)
            DRIVES=("${DRIVES[@]}" "${arg}")
            ;;
    esac
done
unset arg

[[ -z ${EVENT} ]] && exit 1             # ERROR: No se ha establecido la acción a realizar.
[[ "${#DRIVES[@]}" -gt 0 ]] || exit 1   # ERROR: No se han indicado las unidades a manejar.

# Process each shared folder stored on '${DRIVES}' array
for drive in "${DRIVES[@]}"; do
    DEST="/media/sf_${drive}"

    case "${EVENT}" in
        "-m")
            [[ -d ${DEST} ]] || (mkdir ${DEST} && chown root:vboxsf ${DEST} && chmod 770 ${DEST})
            mount -t vboxsf ${drive} ${DEST}
            ;;

        "-u")
            if [[ 'df --output=target | grep "${DEST}"' > /dev/null ]]; then
                umount -f ${DEST}
                rm -rf "${DEST}"
            fi
            ;;
    esac
    unset DEST
done
unset drive

unset EVENT
unset DRIVES
exit 0

Salve como /opt/.scripts/VBoxShared.sh .

Certifique-se de que isso pode ser executado. No tipo de shell:

sudo chmod a+x /opt/.scripts/VBoxShared.sh

Agora, adicionamos uma linha que executa esse script em rc.local :

sudo nano /etc/rc.local

e adicionamos essas linhas antes da última linha ( exit 0 ):

. /opt/.scripts/VBoxShared.sh --mount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]

Salve ( Ctrl O ) e feche-a ( Ctrl X )

Neste ponto, montamos automaticamente todas as pastas compartilhadas listadas em <SharedFolder> na inicialização.

Para desmontá-lo, só precisamos digitar:

sudo nano /etc/rc6.d/K99-vboxsf-umount.sh

#!/bin/bash

. /opt/.scripts/VBoxShared --umount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]

exit 0

Salve ( Ctrl O ) e feche ( Ctrl X )

sudo chmod a+x /etc/rc6.d/K99-vboxsf-auto.sh

E isso é tudo!

    
por U. Alonso 04.09.2015 / 09:41
1

Aqui está uma solução de trabalho.

Como root (I.E. sudo su) Vá para a pasta home (cd ~) e crie um arquivo cron:
vi cronjobs
Adicione o seguinte: @reboot sleep 15; montar -t vboxsf app / mnt / app

Salvar arquivo

Nota: substitua o aplicativo pelo nome da sua pasta compartilhada e / mnt / app onde deseja montá-lo. Neste caso eu criei o aplicativo da pasta em mount (mkdir app) primeiro.

Para ativar seu cron como root (para o nome de arquivo acima)
crontab cronjobs -

Certifique-se de que o cron esteja ativo:
crontab -l

reinicialize e será montado. 15 segundos de sono permitem tempo suficiente para que tudo esteja pronto para a montaria.

    
por Stephen 15.09.2017 / 15:44