Die eigentliche Installation verläuft problemlos, es benötigt jedoch ein paar Vorbereitungen und die Usability kann durch Multicast DNS stark verbessert werden. So sehen die OS X-Clients den Server direkt im Finder. Beginnen wir mit den Vorbereitungen…
System vorbereiten
Opensolaris hat standardmässig die GNU Entwicklungs-Tools nicht installiert. Dies kann mit einem Befehl nachgeholt werden:
pfexec pkg install gcc-dev
Installation der BDB
Ohne BDB lässt sich netatalk nicht kompilieren. Die Version 4.8.30 funktioniert einwandfrei und kann von Oracle heruntergeladen werden.
Die Installation ist ein wenig speziell:
cd build_unix
../dist/configure --prefix=/usr/local
make -j5
pfexec make install
Installation netatalk
Bei älteren Opensolaris-Versionen muss möglicherweise noch PAM deaktiviert werden. Unter r134 ist dies nicht mehr nötig:
./configure --sysconfdir=/etc
make -j5
pfexec make install
Multicast DNS einrichten
Zum starten benötigen wir ein kurzes Shell-Script, das unter /lib/svc/method/dnssd-afp gespeichert wird.
#!/sbin/sh # # Registers the AFP daemon with dns-sd. # /usr/bin/dns-sd -R "$(hostname)" _afpovertcp._tcp local 548 & /usr/bin/dns-sd -R "$(hostname)" _device-info._tcp. local 548 model=Xserve & # Sleep to ensure service has enough time to start up, # otherwise SMF will timeout waiting for it to be ready. sleep 5
pfexec chown root:bin /lib/svc/method/dnssd-afp
pfexec chmod +x /lib/svc/method/dnssd-afp
Diese XML-Datei kann später in svc importiert werden und muss als /var/svc/manifest/site/dnssd-afp.xml abgelegt werden.
<?xml version="1.0"?> <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> <service_bundle type="manifest" name="dnssd-afp"> <service name="site/dnssd-afp" type="service" version="1"> <single_instance/> <dependency name="filesystem-local" grouping="require_all" restart_on="none" type="service"> <service_fmri value="svc:/system/filesystem/local:default"/> </dependency> <dependency name="dns-multicast" grouping="require_all" restart_on="none" type="service"> <service_fmri value="svc:/network/dns/multicast:default"/> </dependency> <exec_method type="method" name="start" exec="/lib/svc/method/dnssd-afp" timeout_seconds="60"> <method_context> <method_credential user="root" group="root"/> </method_context> </exec_method> <exec_method type="method" name="stop" exec=":kill" timeout_seconds="60"> </exec_method> <instance name="default" enabled="false" /> <stability value="Unstable" /> <template> <common_name> <loctext xml:lang="C"> dns-sd registration of afp daemon </loctext> </common_name> <documentation> <manpage title="dns-sd" section="1M" manpath="/usr/man"/> </documentation> </template> </service> </service_bundle>
Dieses Script benötigt Unterstützung vom System Multicast Service. Dieser muss daher erst aktiviert werden mit:
pfexec svcadm enable multicast
Nun kann die oben erstellte XML-Datei importiert und dann der neue Service gestartet werden:
pfexec svccfg -v import /var/svc/manifest/site/dnssd-afp.xml
pfexec svcadm enable dnssd-afp
Nun sollte der Service in Betrieb sein und der Opensolaris Server im Finder von Mac OS X-Clients auftauchen. Falls nicht, sollte der Inhalt der Logdatei ‚/var/svc/log/site-dnssd-afp:default.log‘ geprüft werden.
Quellen
– Caffeinated: Making netatalk discoverable in OpenSolaris