System: OES 1 SP2, SLES 9 SP3, fully patched

This has been driving me nuts for awhile, so I finally decided to hunt
down the problem, and I thought I'd post my findings here.

On bootup, I see this error message: "Loading backup kernel driver for
NSS failed" and at the end of the boot process a message on the console
indicates that the novell-smdrd service failed.

It turns out that there's a bug in /etc/init.d/novell-smdrd, as of
novell-sms-1.1.4-15, at least. The load_smszapi() function returns a
failed status code (i.e. 1) because the mknod of /dev/smszapi fails.
This, in turn, is failing because /dev/smszapi already exists. The
script is supposed to delete the file it if it exists, but the statement
that tests for the existence of this character special file is broken:

109 test -f /dev/smszapi
110 if [ $? -eq 0 ]
111 then
112 rm -f /dev/smszapi
113 fi
114 mknod --mode=600 /dev/smszapi c $major 0
> /dev/null 2>&1

115 if [ $? -eq 0 ]
116 then
117 return 0
118 else
119 return 1
120 fi

The problem is at line 109. 'test -f /dev/smszapi' tests whether
/dev/smszapi exists and is a *regular* file. However, this is a
character special file. So the statement should either be 'test -c
/dev/smszapi' or 'test -e /dev/smszapi'.

Once I make that change, the error messages go away.