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:
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_/___
------
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:
StartupParameter.plist: /Library/StartupItems/mountvoyager/StartupParameter.plist:#!/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"
{
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: