By Michael Marxmeier (mike@marxmeier.com)
Some notes on Installing Linux on the HP Netserver LC3.
We installed a few of those boxes at customer sites and
this article intends to share some of our experiences.
Of course, feedback and suggestions are appreciated.
Disclaimer: Please be aware that information on this page is
provided without any guarantee. We intend to be helpful by sharing some
of our experiences but as usual YMMV. When something does
not work for you, you are on your own to fix it (feel free
to contact us for a quotation if you need help).
Hardware
We usually recommend a
HP Netserver LC3 (model 4) to Linux prospects (yes we're slightly
HP biased here).
It is reliable hardware (this is important after all), it can be extended
by including a second processor and additional I/O devices and
rather inexpensive additional on-site support options (hardware)
are available.
We usually recommend the server with at least 128 MB RAM and suggest
to include a second disk for better performance. As a backup device
we use HP DDS2 (8GB) drives.
We currently use 500 MHz PII processors because they are so far the
most cost effective option. The top line processors are often rather
expensive while adding only slightly improvements.
When planing to use two processors (SMP) it is probably a good idea
to purchase the processors at the same time. SMP configurations
can cause problems if different processors steppings (models/revisions)
are used.
There is also the LC3 HS version available. It has hot pluggable disks.
It's more expensive but in my opinion it adds few additional value
(how often do you change in disk drives during daily work?).
Update: Recently HP obsoleted the non hot-swappable LC3 models.
So this is no longer an option.
We once tried the NetRaid-1 RAID controller which is available as an
option (this is an AMI MegaRAID 428 controller, OEM product) and found
it rather slow (we tried a RAID 1 configuration, it was much slower
than using a SW RAID configuration on Linux). This could have been
related to a defect in the Linux driver though which was new at
this point. Since we don't have the hardware in the office we are
currently unable to re-evaluate this for now.
We plan to evaluate the software RAID included with the Linux Kernel
to see if this is a viable alternative for customers which demand
RAID disks.
Mouse
- You need a mouse connected or you get a warning during boot
(independend on BIOS settings - it shows its NT heritage).
- If you disable the mouse (and ignore the BIOS message during boot)
and a program later on tries to access the mouse, the console
will freeze (and come back to life during shutdown - odd).
- If you disable the mouse but actually have a mouse connected and
the mouse is moved, the console will stall for some time.
- When another driver grabs IRQ 12 (usually dedicated to the mouse)
weird things could happen.
So usually it's less hassle to have the mouse connected and
enabled in the BIOS.
Management Port
The Management port (no idea if it can be used with Linux - it looks
like a serial device) is enabled by default. Conversly the 2nd serial
device is disabled in the BIOS.
To have two serial devices, simply enable the serial device and
disable the management port. Check for a proper base address for
the serial device or Linux will fail to discover it automatically.
Bios configuration:
- The first serial port should have I/O port 0x03f8 and IRQ 4
- The second one I/O port 0x02f8 and IRQ 3.
Cyclades
We have good experiences using
Cyclades serial devices. Slightly
expensive but they work fine (we so far connected up to 24 ports to a
single machine). When connecting HP equipment (using existing
cables) you need to keep in mind that the connectors are "wrong":
Cyclades has males on the panel (rather than females) and the pins
are reversed. The easiest solution is to use a NULL modem adaptor which
has both female connectors. Then old cables could be just plugged in.
Possible problem with Linux 2.2: We suspect the Cyclades driver has
a minor buglet to handle XON/XOFF properly when the device is closed.
This hit us when connecting serial printers which could loose
data on the last page. This was fixed by a patch to LPRng and we're
still undecided if the Cyclades serial driver was the origin of the
problem or something strange in LPRng.
UPS
We use an APC UPS which is connected
to a serial port. We usually suggest a
Smart-UPS 700 or 1000
which provide plenty of power reserves for a PC server.
APC currently does not provide controling software
for Linux but the apcupsd
package works perfectly for us controling the UPS (see below).
Software
Linux Distribution
We used the SuSE 6.0 and SuSE 6.1
distributions to install customer machines.
Other distibutions should work alike but we have good experiences
using SuSE internally.
Of course you should compile and install a custom kernel. This
is even required for SMP. Please note that SuSE (same as RedHat) has
the habit to include patched kernels where applying subsequent kernel
patches might fail.
LPRng
We don't use the BSD derived lpr, since it does not allow filters to
be used for remote printers and has other shortcomings. We tried PLP and
gave up after serious problems and finding out it is no longer
maintained.
So we switched to
LPRng (LPR
next generation, the PLP successor).
LPRng allows easy support of serial printers and printers providing
HP's JetDirect network interface.
The following patch against LPRng 3.5.4 solved (or worked around)
the problem. It should be included in subsequent LPRng releases:
--- LPRng-3.5.4-orig/src/common/pr_support.c Thu Nov 19 22:12:02 1998
+++ LPRng-3.5.4/src/common/pr_support.c Mon May 31 14:31:02 1999
@@ -225,6 +225,8 @@
if( (fd = filter->input) > 0 && isatty( fd ) ){
DEBUG3("Close_tty: fd %d, timeout %d, key %s",
filter->input, timeout, key );
+ if(tcdrain(fd) == -1)
+ DEBUG1( "Close_tty: tcdrain() failed: %s", errno );
filter->input = -1;
if( Set_timeout() ){
Set_timeout_alarm( timeout, 0 );
This patch fixed a problem where serial printers could loose data on the
last page. The patch is also available on the ftp server.
The following is an example LPRng printcap which provides the definition
of a networked LaserJet and a serial HP2235 ("RuggedWriter") printer.
# /etc/printcap
# 01.06.99, mike
# lj5 uses a JetDirdct connection, the hp2235 is connected seial.
lj5|lp:\
:cm=HP LaserJet 5:\
:sd=/var/spool/lpd/lj5:\
:lp=lj5%9100:\
:sh:\
:mx#0:pw#80:pl#72:rt#0:\
:if=/usr/local/etc/hp-filter %Z:\
:lf=/var/spool/lpd/lj5/lp-err:
#
hp2235:\
:cm=HP2235:\
:lp=/dev/ttyC0:\
:sd=/var/spool/lpd/hp2235:\
:sh:\
:mx#0:pw#80:pl#72:rt#0:\
:br#9600:ty=cs8 clocal -crtscts ixon:\
:if=/usr/local/etc/hp-filter %Z:\
:lf=/var/spool/lpd/hp2235/lp-err:
After adding this to yout /etc/printcap i recommend to execute
a checkpc -f (LPRNG utility program to create spooler directories and
fix permissions) and either restart the lpd server or execute a
lpc reread command so lpd gets awre of the changes.
The /usr/local/etc/hp-filter is a shell script which is
similar to the SYSV printer interface scripts and allows easy
controlling of printer features:
#!/bin/sh
# hp-filter - lpr if filter for HP printers
#
# (C) Copyright 1998-2000 Marxmeier Software AG
# This is free software. Use it for whatever purpose but please
# be aware that there is NO WARRANTY of any kind.
#
# 24.12.1998, mike
# 15.06.1999, mike - fixed option handling for lprng
# 03.12.1999, mike - orientation, cpi options
# 30.01.1999, mike - added duplex, tray options
# 26.05.2000, mike - fixed tray option
mode="text"
cp="iso88591"
orientation=""
duplex=""
tray=""
cpi=""
init=""
#date >> /tmp/hp-filter.log
#echo "$@" >> /tmp/hp-filter.log
#exec 2>>/tmp/hp-filter.log
zopt=""
while [ $# -gt 0 ]
do
arg=`echo "$1"|cut -c 3-`
case "$1" in
-Z*)
zopt="$arg";;
*)
;;
esac
shift
done
if [ -n "$zopt" ]
then
#echo "zopt=$zopt" >&2
for opt in `echo "$zopt" | sed -e 's/,/ /g'`
do
val=`echo "$opt"|cut -d= -f 2`
case "$opt" in
mode=*)
mode="$val";;
cp=*)
cp="$val";;
orientation=*)
case "$val" in
portrait) orientation="\033&l0O";;
landscape) orientation="\033&l1O";;
rportrait) orientation="\033&l3O";;
rlandscape) orientation="\033&l4O";;
esac
;;
duplex=*)
duplex="\033&l${val}S"
;;
cpi=*)
cpi="\033(s${val}H";;
tray=*)
tray="\033&l${val}H";;
init=*)
init="$val";;
*)
;;
esac
done
fi
if [ $mode = "text" ]; then
echo -ne "\033&k2G\033(8U"
#echo -ne "\033(s1Q\033(s12V"
if [ -n "$tray" ]
then
echo -ne "$tray"
fi
if [ -n "$orientation" ]
then
echo -ne "$orientation"
fi
if [ -n "$duplex" ]
then
echo -ne "$duplex"
fi
if [ -n "$cpi" ]
then
echo -ne "$cpi"
fi
if [ -n "$init" ]
then
cat $init
fi
recode $cp:roman8
else
echo -ne "\033&k0G"
if [ -n "$tray" ]
then
echo -ne "$tray"
fi
if [ -n "$duplex" ]
then
echo -ne "$duplex"
fi
if [ -n "$init" ]
then
cat $init
fi
cat -
fi
if [ $? != 0 ]; then
#echo "cat failed!" >&2
exit 1
fi
if [ $mode = "text" -o $mode = "reset" ]; then
echo -ne "\033E"
fi
This script is called by the lpd subsystem.
- Should work with almost all HP printers.
- Printing from command line (without options) will cause set the
printer to LF line termination mode and convert input from ISO8859-1
to HP-ROMAN8 encoding.
- Issues a Printer Reset at the end of the print job (which causes
a form feed).
- When specifying the bin mode (lpr -Z mode=bin) no
conversio is done.
- In addition, you could specify another code page.
The correspongding definition in /etc/opt/eloquence6/eloq.config
is:
PRINTER 0 PIPE "lpr -Php2235 -Zmode=reset,cp=roman8 >/dev/null 2>&1"
PRINTER 1 PIPE "lpr -Php2235 -Zmode=reset,cp=roman8,cpi=16.67,tray=2 >/dev/null 2>&1"
|