Skip to content

Installing Netatalk on NetBSD

Daniel Markstedt edited this page Dec 28, 2024 · 6 revisions

Install the latest Netatalk

NetBSD is one out of a handful of distributions that still actively maintain an AppleTalk kernel module.

The pkgsrc package repository distributes a netatalk4, a netatalk3 as well as a netatalk22 package, which can be installed with pkg_add.

For building and installing from source yourself, find links to the official documentation below.

Required packages

Before starting, make sure you have a working pkgsrc environment.

At this point, you should be able to install the latest netatalk package with pkg_add (root privileges required.)

pkg_add netatalk4

Configuration

In older versions of Netatalk, you had to enable the NetBSD init script with the --enable-netbsd or equivalent compile time flag.

Once installed, you can control the netatalk service as any other NetBSD service.

If needed, manually copy the installed netatalk initscripts to the /etc/rc.d directory.

AppleTalk

NetBSD comes with an AppleTalk kernel module which Netatalk can use for DDP transport protocol out of the box on most configurations. Source for this module is available under /usr/src/sys/netatalk in the source tree.

Some NetBSD ports, notably evbarm (arm64), are built with the NETATALK kernel module disabled by default. To test this, try running the atalkd service. If you get the following error messages, it means that your kernel was not built with netatalk support:

# service atalkd onestart
Starting atalkd.
socket: Address family not supported by protocol family
socket: Address family not supported by protocol family
atalkd: can't get interfaces, exiting.

Rebuilding the kernel to enable netatalk (if necessary)

If you see these "Address family not supported by protocol family" errors, you can try building your own kernel with NETATALK enabled. First, you'll need to download the kernel source. This is the syssrc.tgz file that can be found online in the /source/sets directory for your build version (e.g. https://cdn.netbsd.org/pub/NetBSD/NetBSD-10.0/source/sets/syssrc.tgz). Extract the source tarball as root:

# cd /
# tar xzf /path/to/syssrc.tgz

This puts the source code under /usr/src. Look for your architecture under /usr/src/sys/arch/, then find the configuration file in the conf directory that was used to build your kernel. You can find which configuration was used by running uname -a:

# uname -a
NetBSD arm64 10.0 NetBSD 10.0 (GENERIC64) #0: Thu Dec 12 16:59:45 PST 2024  root@arm64:/usr/src/sys/arch/evbarm/compile/GENERIC64 evbarm

In this example, our kernel was built for the evbarm architecture using the GENERIC64 configuration. Inspecting the file /usr/src/sys/arch/evbarm/conf/GENERIC64 does not show any instances of the string NETATALK, but we see it includes three other files:

include "arch/evbarm/conf/std.generic64"
include "arch/evbarm/conf/files.generic64"
include "arch/evbarm/conf/GENERIC.common"

and in GENERIC.common, the following line is commented out:

#options         NETATALK        # AppleTalk networking

Uncomment the line by removing the leading #, save the file, and you are ready to follow the instructions for rebuilding and installing the new kernel..

Configure DDP-based services

In order to register with the AppleTalk protocols, the /etc/services file must contain proper protocol definitions. Make sure the following entries are present on your installation:

rtmp		1/ddp		# Routing Table Maintenance Protocol
nbp		2/ddp		# Name Binding Protocol
echo		4/ddp		# AppleTalk Echo Protocol
zip		6/ddp		# Zone Information Protocol

afpovertcp	548/tcp		# AFP over TCP
afpovertcp	548/udp

From: services.atalk in the Netatalk code tree

Clone this wiki locally