1This is a README for the major platforms where Netatalk is in use. 2 3Platforms Covered: 4A. Linux 5B. Tru64 6C. Solaris 7D.I OpenBSD 8D.II Other BSDs 9E. SunOS 10F. Generic 11 12---------------------------------------------------------------- 13 14A. Linux 15 16We no longer include linux kernel code with netatalk, since Linux now 17includes AppleTalk support. 18 191. MAKE CONFIG. Configure your kernel with "make config". Answer yes 20 to "AppleTalk DDP" support. 21 222. INSTALL KERNEL. Make and install your kernel. Be sure to update 23 your boot blocks! 24 253. Linux 2.2.x provides the sendfile() call. This reduces overhead 26 when sending/copying files. This option will be autoconfigured on 27 compile. NOTE: you might run into problems if you have this option 28 compiled in and you switch to a machine running an os < 2.2.x. 29 30 31Netatalk supplies two different types of Appletalk servers and both 32can run at the same time. Classic Appletalk requires afpd and 33atalkd. Appletalk over IP only requires afpd. 34 35Classic Appletalk on GNU/Linux requires that CONFIG_ATALK is compiled 36into the kernel or as a kernel module. To check to see if the kernel 37has Appletalk installed: 38 39$> dmesg | grep Apple 40This just parses the boot messages for any line containing 41'Apple'. 42 43To see all the loaded modules (as root): 44$> lsmod 45 46If you don't find it, you may have to compile a kernel and turn on 47Appletalk in Networking options -> Appletalk DDP. You have an option 48to install as a module or directly into the kernel. 49 50Some default distribution kernels have already compiled Appletalk DDP 51as a module, you may have to edit your /etc/modules.conf to include: 52"alias net-pf-5 appletalk ". 53 54Note: check your distribution documentation about editing 55/etc/modules.conf. 56 57For more complete information about the Linux kernel see the 58Kernel-HOWTO: 59http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html 60 61A note for RedHat users: You may need to install the glibc-devel 62package to be able to compile Netatalk correctly. 63 64---------------------------------------------------------------- 65 66B. TRU64 67 68This is the Tru64 README file for netatalk. 69 701. Unfortunately, AppleTalk is not available for Digital Unix or Tru64. 71 The reason for this is the kernel patches which Netatalk requires 72 cannot be ported to Tru64. If anyone has the kernel source of Tru64 73 they are welcomed to port the AppleTalk modules themselves. 74 75 As a result, only AppleShare over IP (ASIP) works with Tru64. That 76 is, the program afpd. papd and atalkd compile, but doesn't really 77 work. Anything that requires AppleTalk doesn't work. 78 792. Netatalk compiles on Tru64 V4.0D or higher using either the built-in 80 DEC C compiler or GCC V2.95.3. Also, either the Tru64 make command or 81 GNU make can be used. Netatalk supports Tru64's Security Integration 82 Architecture (SIA) and runs on machines configured for Base (BSD) or 83 Enhanced (OSFC2) Security without recompilation. 84 853. A peculiar bug in Netatalk has been noticed on a single Tru64 86 machine. However, because other Tru64 machines have not affected, a 87 patch will not be forthcoming until the circumstances where the bug 88 hits is isolated and a more elegant and appropriate patch can be 89 found. In the meantime, there is a description of the bug below. Any 90 users affected can attempt the workarounds provided. The user is 91 urged to report this to the mailing list so that this bug can be 92 isolated and removed. 93 94 HAVE_GCC_MEMCPY_BUG 95 Description - 96 It appears that memcpy() under Tru64 can fail under some 97 circumstances. This maybe due to the fact that Netatalk is compiled 98 with gcc, but since only gcc can compile Netatalk, this is a mute 99 point. 100 101 Symptoms - 102 The symptoms of this bug is that a 18432 byte file uploaded to 103 the server would upload correctly, but a 18433 byte file would 104 result in a sparse file many megabytes big (16MB+). However, due to 105 the low-level nature of memcpy(), there is no reason why other 106 symptoms could not occur. 107 108 Workarounds - 109 There are two known workarounds at this stage. 110 - The first is to #define the macro HAVE_GCC_MEMCPY_BUG. This forces 111 netatalk to use bcopy() in a few (but not all) cases within the code 112 and is enough to stop the bug from occurring. This is the easiest 113 workaround and would merely alter the standard compilation steps to 114 115 CFLAGS="-DHAVE_GCC_MEMCPY_BUG" ./configure [...] 116 make 117 make install 118 119 - The second workaround is to manually remove the optimisation flag 120 "-O2" from within configure and/or configure.in. Although, this 121 isn't the preferred workaround, it shows that the compiler is 122 (at least) partially at fault. 123 124---------------------------------------------------------------- 125 126C. SOLARIS 127 1281. SELECT COMPILER. This distribution is configured to build with 129 gcc. It should also work with cc. At the present time only cc 130 v5.0 and gcc 3.1 and above can build the 64-bit kernel module. 131 1321a. SELECT KERNEL TYPE. Edit sys/solaris/Makefile.kernel and set KCFLAGS 133 to include sparcv9 support if you run a 64-bit kernel, or leave it 134 commented out for a 32-bit kernel. Only UltraSPARC systems 135 running Solaris 7 and above support a 64-bit kernel. If you're 136 not sure what kernel you use, run "isainfo -v". You're running a 137 64-bit kernel if the result includes 64-bit (sparcv9), otherwize 138 it's 32-bit. 139 140 NOTE: If you want both the 32-bit and 64-bit kernel modules to be 141 installed, first compile and install the version appropriate to 142 the kernel that you're currently running, then make clean, 143 compile and install the other version. 144 1452. EDIT NETCONFIG. Add the following line to /etc/netconfig: 146 147 ddp tpi_clts - appletalk ddp /dev/ddp - 148 149 This makes the socket library aware of the AppleTalk protocol 150 family. 151 1523. INSTALL DRIVER. Since the STREAMS ddp driver must be installed as 153 root, we've separated that portion of the build. Type 154 155 make -f Makefile.kernel kinstall 156 157 to install the driver. This copies the driver and its config file 158 into /usr/kernel/drv and /usr/kernel/strmod, runs "add_drv ddp" to 159 make the kernel aware of the new driver, and adds an rc file to 160 /etc/rc?.d. Watch out for error messages after it runs add_drv. 161 If you see something like 162 devfsadm: driver failed to attach: ddp 163 Warning: Driver (ddp) successfully added to system but failed to attach 164 then recheck sys/solaris/Makefile.kernel and/or try a different 165 compiler. 166 1674. ATALKD.CONF. Under Solaris, you must create atalkd.conf, since 168 Solaris provides no method for determining the names of the 169 available interfaces. It is sufficent to name the available 170 interfaces in atalkd.conf, one per line. E.g. 171 172 le0 173 174 on a line by itself on many Suns. hme0 on Ultras. See atalkd(8). 175 1765. PRINTING. Netatalk can use any postscript printer that has been set 177 up for use by Solaris. If you haven't already set up a printer, 178 type admintool then select Browse --> Printers, and then Edit --> Add 179 and fill in the form for either a local or remote printer. If adding 180 a local printer, set the Printer Type to PostScript. Then find a 181 postscript file and test your printer from the command line. For 182 example if you created a printer called "fred" your print command 183 would be something like: lp -d fred some_file.ps 184 185 Once you have a printer that works under Solaris, you need to create 186 a papd.conf file. For example 187 188 MacLaserjet:\ 189 :pr=|/usr/bin/lp -d fred:\ 190 :op=nobody:\ 191 :pd=/usr/local/etc/HPLJ_4M.PPD: 192 193 See doc/CONFIGURE for more information on papd.conf. 194 Once you have this set up, and assuming netatalk starts up after 195 /etc/rc2.d/S79atalk start 196 you should be able to see the printer from the Macintosh Chooser. 197 198---------------------------------------------------------------- 199 200D.I OpenBSD 201 2021. KERNEL SUPPORT. Note that kernel support for netatalk appears in 203 OpenBSD 2.2, or openbsd-current dated after Aug 1, 1997. But the 204 'comment out' character must be removed and the kernel must be 205 recompiled. 206 207 The kernel file that needs to be edited is usually located in: 208 /usr/src/sys/conf 209 210 Remove the first comment (#) from this line: 211 # option NETATALK # AppleTalk 212 213 Generally this is the GENERIC kernal. If you decide to rename 214 the kernel, don't forget to go to 215 /usr/src/sys/arch/<your arch>/conf/NEWNAME, and change the 216 ../../../conf/GENERIC line to your NEWNAME. See 217 http://www.openbsd.org/faq/faq5.html for more information on 218 compiling a new kernel. 219 2202. STARTING NETATALK. The rc scripts that come with openbsd to 221 start netatalk are specific to an older version of netatalk. 222 So, if you use the initscript provided in a current netatalk's 223 distrib/initscripts directory, you must either add the lines 224 from rc.atalk.bsd by hand into /etc/rc.local (or wherever you 225 want to launch the daemons from) or modify your /etc/rc.local 226 file to read: 227 228 (currently says) 229 230 # Netatalk stuff 231 if [ -f /etc/netatalk/rc.atalk ]; then 232 . /etc/netatlk/rc.atalk 233 fi 234 235 (change to) 236 237 # Netatalk stuff 238 if [ -f /etc/rc.atalk ]; then 239 . /etc/rc.atalk 240 fi 241 242 and copy netatalk/distrib/initscripts/rc.atalk.bsd to /etc/rc.atalk. 243 244D.II Other BSDs 245 2461. KERNEL SUPPORT. Note that kernel support for netatalk appears in 247 FreeBSD 2.2-current dated after 12 September 1996. 248 249 Add the line 250 251 options NETATALK 252 253 to the config file for your kernel. Rebuild and install your 254 kernel. Reboot. 255 256---------------------------------------------------------------- 257 258E. SunOS 259 2601. KERNEL MODULE. This version of netatalk requires that your kernel 261 be configured with 262 263 options VDDRV 264 265 The loadable kernel module is made and installed during the normal 266 make and make install. NOTE: Unloading the kernel module may not 267 work correctly and may cause your kernel to panic, hang, or do 268 other nasty things. 269 270---------------------------------------------------------------- 271 272F. Generic 273 274(It's unknown how applicable this is compared to the current codebase) 275 276 The generic system profile is for use on systems that don't have native 277 appletalk support. For those systems, it should still be possible to get 278 the AFP/tcp portion of netatalk to still work. 279 280 To do that, you will need the following information: 281 282 1) Endian order: If your machine does not specify the 283 byte-order in netinet/in.h, you may need to modify 284 netatalk/endian.h. 285 286 2) Integer sizes: If your machine does not define intX_t and 287 u_intX_t, you will need to define them in 288 netatalk/endian.h. To ease matters, you can specify 289 _ISOC9X_SOURCE if you have inttypes.h, HAVE_64BIT_LONGS for 290 64 bit machines, or HAVE_32BIT_LONGS for 32 bit 291 machines. NOTE: you should only use HAVE_32/64BIT_LONGS on 292 machines that don't have a header file somewhere with the 293 integer sizes. If you have a file with all the relevant 294 bits, modify netatalk/endian.h to include it. 295 296 3) Quota/statfs information: You may be able to get away with 297 either BSD4_4 or __svr4__, but that's unlikely if your os 298 is some bizarre hybrid. If you don't have quota support, 299 just specify NO_QUOTA_SUPPORT. In addition, if you'll need 300 to specify the include file that gets statfs() (usually 301 either USE_VFS_H or USE_STATFS_H although BSD4_4 and 302 __svr4__ bring in a set of include files for that). Look at 303 etc/afpd/quota.c, unix.c, and unix.h for more information. 304 Finally, if you have a really old version of rquota, you 305 can define USE_OLD_RQUOTA as well. 306 307 4) path information for lock/spool/printer files. you'll need 308 to specify -D_PATH_LOCKDIR if include/atalk/paths.h doesn't 309 have the correct paths specified for printer info and lock 310 files. 311 312 Beyond that, you should make sure that your operating system looks and 313 smells like a Un*x POSIXy operating system. The only operating systems 314 that netatalk supports that don't quite fit that description are 315 sunos 4 and ultrix. If your operating system is peculiar, you may need 316 to add in compatibility routines (libatalk/compat, 317 include/atalk/compat.h) to make it look more like the others. 318 319 If you would like native AppleTalk support, you will need kernel support 320 for your operating system. Look at the Solaris STREAMS module if your 321 operating system supports that framework. Otherwise, look at the ddp 322 code in FreeBSD, NetBSD, or OpenBSD if your operating system is BSDish 323 in nature. If your operating system looks different than these two 324 cases, you'll have to roll your own implementation. 325