Table of Contents
Upgrading to Netatalk 4 from Netatalk 3 is trivial. Just install the new version on top of the old one. The primary difference is that Netatalk 4 brings back essential AppleTalk services, configuration files, and man pages that were removed between Netatalk 2 and Netatalk 3.
There are three major changes between Netatalk 2 and Netatalk 4:
New configuration file afp.conf
, obsoleting all
previous configuration files and renaming most options.
New AppleDouble backend "appledouble = ea
"
which stores Mac metadata and resource forks in extended attributes
of the filesystem.
The AppleTalk transport layer is disabled by default. If you
want to use Netatalk with very old Macs, turn it on with the
"appletalk = yes
" option.
ini style syntax (akin to Samba's smb.conf)
one to rule them all: configure AFP settings and volumes in one file
obsoletes afpd.conf
,
netatalk.conf
,
AppleVolumes.default
and
afp_ldap.conf
most option names have changed, read the full manpage afp.conf for details
New AppleDouble backend "appledouble = ea
" which
stores Mac metadata and resource forks in extended attributes of the
filesystem.
default backend (!)
requires a filesystem with Extended Attributes, fallback is
"appledouble = v2
"
converts filesystems from "appledouble =
v2
" to "appledouble = ea
" on the fly
when accessed (can be disabled)
dbd can be used to do conversion in one shot
Implementation details:
stores Mac Metadata (eg FinderInfo, AFP Flags, Comment,
CNID) in an Extended Attributed named
“org.netatalk.Metadata
”
stores Mac ResourceFork either in
an Extended Attribute named
“org.netatalk.ResourceFork
” on Solaris
w. ZFS, or in
an extra AppleDouble file named
“._file
” for a file named
“file
”
the format of the ._ file is exactly as the Mac’s CIFS
client expects it when accessing the same filesystem via a CIFS
server (Samba), thus you can have parallel access from Macs to the
same dataset via AFP and CIFS without the risk of loosing data
(resources or metadata). Accessing the same dataset with CIFS from
Windows clients will still break the coupling of
“file
” and “._file
” on
non ZFS filesystems (see above), so for this we still need an
enhanced Samba VFS module (in the works).
New service controller daemon netatalk which is responsible for starting and restarting the AFP and CNID daemons. All bundled start scripts have been updated, make sure to update yours!
The CNID databases are now stored under
/var/netatalk/CNID/
by default.
Netatalk 2.x volume options “usedots” and “upriv” now enabled by default
Removed SLP and AFP proxy support
Removed type/creator extension mapping support
Stop Netatalk 2.x
Install Netatalk 4
Manually recreate configurations in
afp.conf
and extmap.conf
Update your Netatalk init script to start netatalk instead of afpd and cnid_metad, or replace it with the appropriate stock init script for your system.
Move afp_voluuid.conf
and
afp_signature.conf
to the localstate
directory (default /var/netatalk/
), you can
use afpd -v in order to find the correct
path
Start Netatalk 4
Table 5.1. old and new configuration file names
Old File Name | New File Name | Description |
---|---|---|
- | etc/afp.conf | new ini-style format |
- | etc/extmap.conf | starting with netatalk 3.0.2 |
etc/netatalk/afp_signature.conf | var/netatalk/afp_signature.conf | moved to $localstatedir |
etc/netatalk/afp_voluuid.conf | var/netatalk/afp_voluuid.conf | moved to $localstatedir |
etc/netatalk/netatalk.conf
(/etc/default/netatalk ) | - | obsolete |
etc/netatalk/afpd.conf | - | obsolete |
etc/netatalk/afp_ldap.conf | - | obsolete |
etc/netatalk/AppleVolumes.default | - | obsolete |
etc/netatalk/AppleVolumes.system | - | obsolete |
~/.AppleVolumes | - | obsolete |
Table 5.2. from netatalk.conf (/etc/default/netatalk) to afp.conf
Old netatalk.conf | New afp.conf | Old Default Value | New Default Value | Section | Description |
---|---|---|---|---|---|
ATALK_NAME | hostname | - | - | (G) | use gethostname() by default |
ATALK_UNIX_CHARSET | unix charset | LOCALE | UTF8 | (G) | - |
ATALK_MAC_CHARSET | mac charset | MAC_ROMAN | MAC_ROMAN | (G)/(V) | - |
CNID_METAD_RUN | - | yes | - | - | controlled by netatalk(8) |
AFPD_RUN | - | yes | - | - | controlled by netatalk(8) |
AFPD_MAX_CLIENTS | max connections | 20 | 200 | (G) | - |
AFPD_UAMLIST | uam list | -U uams_dhx.so,uams_dhx2.so | uams_dhx.so uams_dhx2.so | (G) | - |
AFPD_GUEST | guest account | nobody | nobody | (G) | - |
CNID_CONFIG | log level | -l log_note | cnid:note | (G) | - |
CNID_CONFIG | log file | - | - | (G) | - |
ATALKD_RUN | - | no | - | - | controlled by the init system |
PAPD_RUN | - | no | - | - | controlled by the init system |
TIMELORD_RUN | - | no | - | - | controlled by the init system |
A2BOOT_RUN | - | no | - | - | controlled by the init system |
ATALK_BGROUND | - | no | - | - | controlled by the init system |
ATALK_ZONE | ddp zone | - | - | (G) | Reinstated in 4.0 |
Table 5.3. from afpd.conf to afp.conf
Old afpd.conf | New afp.conf | Old Default Value | New Default Value | Section | Description |
---|---|---|---|---|---|
1st field ("-" or "server name") | hostname | - | - | (G) | use gethostname() by default |
-uamlist | uam list | uams_dhx.so,uams_dhx2.so | uams_dhx.so uams_dhx2.so | (G) | - |
-nozeroconf | zeroconf | - | yes (if supported) | (G) | - |
-advertise_ssh | advertise ssh | - | no | (G) | - |
-[no]savepassword | save password | -savepassword | yes | (G) | - |
-[no]setpassword | set password | -nosetpassword | no | (G) | - |
-client_polling | client polling | - | no | (G) | - |
-hostname | hostname | - | - | (G) | use gethostname() by default |
-loginmesg | login message | - | - | (G)/(V) | - |
-guestname | guest account | nobody | nobody | (G) | - |
-passwdfile | passwd file | afppasswd | afppasswd | (G) | - |
-passwdminlen | passwd minlen | - | - | (G) | - |
-tickleval | tickleval | 30 | 30 | (G) | - |
-timeout | timeout | 4 | 4 | (G) | - |
-sleep | sleep time | 10 | 10 | (G) | - |
-dsireadbuf | dsireadbuf | 12 | 12 | (G) | - |
-server_quantum | server quantum | 303840 | 1048576 | (G) | - |
-volnamelen | volnamelen | 80 | 80 | (G) | - |
-setuplog | log level | default log_note | default:note | (G) | - |
-setuplog | log file | - | - | (G) | - |
-admingroup | admingroup | - | - | (G) | - |
-k5service | k5 service | - | - | (G) | - |
-k5realm | k5 realm | - | - | (G) | - |
-k5keytab | k5 keytab | - | - | (G) | - |
-uampath | uam path | etc/netatalk/uams/ | lib/netatalk/ | (G) | moved to $libdir |
-ipaddr | afp listen | - | - | (G) | - |
-cnidserver | cnid server | localhost:4700 | localhost:4700 | (G)/(V) | - |
-port | port | 548 | 548 | (G) | - |
-signature | signature | auto | - | (G) | - |
-fqdn | fqdn | - | - | (G) | - |
-unixcodepage | unix charset | LOCALE | UTF8 | (G) | - |
-maccodepage | mac charset | MAC_ROMAN | MAC_ROMAN | (G)/(V) | - |
-closevol | close vol | - | no | (G) | - |
-ntdomain | nt domain | - | - | (G) | - |
-ntseparator | nt separator | - | - | (G) | - |
-dircachesize | dircachesize | 8192 | 8192 | (G) | - |
-tcpsndbuf | tcpsndbuf | - | - | (G) | OS default |
-tcprcvbuf | tcprcvbuf | - | - | (G) | OS default |
-fcelistener | fce listener | - | - | (G) | - |
-fcecoalesce | fce coalesce | - | - | (G) | - |
-fceevents | fce events | - | - | (G) | - |
-fceholdfmod | fce holdfmod | 60 | 60 | (G) | - |
-mimicmodel | mimic model | - | - | (G) | - |
-adminauthuser | admin auth user | - | - | (G) | - |
-noacl2maccess | map acls | - | rights | (G) | - |
-[no]tcp | - | -tcp | - | - | TCP transport layer is always enabled |
-[no]ddp | appletalk | -ddp | no | (G) | Reinstated in 4.0 |
-[no]transall | - | -transall | - | - | TCP transport layer is always enabled |
-nodebug | - | - | - | - | obsolete |
-[no]slp | - | -noslp | - | - | SLP support is obsoleted |
-[no]uservolfirst | - | -nouservolfirst | - | - | uservol is obsoleted |
-[no]uservol | - | -uservol | - | - | uservol is obsoleted |
-proxy | - | - | - | - | obsolete |
-defaultvol | - | AppleVolumes.default | - | - | afp.conf only |
-systemvol | - | AppleVolumes.system | - | - | afp.conf only |
-loginmaxfail | - | - | - | - | not supported from the beginning |
-unsetuplog | - | - | - | - | obsolete |
-authprintdir | - | - | - | - | CAP style auth is obsoleted |
-ddpaddr | ddp address | 0.0 | 0.0 | (G) | Reinstated in 4.0 |
-[no]icon | - | -noicon | - | obsolete | |
-keepsessions | - | - | - | - | obsolete. Use kill -HUP. |
Table 5.4. from afp_ldap.conf to afp.conf
Old afp_ldap.conf | New afp.conf | Old Default Value | New Defalut Value | Section | Description |
---|---|---|---|---|---|
ldap_server | ldap server | - | - | (G) | - |
ldap_auth_method | ldap auth method | - | - | (G) | - |
ldap_auth_dn | ldap auth dn | - | - | (G) | - |
ldap_auth_pw | ldap auth pw | - | - | (G) | - |
ldap_userbase | ldap userbase | - | - | (G) | - |
ldap_userscope | ldap userscope | - | - | (G) | - |
ldap_groupbase | ldap groupbase | - | - | (G) | - |
ldap_groupscope | ldap groupscope | - | - | (G) | - |
ldap_uuid_attr | ldap uuid attr | - | - | (G) | - |
ldap_uuid_string | ldap uuid string | - | - | (G) | - |
ldap_name_attr | ldap name attr | - | - | (G) | - |
ldap_group_attr | ldap group attr | - | - | (G) | - |
Table 5.5. from AppleVolumes.* to afp.conf
Old AppleVolumes.* | New afp.conf | Old Default Value | New Defalut Value | Section | Description |
---|---|---|---|---|---|
(leading-dot lines) | - | - | - | - | move to extmap.conf |
:DEFAULT: | - | options:upriv,usedots | - | - | use "vol preset" |
1st field ("~") | - | - | - | - | use [Homes] section |
1st field ("/path") | path | - | - | (V) | - |
2nd field | - | - | - | - | use section name |
allow: | valid users | - | - | (V) | - |
deny: | invalid users | - | - | (V) | - |
rwlist: | rwlist | - | - | (V) | - |
rolist: | rolist | - | - | (V) | - |
volcharset: | vol charset | UTF8 | (same as unix charset) | (G)/(V) | - |
maccharset: | mac charset | MAC_ROMAN | MAC_ROMAN | (G)/(V) | - |
veto: | veto files | - | - | (V) | - |
cnidscheme: | cnid scheme | dbd | dbd | (V) | - |
casefold: | casefold | - | - | (V) | - |
adouble: | appledouble | v2 | ea | (V) | v1, osx and sfm are obsoleted |
cnidserver: | cnid server | localhost:4700 | localhost:4700 | (G)/(V) | - |
dbpath: | vol dbpath | (volume directory) | var/netatalk/CNID/ | (G) | moved to $localstatedir |
umask: | umask | 0000 | 0000 | (V) | - |
dperm: | directory perm | 0000 | 0000 | (V) | - |
fperm: | file perm | 0000 | 0000 | (V) | - |
password: | password | - | - | (V) | - |
root_preexec: | root preexec | - | - | (V) | - |
preexec: | preexec | - | - | (V) | - |
root_postexec: | root postexec | - | - | (V) | - |
postexec: | postexec | - | - | (V) | - |
allowed_hosts: | hosts allow | - | - | (V) | - |
denied_hosts: | hosts deny | - | - | (V) | - |
ea: | ea | auto | auto | (V) | - |
volsizelimit: | vol size limit | - | - | (V) | - |
perm: | - | - | - | - | Use "directory perm" and "file perm" |
forceuid: | - | - | - | - | obsolete |
forcegid: | - | - | - | - | obsolete |
options:ro | read only | - | no | (V) | - |
options:invisibledots | invisible dots | - | no | (V) | - |
options:nostat | stat vol | - | yes | (V) | - |
options:preexec_close | preexec close | - | no | (V) | - |
options:root_preexec_close | root preexec close | - | no | (V) | - |
options:upriv | unix priv | - | yes | (V) | - |
options:nodev | cnid dev | - | yes | (V) | - |
options:illegalseq | illegal seq | - | no | (V) | - |
options:tm | time machine | - | no | (V) | - |
options:searchdb | search db | - | no | (V) | - |
options:nonetids | network ids | - | yes | (V) | - |
options:noacls | acls | - | yes | (V) | - |
options:followsymlinks | follow symlinks | - | no | (V) | - |
options:nohex | - | - | - | - | auto-convert from ":2f" to ":" |
options:usedots | - | - | - | - | auto-convert from ":2e" to "." |
options:nofileid | - | - | - | - | obsolete |
options:prodos | prodos | - | no | (V) | Reinstated in 4.0 |
options:mswindows | - | - | - | - | obsolete |
options:crlf | - | - | - | - | obsolete |
options:noadouble | - | - | - | - | obsolete |
options:limitsize | legacy volume size | - | no | (V) | Reinstated in 4.0 |
options:dropbox | - | - | - | - | obsolete |
options:dropkludge | - | - | - | - | obsolete |
options:nocnidcache | - | - | - | - | obsolete |
options:caseinsensitive | - | - | - | - | obsolete |