[netatalk-admins] netatalk-1.4b2+asun2.1.3 on SPARC Solaris 7 64 bit - progress report


Subject: [netatalk-admins] netatalk-1.4b2+asun2.1.3 on SPARC Solaris 7 64 bit - progress report
From: validgh.com firewall administrator (fireman@validgh.com)
Date: Thu Aug 19 1999 - 03:56:03 EDT


I have got things minimally working with a 64 bit kernel, but there is
a kernel panic that arises on killproc atalkd that is perhaps a mystery still.
Maybe this report will help other people decide whether they want to pursue this
path.

###

First thing to do is to build netatalk-1.4b2+asun2.1.3 in 32 bit mode
with gcc. I did this with the following Makefile changes:

diff -r netatalk-1.4b2+asun2.1.3/Makefile netatalk-1.4b2+asun2.1.3-gcc.32/Makefile
35c35
< DESDIR=/usr/local

---
> #DESDIR=/usr/local
40c40
< TCPWRAPDIR=/usr
---
> #TCPWRAPDIR=/usr
44c44
< PAMDIR=/usr
---
> #PAMDIR=/usr

I didn't want to figure out DES, tcp wrappers, or PAM.

diff -r netatalk-1.4b2+asun2.1.3/etc/afpd/Makefile netatalk-1.4b2+asun2.1.3-gcc.32/etc/afpd/Makefile 19c19 < ${PAMDEFS} -DAPPLCNAME --- > ${PAMDEFS} -DAPPLCNAME -DSHADOWPW

I needed this under Solaris 2.6.

With these changes, make, make install, and make kinstall, netatalk works well enough for my purposes under Solaris 2.6 or 7 in 32 bit mode.

###

To get to 64 bit mode, I first obtained the Sun 5.0 cc compiler and a license. The CD was included either in my UltraSPARC 5 box or in the Solaris 7 box - I forget which.

I unpacked another copy of netatalk, made the changes listed above for 32 bit mode, and then made these additional:

diff -r /usr/dist/sparc-S2/netatalk-1.4b2+asun2.1.3-gcc.32/rc.atalk.sysv /usr/dist/sparc-S2/netatalk-1.4b2+asun2.1.3-cc.64/rc.atalk.sysv 77c77 < killproc atalkd; echo ' atalkd\c' --- > sync; echo SKIP killproc atalkd; echo ' atalkd\c'

killproc atalkd causes a kernel panic "untimeout: impossible timeout" so I comment it out, to defer the panic as late as possible in the shutdown process. This panic existed under 64-bit Solaris no matter what other changes I tried.

diff -r netatalk-1.4b2+asun2.1.3-gcc.32/sys/solaris/Makefile netatalk-1.4b2+asun2.1.3-cc.64/sys/solaris/Makefile 5,7c5,7 < CC= gcc < KCFLAGS= -D_KERNEL -Wall -Wstrict-prototypes ${KGCCFLAGS} < OPTOPTS= -O --- > #CC= gcc > #KCFLAGS= -D_KERNEL -Wall -Wstrict-prototypes ${KGCCFLAGS} > #OPTOPTS= -O 10,12c10,13 < #CC= /opt/SUNWspro/bin/cc < #KCFLAGS= -D_KERNEL < #OPTOPTS= -fast -xO4 -xstrconst -xtarget=generic --- > CC= /opt/SUNWspro/bin/cc > KCFLAGS= -D_KERNEL > OPTOPTS= -xarch=v9

-xarch=v9 enables 64-bits. I had problems with "REG_G2" during linking if I compiled with any optimization level.

diff -r netatalk-1.4b2+asun2.1.3-gcc.32/sys/solaris/Makefile netatalk-1.4b2+asun2.1.3-cc.64/sys/solaris/Makefile 85,86c86,87 < ${INSTALL} -c ddp /usr/kernel/drv/ddp < ln /usr/kernel/drv/ddp /usr/kernel/strmod/ddp --- > ${INSTALL} -c ddp /usr/kernel/drv/sparcv9/ddp > ln /usr/kernel/drv/sparcv9/ddp /usr/kernel/strmod/sparcv9/ddp

Solaris convention puts 64-bit kernel drivers in /usr/kernel/drv/sparcv9/ rather than in /usr/kernel/drv/.

###

With these changes, I could make, make install, and make kinstall. But

1) killproc atalkd causes a kernel panic "untimeout: impossible timeout" running under 64-bit Solaris, no matter what other changes I tried

2) netatalk wouldn't work, as far as the Mac clients were concerned. They could see the server but hung during attempts to connect with their home directories via the chooser.

Kernel panics aren't great, but I could defer the one in 1) by commenting out the killproc atalkd in /etc/init.d/atalk. I am trying that for a couple of days to see what else is broken in 64 bits.

To handle 2), I did "make install" under 32 bits again, then "make kinstall" under 64 bits, so that only the kernel driver was 64 bits. This worked fine as far as restoring basic netatalk functionality as far as the Mac clients were concerned. It didn't help the kernel panic, but it didn't make it any worse.

David Hough fireman@validgh.com



This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:17:05 EST