Help needed modifying shutdown scripts

2004-02-23 Thread Dominic Bishop
I am trying to use some custom startup+shutdown scripts to control a Belkin
UPS using the nut utility. Essentially to achieve what is shown in point 4
of

http://quasar.mathstat.uottawa.ca/~selinger/ups/belkin-universal-ups.html

Before continuing, here is the output of uname -a:

FreeBSD magellan.dom.bishnet.net 5.2.1-RC2 FreeBSD 5.2.1-RC2 #1: Sun Feb 22
02:52:35 GMT 2004
[EMAIL PROTECTED]:/u2/usr/obj/u2/usr/src/sys/MAGELLAN  
i386


The startup section is working fine, I created my own script in /etc/rc.d
and
it runs at the correct time.

The shutdown bit however is causing me problems, I inserted my code into
rc.shutdown under the section headed # Insert other shutdown procedures
here

Since FreeBSD doesn't seem to remount disks read-only during this script I
first unmounted all unnecessary partitions and then made sure /, /usr, /var
were all mounted read-only, as these are needed for the UPS driver to run.

The UPS driver runs as expected and sits there monitoring battery power,
however I get a fair few processes exiting on signal 11 which is worrying
and then more worrying is that it kills the driver, and completes halting
the
system. Once in this state the system will never come back when AC power
returns which is of course not desirable.

Here is console output from around the point of the driver starting onwards:
(Currently the script calls mount with no arguments so I could check that
the mounts were as I expected, hence the mountpoint entries)


pid 478 (mountd), uid 0: exited on signal 11
/dev/ar0s1a on / (ufs, local, read-only)
devfs on /dev (devfs, local)
procfs on /proc (procfs, local)
/dev/ar0s1f on /usr (ufs, local, read-only)
/dev/ar0s1d on /var (ufs, local, read-only)
Waiting for AC power, or for UPS batteries to run out...
Network UPS Tools - Belkin 'Universal UPS' driver 0.06 (1.5.13)

Connecting to UPS...
pid 542 (ntpd), uid 0: exited on signal 11
UPS is on battery, battery level: 20%
pid 511 (usbd), uid 0: exited on signal 11
pid 801 (logger), uid 0: exited on signal 11
UPS is on battery, battery level: 17%
pid 394 (rpcbind), uid 0: exited on signal 11
UPS is on battery, battery level: 15%
pid 806 (identd), uid 0: exited on signal 11
UPS is on battery, battery level: 12%
pid 769 (moused), uid 0: exited on signal 11
pid 563 (sshd), uid 0: exited on signal 11
pid 499 (rpc.lockd), uid 1: exited on signal 11
pid 385 (named), uid 53: exited on signal 11
FWaiting (max 60 seconds) for system process `vnlru' to stop...stopped
Waiting (max 60 seconds) for system process `bufdaemon' to stop...stopped
Waiting (max 60 seconds) for system process `syncer' to stop...stopped

syncing disks, buffers remaining... 
done
Uptime: 6m27s
GEOM: destroy disk twed0 dp=0xc616200c
twed0: detached
Shutting down ACPI

The operating system has halted.

Most importantly can anyone tell me how to stop the system being shutdown
before rc.shutdown terminates? (the UPS driver stays in foreground until the
battery runs out, unless AC power returns in which case it calls reboot)

I'm guessing that all the sig 11s are due to filesystems being mounted read
only, but what I don't understand is why these processes are even still
running?

All of these processes are controlled by rc.d and looking at rc.shutdown
they
should have been stopped before the section I've placed my code is reached.
ie in the section:
# Determine the shutdown order of the /etc/rc.d scripts,
# and perform the operation

This got me curious so I created a simple test script which was a copy of
the
original rc.shutdown with the watchdog timer bits removed and the running of
rc.d script shutdown set to simply echo the command instead, when run it
output
this:

run_rc_script /etc/rc.d/exim stop
run_rc_script /etc/rc.d/inetd stop
run_rc_script /etc/rc.d/localpkg stop
run_rc_script /etc/rc.d/jail stop
run_rc_script /etc/rc.d/cron stop
run_rc_script /etc/rc.d/local stop
run_rc_script /etc/rc.d/nfsclient stop
run_rc_script /etc/rc.d/ipfs stop
run_rc_script /etc/rc.d/random stop
run_rc_script /etc/rc.d/swap1 stop
.

This seems to be a rather small subset of the scripts in rc.d that are run
on
startup, and notably excludes commands to stop all the processes I was
getting
sig 11s from. Am I missing something here?

So in summary, the most important thing I wish to fix is to stop the OS from
halting whilst the UPS driver is still running as at the moment it leaves me
with the possibility of the system not resuming unattended.

The less important aspect is stopping the sig 11s from those processes as it
would be nice not to get a whole bunch of .core files in my / ;-)
However I can live with them if I have to.

Any suggestions?

Regards,

Dominic Bishop

___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


RE: Help needed modifying shutdown scripts

2004-02-23 Thread Dominic Bishop
 -Original Message-
 Subject: Help needed modifying shutdown scripts
 
 I am trying to use some custom startup+shutdown scripts to 
 control a Belkin
 UPS using the nut utility. Essentially to achieve what is 
 shown in point 4 of
 
 http://quasar.mathstat.uottawa.ca/~selinger/ups/belkin-univers
 al-ups.html
 
 Before continuing, here is the output of uname -a:
 
 FreeBSD magellan.dom.bishnet.net 5.2.1-RC2 FreeBSD 5.2.1-RC2 
 #1: Sun Feb 22
 02:52:35 GMT 2004 
 [EMAIL PROTECTED]:/u2/usr/obj/u2/usr/src/sys/MAGELLAN  
 i386
 
 
 The startup section is working fine, I created my own script 
 in /etc/rc.d and
 it runs at the correct time.
 
 The shutdown bit however is causing me problems, I inserted 
 my code into
 rc.shutdown under the section headed # Insert other shutdown 
 procedures here
 
 Since FreeBSD doesn't seem to remount disks read-only during 
 this script I
 first unmounted all unnecessary partitions and then made sure 
 /, /usr, /var
 were all mounted read-only, as these are needed for the UPS 
 driver to run.
 
 The UPS driver runs as expected and sits there monitoring 
 battery power,
 however I get a fair few processes exiting on signal 11 which 
 is worrying
 and then more worrying is that it kills the driver, and 
 completes halting the
 system. Once in this state the system will never come back 
 when AC power
 returns which is of course not desirable.
 
 Here is console output from around the point of the driver 
 starting onwards:
 (Currently the script calls mount with no arguments so I 
 could check that
 the mounts were as I expected, hence the mountpoint entries)
 
 
 pid 478 (mountd), uid 0: exited on signal 11
 /dev/ar0s1a on / (ufs, local, read-only)
 devfs on /dev (devfs, local)
 procfs on /proc (procfs, local)
 /dev/ar0s1f on /usr (ufs, local, read-only)
 /dev/ar0s1d on /var (ufs, local, read-only)
 Waiting for AC power, or for UPS batteries to run out...
 Network UPS Tools - Belkin 'Universal UPS' driver 0.06 (1.5.13)
 
 Connecting to UPS...
 pid 542 (ntpd), uid 0: exited on signal 11
 UPS is on battery, battery level: 20%
 pid 511 (usbd), uid 0: exited on signal 11
 pid 801 (logger), uid 0: exited on signal 11
 UPS is on battery, battery level: 17%
 pid 394 (rpcbind), uid 0: exited on signal 11
 UPS is on battery, battery level: 15%
 pid 806 (identd), uid 0: exited on signal 11
 UPS is on battery, battery level: 12%
 pid 769 (moused), uid 0: exited on signal 11
 pid 563 (sshd), uid 0: exited on signal 11
 pid 499 (rpc.lockd), uid 1: exited on signal 11
 pid 385 (named), uid 53: exited on signal 11
 FWaiting (max 60 seconds) for system process `vnlru' to stop...stopped
 Waiting (max 60 seconds) for system process `bufdaemon' to 
 stop...stopped
 Waiting (max 60 seconds) for system process `syncer' to stop...stopped
 
 syncing disks, buffers remaining... 
 done
 Uptime: 6m27s
 GEOM: destroy disk twed0 dp=0xc616200c
 twed0: detached
 Shutting down ACPI
 
 The operating system has halted.
 
 Most importantly can anyone tell me how to stop the system 
 being shutdown
 before rc.shutdown terminates? (the UPS driver stays in 
 foreground until the
 battery runs out, unless AC power returns in which case it 
 calls reboot)
 
 I'm guessing that all the sig 11s are due to filesystems 
 being mounted read
 only, but what I don't understand is why these processes are 
 even still running?
 
 All of these processes are controlled by rc.d and looking at 
 rc.shutdown they
 should have been stopped before the section I've placed my 
 code is reached.
 ie in the section:
 # Determine the shutdown order of the /etc/rc.d scripts,
 # and perform the operation
 
 This got me curious so I created a simple test script which 
 was a copy of the
 original rc.shutdown with the watchdog timer bits removed and 
 the running of
 rc.d script shutdown set to simply echo the command instead, 
 when run it output
 this:
 
 run_rc_script /etc/rc.d/exim stop
 run_rc_script /etc/rc.d/inetd stop
 run_rc_script /etc/rc.d/localpkg stop
 run_rc_script /etc/rc.d/jail stop
 run_rc_script /etc/rc.d/cron stop
 run_rc_script /etc/rc.d/local stop
 run_rc_script /etc/rc.d/nfsclient stop
 run_rc_script /etc/rc.d/ipfs stop
 run_rc_script /etc/rc.d/random stop
 run_rc_script /etc/rc.d/swap1 stop
 .
 
 This seems to be a rather small subset of the scripts in rc.d 
 that are run on
 startup, and notably excludes commands to stop all the 
 processes I was getting
 sig 11s from. Am I missing something here?
 
 So in summary, the most important thing I wish to fix is to 
 stop the OS from
 halting whilst the UPS driver is still running as at the 
 moment it leaves me
 with the possibility of the system not resuming unattended.
 
 The less important aspect is stopping the sig 11s from those 
 processes as it
 would be nice not to get a whole bunch of .core files in my / ;-)
 However I can live with them if I have to.
 
After a bit more investigation and looking at the source of
init I understand one half