Anleitung zum automatischen Mounten von AFP Shares

maceis

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
hallo zusammen drumm,

aufgrund einer Frage im Mac OS X Bereich habe ich mich mit dem o. g. Thema mal näher beschäftigt.

Vorgeschichte:
Volumes automatisch mounten

Aufgabe:
1. Netzwerk Volumes (hier mit Apple Filesharing) sollen bei jedem Systemstart automatisch gemountet werden.
2. Das Mounten soll benutzerunabhängig und vor dem Login passieren.
3. Die Lösung soll auch auf reinen Darwin Systemen (ohne Aqua) funktionieren.
4. Unter Aqua sollen keine Finder Fenster geöffnet werden, die man dann wieder schließen muss (mauell oder per Skript)

Lösungsansatz:
Es wird eine voll funktionsfähiges StatrupItem erstell.
Dieses besteht aus einem Bundle, welches aus folgenden Bestandteilen besteht
- Ordner mit frei wählbarem Namen und dem folgenden Inhalt
- Das eigentliche StartupItem; dies ist eine ausführbare Datei, die exakt gleich benannt werden muss, wie der enthaltende Ordner. Sie wird bei richtiger Konfiguration mit root-Berechtigung ausgeführt, auch wenn keine SUID Bit gesetzt ist
- Eine Datei, die "StartupParameter.plist" genannt werden muss. In dieser müssen dem Betriebssystem Informationen in einem genau definierten Format übergeben werden, um den richtigen Zeitpunkt beim Start zu bestimmen.
Es macht beispielsweise keinen Sinn, einen mount-Befehl aufzurufen, wenn das Netzwerk noch gar nicht lebt.

Der Speicherort, den Apple für benutzerdefinierte StartupItems vorsieht ist:
/Library/StartupItems

konkrete Lösung

ich führe hier eine Lösung in folgender Umgebung vor:

IP Adresse des afp-File Servers: 192.168.100.13
Benutzerkonto auf dem File Server: maceis
Passwort dieses Benutzers auf dem File Server: passwort
afp Share auf dem File Server: iBook Panther
mount Punkt (Verzeichnis) auf der lokalen Maschine: /voyager
Inhalt des Bundles:
Ordner: /Library/StartupItems/mountvoyager
ausführbare Datei (ein Shellscript): /Library/StartupItems/mountvoyager/mountvoyager:
#!/bin/sh
#
. /etc/rc.common
#
StartService ()
{
ConsoleMessage "Creating /voyager"
mkdir /voyager
echo date: `date` - $? mkdir >> /var/log/mountvoyager.log
ConsoleMessage "Mounting voyager"
mount_afp -o automounted afp://maceis:passwort@192.168.100.13/iBook%20Panther /voyager
echo date: `date` - $? mount_afp >> /var/log/mountvoyager.log
}

StopService ()
{
return 0
}

RestartService ()
{
return 0
}

RunService "$1"
StartupParameter.plist: /Library/StartupItems/mountvoyager/StartupParameter.plist:
{
Description = "Mounten von Voyager";
Provides = ("voyager_Share");
Requires = ("Apple File Service");
Uses = ("");
OrderPreference = "none";
}

Es werden Einträge in den Dateien:
- /var/log/system.log
- /var/log/mountvoyager.log
erstellt.
Außerdem gibt es während des Boot-Vorgangs Statusmeldungen auf der Boot-Konsole.
Um eine beliebige Anzahl von Shares zu mounten, kann das Shellskript natürlich leicht erweitert werden.
Um den Startvorgang (vor allem, wenn tatsächlich viele Volumes gemountet werden) zu beschleunigen, sind noch Verbesserungen möglich un zu empfehlen.

------
.(*>.... feedback und Kritik ist erwünscht .
.//\
V_/___
------
 
Zuletzt bearbeitet:
Vielleicht zwei kleine Anmerkungen dazu:
1. Volumes (z.B. eingelegte CDs oder AFP-Volumes über Apfel-K) werden in Mac OS X normalerweise nach /Volumes gemountet. Das Verzeichnis ist daher auch immer vorhanden. Man könnte also im Startscript die Zeile mkdir /voyager (zusammen mit den beiden dazu gehörenden Zeilen darüber und darunter) rauslassen und im automount-Befehl /voyager durch /volumes ersetzten.
2. Benutzername und Passwort werden hierbei unverschlüsselt im Klartext über das Netzwerk übertragen.


P.S. Ich würde das StartupItem für die bessere Erkennbarkeit eher "AFPAutomount" o.ä. nennen. Bei Apple ist es ja Usus, eindeutig beschreibende Objektnamen zu wählen.
 
hallo ._ut

vielen Dank für dein feedback.

Mal von unten nach oben:
PS:
sicher richtig, war mir jetzt aber nicht so wichtig (der name).
der DNS name meines iBooks ist "voyager.meine.domäne"
- kann natürlich keiner wissen, aber daher kommt der name halt

2. Der Einwand ist richtig, man kann auch kerberos verwenden (oder was anderes), ich wollte es aber nicht weiter komplizieren.

1. wird dann nicht opaque über die bestehenden Volumes gemountet.
Wenn man unter" /Volumes" mounten möchte, würde ich eher ein Verzeichnis unterhalb von "/Volumes" verwenden.

Außerdem habe ich bemerkt, dass das Volume beim unmounten gelöscht wird (warum habe ich noch nicht verstanden, aber da bin ich dran)
wäre mir bei "/Volumes" zu riskant :D
 
hallo zusammen,

ich hab mein Startup Skript noch etwas erweitert und verbessert:
aktueller Stand ist der:

#!/bin/sh
#
. /etc/rc.common
#
StartService ()
{
ConsoleMessage "Creating /Volumes/Network/voyager"
mkdir -p /Volumes/Network/voyager
echo date: `date` - $? mkdir >> /var/log/mountvoyager.log
ConsoleMessage "Mounting voyager"
mount_afp afp://maceis:passwort@192.168.100.13/iBook%20Panther /Volumes/Network/voyager &
echo date: `date` - $? mount_afp >> /var/log/mountvoyager.log
}

StopService ()
{
umount /Volumes/Network/voyager
rmdir /Volumes/Network/voyager
}

RestartService ()
{
return 0
}

RunService "$1"


Ich mounte jetzt also unter /Volumes/Network/voyager (voyager ist der hostname der remote Maschine) und ich habe das Skript um eine "stop" Anweisung ergänzt.

Auf die Option -o automount verzichte ich, dann erscheint das Volume wie eine lokales Volume im Sidebar und auf dem Desktop (wenn dies so in den Findereinstellungen konfiguriert wird, bei mir nur im Sidebar)
Es ist aber anhand des Icons als Netzwerkvolume erkennbar

Durch das & am Ende des Mount Befehls, wird der Befehl im Hintergrund gestartet.
Das hat die erfreuliche Folge, dass die Bootdauer nicht länger ist als ohne mount-Befehl.
Auch nicht, wenn 10 Volumes gemountet werden würden oder wenn die Volumes nicht online sind.

Das Ende der Fahnenstange ist aber immer noch nicht erreicht :)
 
Hallo,

Also ich hab das mal ausprobiert.
Leider sind die Zugriffsrechte nur für den root gesetzt. Andere können auch nicht lesen oder schreiben.
Der Laufwerk wird zwar, wie gewünscht auf dem Desktop angezeigt. Das Laufwerk ist aber komplett leer.

Gibts da auch eine Lösung?
Hab schon das mkdir mit der Option -m 777 gemacht. Passiert nur genau das gleiche.

lg
sunni
 
hallo sungeri,

das ist ja eigenartig, denn das Startupskript wird zwar mit rootrechten ausgeführt, aber der Mountbefehl enthält ja die Credentials des Benutzers, und dessen Benutzerrechte gelten dann auch.

Bei mir funktioniert das auch soweit.
-------------
Es gibt noch einen kleinen Fehler, den ich in Kürze korrigieren werde.
Dieser hat zur Folge, dass es unter ganz bestimmten Bedingungen nicht funktioniert.

Um zu checken, ob dies bei Dir zutrifft, würde ich Dich um folgendes bitten:

1. poste das Ergebnis des Befehls
mount

2. poste den Inhalt des logfiles
dieses muss allerdings manuell angelegt werden:
> sudo touch /var/log/mountvoyager.log
> sudo chmod 666 /var/log/mountvoyager.log


3. Sieh´ nach, ob "Personal File Sharing" auf dem Rechner aktiv ist, auf dem du das StartUpItem laufen hast (sonst geht es i. d. R. nicht automatisch beim Booten und du bekommst einen leeren Ordner).
Das ist ein Fehler, den ich (vermutlich heute abend) beheben werde.
Auf dem FileServermuss "Personal File Sharing" in jedem Fall laufen

4. Führe folgenden Befehl im Terminal aus und sieh nach, ob es so geht:
> sudo /Library/StartupItems/mountvoyager/mountvoyager start

Vielen Dank für Dein Feedback
 
Mit diesem Tool geht es ein bisschen einfacher:

Hier ist eine Lösung!

Gruss
 
OK, ist schon 'ne Weile her aber die Software ist da leider nicht mehr verfügbar. Und dabei ist das genau das was ich suche!
 
  • Gefällt mir
Reaktionen: petjek
Ups. Seite offline?
 
So. Seite ist wieder online und runtergeladen hab ich's mir auch. Dumm nur, das sich das Programm jedes mal eine Sekunde nach dem Start mit einem Fehler verabschiedet.
Von wegen: "Das Programm MountWatcher wurde unerwartet beendet".
:suspect:
 
Eigentlich braucht man dafür gar kein Programm. Man muss nur die entsprechenden Einträge in der NetInfo-Datenbank vornehmen. Hier beschrieben für NFS, geht aber auch für AFP:

Wer unbedingt ein Programm benötigt, findet hier ein weiteres Programm: http://jm.marino.free.fr/?switch=sw_&title=automountmaker
 
Hallo,

ich habe das ganze unter Lino ausprobiert jedoch ohne erfolg. Funktioniert das überhauptnoch mit Lion ?

Gruß,

Janosch
 
Würde mich auch interessieren…

…ich will „Auswahl“ aus OS 9 zurück haben (Volume wählen, klick bei „immer“, fertig.)… :)

Gruß,
Jörg
 
Zurück
Oben Unten