openSuse11.3 in VirtualBox: shared directory geht nur manuell

hi,

ich habe openSuse11.3 in einer virtual machine (VirtualBox 4.1) laufen.
Nach jedem Start muss ich manuell einen gemeinsamen Ordner mit “mount” einhängen.
Im Forum von VirtualBox scheinen nur Leute mit anderen Linux-Versionen zu arbeiten. Jedenfalls erhielt ich dort nur Tipps, wie man einen gemeinsamen Ordner mit Ubuntu, etc. automatisch beim Starten von Linux mounten kann. In fstab funktioniert es nicht, weil die virtual Machine erst nach fstab gestartet wird. Ein anderer Ort (Name weiß ich gerade nicht mehr) klappt auch nicht, weil es diese Datei in openSuse nicht gibt.

Hat jemand eine Idee oder Erfahrung, wo man das mount-Kommando unterbringen kann, sodass der gemeinsame Ordner automatisch eingehängt wird?

Niko

Hi,

pack das mount Kommando einfach in eine text-Datei unter:

/etc/init.d/rc5.d/S99mount_vbox

Damit wird das Kommando ganz am Ende des runlevel 5 (grafische Oberfläche) ausgeführt.

Hi,

danke für den Tipp.
Ich habe also eine Datei S99mount_vbox erzeugt mit folgendem Inhalt:

mount -t vboxsf -o uid=1000,gid=100 E_DRIVE /mnt/e_drive

und sie mit Root-Rechten nach /etc/init.d/rc5.d/ gespeichert.
Die Auflistung mit ll sieht so aus:

-rwxrwxrwx 1 root root 57 29. Dez 17:17 /etc/init.d/rc5.d/S99mount_vbox

Wenn ich nun openSuse11.3 in der virtual machine neu starte, dann wird nichts gemountet.
Das Mounten funktioniert aber, wenn ich es als Root (mit sudo im Verzeichnis /etc/init.d/rc5.d) aufrufe:

./S99mount_vbox

Was mache ich noch falsch?

Niko

Hi,

der init Prozess ist doch etwas komplexer, ich habe aber eine passende Lösung für Dich gefunden.
Benutze Dein mount Kommando in der Datei

/etc/init.d/after.local

Dort kannst Du mit Hilfe der Variable $RUNLEVEL für bestimmte runlevel (in Deinem Falle die 5) Kommandos ausführen lassen.
Baue also den mount dort ein, zusammen mit einer Prüfung des runlevels (damit das mount Kommando nur in diesem ausgeführt wird):

 $RUNLEVEL -wq 5 ] && mount...

hi,

mit der Datei after.local im Verzeichnis /etc/init.d/ klappt es leider auch nicht.
Diese Datei gab es bisher nicht, weshalb ich sie neu erstellen musste, mit dem Inhalt:

  • $RUNLEVEL -wq 5 ] && mount -t vboxsf -o uid=1000,gid=100 E_DRIVE /mnt/e_drive
    echo e_drive mounted!*

Nach dem Hochlaufen von Linux passiert nichts, d.h. keine Fehlermeldung, kein echo-Text und kein Mounten.
Wenn ich als root diese Datei ausführe, also:

/etc/init.d/after.local

dann erhalte ich folgende Fehlermeldung:

/etc/init.d/after.local: Zeile 1: : -wq: Einstelliger (unärer) Operator erwartet.

Mit der Kommandozeile in Linux hab ich’s nicht so. Der Ausdruck $RUNLEVEL -wq 5 ] && … ist für mich ein böhmisches Dorf.
Hab ich vielleicht noch etwas falsch gemacht? :shame:

klaus88x

Was ich bei Deinen Ausführungen nicht so ganz verstehe:
Was ist das Host-Betriebssystem (Opensuse 11.3?)
Was ist das Gast-Betriebssystem (klar: Opensuse 11.3)

Hier mal ein Link zu einerm guten howto von VirtualBox, ausgearbeitet von stefan.becker, einem Kenner der Materie Virtualisierung.
Für Dich sollte Kapitel 5 evtl. interessant sein.
VirtualBox - linuxforen.de – User helfen Usern

Nachtrag (da mein Beitrag nicht mehr änderbar)

Welche genaue Version von VirtualBox ist installiert und woher kommt die (4.1 fängt bei 4.1.0 an und hört bei 4.1.8 (bis jetzt) auf)?
Sind die Extensions in der gleichen Version installiert?
Gasterweiterungen (im Gast) installiert?

Da war der Fehlerteufel bei mir am Werk…mach mal bitte aus “wq” ein “eq” :slight_smile:

Es klappt leider nicht. Ich hab’s mit -eq und mit eq probiert. Die Fehlermeldung lautet immer gleich: “Einstelliger (unärer) Operator erwartet”. Ich verstehe die Fehlermeldung so, dass er anstatt wq oder eq nur einen Buchstaben haben will. Ich probiere mal =.

klaus88x

Der Test, das script selbst auf Kommandozeile auszuführen, klappt nur, wenn die Variable $RUNLEVEL auch existiert.
Zur Laufzeit des Systems ist diese nicht gesetzt, wohl aber beim booten.

Um das script selbst zu testen, musst Du die Variable manuell in Deiner Umgebung setzen:

export RUNLEVEL=5

Danach das script ausführen, “-eq” ist schon richtig.

hi matchi,

danke für die Geduld mit mir.
Die Methode mit $RUNLEVEL -eq 5] && mount … funktioniert doch :slight_smile:

Ich bin hier einer Falschmeldung aufgesessen. Wenn ich Linux hochfahre, dann wird auf der KDE-Oberfläche automatisch der Konqueror gestartet. Da ich regelmäßig mit dem shared Laufwerk, e_drive, arbeite, ist im Konqueror stets ein Pfad dorthin eingestellt.
Nach dem Hochlaufen des Systems bekomme ich nun jedesmal die Meldung, dass das Laufwerk e_drive nicht existiere. Daraus schloss ich, dass es nicht gemountet ist. Stutzig machte mich seit der Implementation der Methode mit $RUNLEVEL -eq 5] && mount …, dass ich nach manuellem Mounten die Meldung bekam, ein Parameter in meinem Mount-Befehl sei falsch, obwohl genau dieses Mount-Kommando bisher immer funktionierte. Das Laufwerk e_drive war dann aber trotzdem vorhanden.

Ich kann also die Meldung, dass e_drive nicht vorhanden sei, ignorieren, muss aber im Konqueror die Taste F5 drücken (Ansicht neu laden), und dann ist das Laufwerk sichtbar!
Der Konqueror scheint da noch eine Schwäche zu haben.

Danke nochmals und Gruß

klaus88x

P.S.: Sauerlands Frage möchte ich auch noch beantworten:
Ich habe VirtualBox 4.1.4, das von Win7 als Host-OS gestartet wird. OpenSuse 11.3 läuft dann als Guest-OS in der virtuellen Maschine.