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