-
Notifications
You must be signed in to change notification settings - Fork 96
AppleTalk Kernel Module
Netatalk relies on AppleTalk support in the kernel to make use of the DDP transport layer. The atalkd
daemon will attempt to dynamically load the kernel module if not detected, and errors out with the following message if all attempts fail:
Address family not supported by protocol
You can still use Netatalk's DSI transport layer (TCP/IP) without AppleTalk support in the kernel.
At the time of writing, Linux and NetBSD are known to have actively maintained AppleTalk kernel modules. Many distros, notably Alpine, Debian, and Ubuntu, all ship with the AppleTalk module enabled out of the box.
Other distros, such as Fedora, may have an active blacklisting in the default configuration that needs to be disabled first. See the Installing Netatalk on Fedora Linux guide for more info.
To check if your kernel has AppleTalk support, first start the atalkd
daemon, then issue this command and inspect the output:
$ lsmod | grep appletalk
If no appletalk
module is detected, you may have to compile support into the kernel. This section describes the modular approach, but it should also be possible to compile the AppleTalk module directly into the kernel for a slight performance boost.
This section will not describe the entire process, but rather follow the steps in the Raspberry Pi documentation. Do the steps in the documentation in this order:
- Building the Kernel Locally
- Apply the Default Configuration
- Preparing to Configure
- Using menuconfig
- Networking support ---> Networking options ---> Appletalk protocol support
- Press M to select this
- Select Appletalk interfaces support and press M again
- Save and exit menuconfig
- Building the Kernel
- Reboot the system once the process is completed (compilation may take an hour or longer on slower systems)
- Check that the
appletalk
kernel module has been loaded, as per the above - If the module isn't automatically loaded, add a line to /etc/modules
- appletalk
The module in Linux kernel v6.8 and earlier has a known bug with multi-interface routing. In short, the bug will cause atalkd
to send responses on the first socket listening on port 6 that it finds, regardless of which interface packets originated from. This may lead to devices on the network not consistently showing up in the Chooser on Mac clients on the same network. E.g. appearing and then disappearing.
There is a patch for this bug available that you can apply if this affects you. The patch has been accepted into the Linux kernel and is included as of v6.9.
The NetBSD kernel comes with an AppleTalk kernel module, confusingly named "netatalk", located under sys/netatalk
in the kernel source tree.
The AppleTalk kernel module is available in NetBSD's default configuration, and should work with atalkd
out of the box.
Older versions of Netatalk (final: 2.3) distributed code for an AppleTalk module for Solaris (SPARC architecture), located under sys/solaris
in the netatalk source tree. It has not been confirmed working with contemporary Solaris releases.
Resources
OS Specific Guides
- Installing Netatalk on Alpine Linux
- Installing Netatalk on Debian Linux
- Installing Netatalk on Fedora Linux
- Installing Netatalk on FreeBSD
- Installing Netatalk on macOS
- Installing Netatalk on NetBSD
- Installing Netatalk on OmniOS
- Installing Netatalk on OpenBSD
- Installing Netatalk on OpenIndiana
- Installing Netatalk on openSUSE
- Installing Netatalk on Solaris
- Installing Netatalk on Ubuntu
Technical Docs
- CatalogSearch
- Kerberos
- Special Files and Folders
- Spotlight
- AppleTalk Kernel Module
- Print Server
- MacIP Gateway
Development