Um einen Virtual Box "Shared Folder" beim Booten eines Ubuntu-Gasts immer zu mounten, haben wir zwei Möglichkeiten. Welche Option in unserer Umgebung am besten geeignet ist, hängt von Ihren persönlichen Vorlieben ab.
1. Mount mit fstab
Um einen freigegebenen Ordner mithilfe des vboxsf
mit Guest Additions bereitgestellten Dateisystems bereitzustellen, müssen Sie zunächst sicherstellen, dass die Voraussetzungen erfüllt sind . Dann können wir die folgende Zeile in unsere etc/fstab
Datei einfügen:
<name_of_share> /path/to/mountpoint vboxsf <options> 0 0
Ersetzen Sie name_of_share
und /path/to/mountpoint
mit Ihrem individuellen Setup (das Verzeichnis für den Mountpoint muss zuerst erstellt werden). Informationen zum Einhängen finden Sie in der Manpage <options>
. Eine Möglichkeit besteht darin, mit defaults
oder bestimmte Mount-Optionen anzugeben (z rw, suid, exec, auto, users
. B. ).
Auf einigen Systemen ist das vboxsf
Kernelmodul noch nicht geladen, wenn fstab
es beim Booten gelesen wird. Es kann dann hilfreich sein, das vboxsf
Kernelmodul anzufügen /etc/modules
.
Einige Systeme benötigen möglicherweise eine Option comment=systemd.automount
in ihrem fstab-Eintrag ( Quelle ).
2. Montieren mit Virtual Box "automatische Montage":
In neueren Versionen von Virtual Box können wir freigegebene Ordner beim Erstellen automatisch bereitstellen:
Nach einem Neustart des Gasts wird dieser freigegebene Ordner in das Gastverzeichnis /media/<username>/sf_<name_of_share>
geladen, auf das alle Benutzer zugreifen können, die Mitglied der Gruppe wurden vboxsf
.
noauto
die fstab-Optionen einzugeben und sie später in der Regel in einem Startskript (wie z. profile), Option 2) Das Hauptproblem ist, dass vboxsf nicht geladen wird, bevor fstab ausgeführt wird. Hängen Sie esvboxsf
an die Datei an/etc/modules
und fordern Sie den Kernel auf, das Modul zu laden, bevor fstab ausgeführt wird. Vielleicht hilft das jemand anderem.Bearbeiten
/etc/rc.local
Vor dem
exit 0
Typ:sparen
(Optional) Erstellen Sie eine Verknüpfung zum Desktop oder Basisordner:
Um fehlerfrei zu booten, z. B. durch Drücken von S zum Überspringen des Ladevorgangs oder durch Drücken von M zum manuellen Reparieren, müssen Sie möglicherweise Ihren Eintrag in löschen
fstab
quelle
/etc/rc.local
mit diesemmount -t vboxsf [-o OPTIONS] sharename mountpoint
.sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) windows_share ~/shared/mount_point
und Folgendes in /etc/rc.local eingefügt, damit es funktioniert:mount -t vboxsf windows_share /home/dev/shared/mount_point
Wo dev mein Benutzer ist, funktioniert auch FYI / etc / fstab!mount
Befehl inrc.local
Skript zu meinem Benutzer - ID enthalten (2000
):mount.vboxsf -o rw,uid=1000 /home/mwittie/Dropbox Dropbox vboxsf
. PS Wenn jemand sucht nach einem Tutorial, wie zum Einschaltenrc.local
auf Ubuntu 17.04 dies für mich gearbeitet hat. PPS Ich musste vboxsf nicht einbinden/etc/modules
.Nach einem anstrengenden Morgen, in dem in Ubutntu 16.04 alles oben Genannte erfolglos in Virtualbox 5.0.20 ausprobiert wurde (besonders enttäuscht darüber, dass die rc.local-Lösung nicht funktioniert hat), funktionierte sie wie folgt:
Registrieren Sie über das Menü "Freigegebene Ordner" der Virtualbox-Benutzeroberfläche das erforderliche Verzeichnis, aber NICHT die automatische Bereitstellung oder die permanente Bereitstellung über Virtualbox. Andernfalls wird das Hostverzeichnis von root gemountet und es ist schwierig, auch von der Administratorgruppe aus auf Nicht-Root-Benutzer zuzugreifen.
Hinzufügen eines einfachen Eintrags in fstab:
Hinweisoption
noauto
- Andernfalls schlägt der Bootloader wie angegeben fehl.Fügen Sie die entsprechende Zeile
/etc/sudoers
mit dem Befehl visudo aus dem Gastbetriebssystem heraus wie folgt hinzu:Dies ermöglicht es Nicht-Root-Prozessen, dies spezifisch bereitzustellen (da fstab nicht mit der Option 'user' bereitgestellt werden kann ...)
Fügen Sie der .profile des Benutzers die entsprechende Zeile hinzu:
Jetzt ist das ausgewählte Host-Unterverzeichnis beim Login für den ausgewählten Benutzer fertig gemountet!
quelle
noauto
?Für neuere systembasierte Systeme benötigen Sie alternative Ansätze - der einfachste wird in einer anderen Antwort auf eine andere Frage erwähnt -, die im Grunde bedeuten, dass Sie
comment
dem/etc/fstab
Eintrag eine spezielle Option hinzufügen müssen :Damit dies jedoch auf einigen Systemen funktioniert, müssen Sie das Kontrollkästchen "Automatisch einhängen" im Dialogfeld "Freigegebene Ordner" von VirtualBox -> "Hinzufügen" aktivieren. Dies bedeutet, dass Sie möglicherweise einige doppelte Einhängepunkte des Verzeichnisses haben.
Für ein saubereres Mounten - ohne doppelte Verzeichnisse oder das Erfordernis des automatischen Mountens - müssen Sie die Anweisungen mount und automount von systemd verwenden . Erstellen Sie dazu zwei Einträge,
/usr/lib/systemd/system/
die nach Ihrem gewünschten Einhängepunkt benannt sind, z. B. um mit dem darüber liegenden fstab-Einhängepunkt übereinzustimmen. Sie würden benanntmy_mount-src_host.mount
und enthalten:und
my_mount-src_host.automount
:Dann müssen sie aktivieren:
Sie werden jetzt beim Booten montiert. Wenn Sie sie sofort bereitstellen möchten (vorausgesetzt, die freigegebenen Ordner wurden erstellt), können Sie dies tun:
Beachten Sie, dass Sie bei Verzeichnissen mit ungeraden Namen oder Bindestrichen (-)
systemd-escape
den entsprechend maskierten Namen suchen.quelle
comment=systemd.automount
funktioniert Ihre erste Lösung mit Option auch ohne aktivierte Automount VBox. Ich hatte tagelang Mühe, bevor ich deine Lösung fand. Danke!Ich habe die rc.local-Lösung ausprobiert, konnte sie jedoch nicht zum Laufen bringen.
Ich habe jedoch festgestellt, dass das Problem mit dem Ordner zusammenhängt, aus dem Sie den Befehl ausführen (keine Ahnung, warum). Deshalb habe ich vor dem Befehl mount eine Zeile hinzugefügt, um das Verzeichnis in meinen Ausgangsordner zu ändern, und jetzt funktioniert es.
Also, meine Windows-Freigabe heißt
Dropbox
, mein Mountpoint ist/home/jamie/Dropbox
, mein Benutzername istjamie
, das ist, was ich in rc.local geschrieben habe:quelle
sleep 2
bevor ich das Gerät montierte.Ich mache es in einem sehr ähnlichen Modus, der oben vorgeschlagen wurde, aber diese Skripte erstellen die erforderlichen und hängen den freigegebenen Ordner mit dem folgenden Skript ein oder aus:
Speichern Sie es als
/opt/.scripts/VBoxShared.sh
.Stellen Sie sicher, dass dies ausgeführt werden kann. Auf Shell-Typ:
Nun fügen wir eine Zeile hinzu, in der dieses Skript ausgeführt wird
rc.local
:und wir fügen diese Zeile vor der letzten Zeile hinzu (
exit 0
):Speichern ( CtrlO) und schließen ( CtrlX)
Zu diesem Zeitpunkt stellen wir automatisch alle freigegebenen Ordner bereit, die
<SharedFolder>
beim Start aufgelistet werden .Zum Abmelden benötigen wir nur Typ:
sudo nano /etc/rc6.d/K99-vboxsf-umount.sh
Speichern ( CtrlO) und schließen ( CtrlX)
Und das ist alles!
quelle
Hier ist eine funktionierende Lösung.
Als root (IE sudo su) Wechseln Sie in den Home-Ordner (cd ~) und erstellen Sie eine Cron-Datei:
vi cronjobs
Fügen Sie die folgenden
@reboot sleep 15 hinzu; mounten Sie -t vboxsf app / mnt / app
Datei speichern
Hinweis: Ersetzen Sie die App durch den Namen Ihres freigegebenen Ordners und / mnt / app, in dem Sie sie bereitstellen möchten. In diesem Fall habe ich zuerst die Ordner-App unter mount (mkdir app) erstellt.
So aktivieren Sie Ihren Cron als Root (für den obigen Dateinamen)
crontab cronjobs
Stellen Sie sicher, dass cron aktiv ist:
crontab -l
Neustart und es wird gemountet. 15 Sekunden Schlaf lassen genug Zeit für alles, um für das Reittier bereit zu sein.
quelle
Ich bin vor kurzem auf diesen Thread gestoßen, als nach dem Update auf Ubuntu LTS-18 (und ohne Änderungen an VirtualBox und nach der Neuinstallation der Erweiterungen und von blah-de-blah) die automatische Bereitstellung nicht mehr funktionierte. Die
sf_xxx
Verzeichnisse waren in vorhanden,/media/
aber keines von ihnen wurde tatsächlich eingehängt.Der Versuch, sie zu mounten
/etc/fstab
(wie in der VirtualBox-eigenen Dokumentation vorgeschlagen), schlug fehl: Der Startvorgang schlug im "Notfallmodus" fehl, selbst wenn ich die/etc/modules
Datei geändert hatte .Was hat schließlich arbeiten - obwohl ich es als stinkin betrachten Hack - ist der
crontab
Trick oben beschrieben.Bis heute habe ich keine Ahnung, "was kaputt ist".
quelle
Ich hatte ein Problem, bei dem ich den freigegebenen Ordner sehen konnte, aber es waren keine Dateien darin. Also habe ich einen ähnlichen Hack gemacht wie oben gezeigt:
Ich habe sichergestellt, dass sich mein Benutzer in der richtigen Gruppe (n) befindet, dass in fstab ein Eintrag zum Mounten der Freigabe vorhanden ist, dass die Berechtigungen korrekt festgelegt wurden und dass das automatische Mounten in den VirtualBox-Einstellungen aktiviert ist, aber immer noch nicht Dateien zu sehen.
Also habe ich die Startup Applications-App in der Ubuntu 18.04-GUI geöffnet und eine Aufgabe erstellt, die einfach "sudo mount -a" direkt beim Start ausführte. Aus irgendeinem Grund wurde der freigegebene Ordner nicht korrekt gemountet, als fstab beim Booten automatisch analysiert wurde. Das erneute Mounten schien also das Problem zu beheben. Jetzt kann ich die Dateien in der Freigabe sehen.
quelle
Ich habe hier alle Lösungen ausprobiert und keine hat funktioniert.
Was funktionierte war, Supervisor zu installieren und ein Python-Skript auszuführen.
Supervisor installieren
apt-get install supervisor
Python-Skript (meins war unter /home/ubuntu/shared_folders.py)
Konfigurationsdatei für Supervisor erstellen
nano /etc/supervisor/conf.d/sharedfolders.conf
[program:shared_folders] command=python shared_folders.py directory=/home/ubuntu process_name=%(program_name)s_%(process_num)s numprocs=1 numprocs_start=0 autostart=true autorestart=true startsecs=1 startretries=3 exitcodes=0,2 stopsignal=TERM stopwaitsecs=10 ;user=pavelp redirect_stderr=true stdout_logfile=/var/log/supervisor/qlistener-stdout.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=10 stdout_capture_maxbytes=0 stdout_events_enabled=false stderr_logfile=/var/log/supervisor/qlistener-stderr.log stderr_logfile_maxbytes=50MB stderr_logfile_backups=10 stderr_capture_maxbytes=0 stderr_events_enabled=false environment=APPLICATION_ENV=development serverurl=AUTO
Öffne supervisorctl
sudo supervisorctl
Konfiguration lesen
reread
Konfiguration hinzufügen
add shared_folders
quelle
(In meinem Fall ist mein Host-Betriebssystem Mac OS X und mein Gast-Betriebssystem Ubuntu.)
Keine der oben genannten Lösungen und die hier und hier genannten Lösungen haben für mich funktioniert. Bei allen gab es ein Problem.
Folgendes habe ich endlich getan, um das Problem zu lösen:
1- Ich habe in der VirtualBox-Benutzeroberfläche einen freigegebenen Ordner erstellt, der auf einen Ordner
VMShares
in meinem Mac OS zeigt und diesen benenntwd
2- Dann habe ich die Ubuntu Guest Addition-Tools installiert (Neustart erforderlich)
3- Dann habe ich in meinem Gastbetriebssystem einen Ordner als Einhängepunkt angelegt (in meinem Fall war der Name
/home/fashid/host
)4- Dann bin ich gelaufen:
Mit diesem Befehl sollte sichergestellt werden, dass die Freigabe für das Gastbetriebssystem verfügbar ist. In der Zwischenzeit müssen Sie sie in Ihrem Gastbetriebssystem bereitstellen, um sie tatsächlich verfügbar zu machen.
Es wird etwas zeigen wie:
Das ist der Trick! Es zeigt den tatsächlichen Namen, den Sie unterhalb des Befehls eingeben müssen, um es tatsächlich bereitzustellen und in Ihrem Gastbetriebssystem verfügbar zu machen:
Wussten Sie, worum es geht? Wd habe ich später nirgends benutzt. In Schritt 3 musste ich den tatsächlichen (Host-) Ordnernamen anstelle des im GUI-Dialogfeld zugewiesenen willkürlichen Namens übernehmen.
Über die obigen Schritte wurde mein Problem gelöst.
quelle