[alt.sys.sun] How to disable break key on console?

wv@cbnews.cb.att.com (william.e.duncan) (02/07/91)

We've got a couple of 4/280's with dumb terminals as
consoles. Is there any way to disable the break key
so it won't bring the system down to the boot prompt?

Bill Duncan
bill@picard.att.com

mikey@ccs.carleton.ca (Mike McFaul) (02/07/91)

In article <1991Feb6.195059.18763@cbnews.att.com> wv@cbnews.cb.att.com (william.e.duncan) writes:
>We've got a couple of 4/280's with dumb terminals as
>consoles. Is there any way to disable the break key
>so it won't bring the system down to the boot prompt?
>
>Bill Duncan
>bill@picard.att.com

Well it depends on how much you value your 'dumb' terminal. We have a VC404
on our sun server and I riped the break key right off the keyboard. Well
that wasn't enough, our operators kept reaching into the keyboard to hit that
break key. Finally I put a plastic cover over it and taped it down -- you
have to lift it to hit break. Take it from me a sign on the keyboard saying
"don't touch" invariably causes people to hit it.

otto@tukki.jyu.fi (Otto J. Makela) (02/10/91)

In article <1991Feb7.032051.281@ccs.carleton.ca> mikey@ccs.carleton.ca (Mike McFaul) writes:
   In article <1991Feb6.195059.18763@cbnews.att.com> wv@cbnews.cb.att.com (william.e.duncan) writes:
   >We've got a couple of 4/280's with dumb terminals as
   >consoles. Is there any way to disable the break key
   >so it won't bring the system down to the boot prompt?

   Well it depends on how much you value your 'dumb' terminal. We have a
   VC404 on our sun server and I riped the break key right off the keyboard.
   Well that wasn't enough, our operators kept reaching into the keyboard to
   hit that break key. Finally I put a plastic cover over it and taped it down
   -- you have to lift it to hit break. Take it from me a sign on the keyboard
   saying "don't touch" invariably causes people to hit it.

However, this doesn't help very much.  Just try powering the terminal off.
You'll send something resembling a break down the serial line -> the Sun is
in debug mode (I once was stuck with my finger holding the terminal power
switch down after I realized I'd goofed -- then a quick double-stab to power
the terminal up again and G-return; the system didn't even notice it had been
in debug mode :-)

Software suggestions, anyone ?
--
   /* * * Otto J. Makela <otto@jyu.fi> * * * * * * * * * * * * * * * * * * */
  /* Phone: +358 41 613 847, BBS: +358 41 211 562 (USR HST/V.32, 24h/d)   */
 /* Mail: Kauppakatu 1 B 18, SF-40100 Jyvaskyla, Finland, EUROPE         */
/* * * Computers Rule 01001111 01001011 * * * * * * * * * * * * * * * * */

sja@sirius.hut.fi (Sakari Jalovaara) (02/11/91)

This is for demonstration purposes only.  To really turn off the abort
key, binary-patch the kernel.  I don't use this myself; as a sysadmin
I think the abort key is a very useful feature.
									++sja

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# If this archive is complete, you will see the following message at the end:
#		"End of shell archive."
#
# Contents:
#   Makefile disable-abort.c
#
# Wrapped by sja@sirius.hut.fi on Sun Feb 10 19:39:20 1991
#
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f Makefile -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"Makefile\"
else
echo shar: Extracting \"Makefile\" \(342 characters\)
sed "s/^X//" >Makefile <<'END_OF_Makefile'
X#
X# Makefile for disable-abort
X#
X
X# -g or -O.  You can also compile with "make DEBUG=-g"
XDEBUG = -O
X
XCFLAGS = $(DEBUG)
XLINTFLAGS =
XLIBS =
XSHELL = /bin/sh
X
XSRC = disable-abort.c
XOBJ = disable-abort.o
X
Xdisable-abort: $(OBJ)
X	$(CC) $(CFLAGS) $(OBJ) $(LIBS) -o disable-abort
X
Xlint:
X	lint $(LINTFLAGS) $(SRC) $(LIBS)
X
Xclean:
X	rm -f *.o a.out core
END_OF_Makefile
if test 342 -ne `wc -c <Makefile`; then
    echo shar: \"Makefile\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f disable-abort.c -a "${1}" != "-c" ; then 
  echo shar: Will not over-write existing file \"disable-abort.c\"
else
echo shar: Extracting \"disable-abort.c\" \(1982 characters\)
sed "s/^X//" >disable-abort.c <<'END_OF_disable-abort.c'
X
X/*
X *
X * disable-abort.c -- disable the keyboard abort sequence
X *
X * Sakari Jalovaara (sja@sirius.hut.fi)
X *
X * Public domain -- PLEASE do not distribute any part of this software
X * under the GNU license and do not distribute with any other software
X * that is covered by the GNU license.
X */
X
X#include <stdio.h>
X#include <fcntl.h>
X#include <sys/types.h>
X#include <sundev/kbio.h>
X#include <sundev/kbd.h>
X
X
Xchar *errstr ();
X
Xchar *program;
Xint debug = 0;
X
Xint
Xmain (argc, argv)
Xint argc;
Xchar **argv;
X{
X    struct kiockey key;
X    int fd;
X
X    program = argv[0];
X
X    if (argc != 1)
X	debug++;
X
X    if ((fd = open ("/dev/kbd", O_RDWR)) == -1) {
X	fprintf (stderr, "%s: can't open /dev/kbd: %s\n", program, errstr ());
X	exit (1);
X    }
X
X    key.kio_tablemask = KIOCABORT1;
X    key.kio_station = 1;
X    key.kio_entry = 0;
X    key.kio_string[0] = 0;
X
X    doit (fd, &key);
X
X    key.kio_tablemask = KIOCABORT2;
X    key.kio_station = 1;
X    key.kio_entry = 0;
X    key.kio_string[0] = 0;
X
X    doit (fd, &key);
X
X    exit (0);
X}
X
X
Xdoit (fd, key)
Xint fd;
Xstruct kiockey *key;
X{
X    if (debug) {
X
X	if (ioctl (fd, KIOCGETKEY, key) == -1) {
X	    fprintf (stderr, "%s: can't GETKEY: %s\n", program, errstr ());
X	    exit (1);
X	}
X
X	printf ("mask    %d\n", key->kio_tablemask);
X	printf ("station %d\n", key->kio_station);
X	printf ("entry   %d\n", key->kio_entry);
X	printf ("string  \"%s\"\n", key->kio_string);
X
X    } else {
X
X	if (ioctl (fd, KIOCSETKEY, key) == -1) {
X	    fprintf (stderr, "%s: can't SETKEY: %s\n", program, errstr ());
X	    exit (1);
X	}
X    }
X}
X
X
X
X/*
X * char *errstr()
X *
X * Converts errno to an error message.
X *
X * Usage
X *   fprintf (stderr, "%s: can't open %s: %s\n", program, filename, errstr ());
X *
X */
X
Xchar *
Xerrstr ()
X{
X    extern int errno;
X    extern char *sys_errlist[];
X    extern int sys_nerr;
X    static char unknown[40];
X
X    if (errno < sys_nerr && errno >= 0)
X	return sys_errlist[errno];
X
X    sprintf (unknown, "unknown error %d", errno);
X    return unknown;
X}
END_OF_disable-abort.c
if test 1982 -ne `wc -c <disable-abort.c`; then
    echo shar: \"disable-abort.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0