Commit 8557f618 authored by Leigh B. Stoller's avatar Leigh B. Stoller

A set of changes to run "prepare" on a node just prior to an image

being taken.

The basic strategy is to have node_reboot (when -p option supplied)
invoke a special command on the node that will cause the shutdown
procedure to run prepare as it goes single user, but before the
network is turned off and the machine rebooted. The output of the
prepare run is capture and send back via the tmcd BOOTLOG command and
stored in the DB, so that create_image can dump that to the logfile
(so that the person taking the image can know for certain that the
prepare ran and finished okay).

On linux this is pretty easy to arrange since reboot is actually
shutdown and shutdown runs the K scripts in /etc/rc.d/rc6.d, and at
the end the node is basically single user mode. I just added a new
script to run prepare and send back the output.

On FreeBSD this is a lot harder since there are no decent hooks.
Instead, I had to hack up init (see tmcd/freebsd/init/{4,5,6}) with
some simple code that looks for a command to run instead of going to a
single user shell. The command (script) runs prepare, sends the output
back to tmcd, and then does a real reboot.

Okay, so how to get -p passed to node_reboot? I hacked up the
libadminmfs code slightly to do that, with new 'prepare' argument
option. This may not be the best approach; might have to do this as a
real state transition if problems develop. I will wait and see.

Also, I changed www/loadimage.php3 to spew the output of the
create_image to the browser.
parent 7099fa3f
# Insert Copyright Here.
SRCDIR = @srcdir@
TESTBED_SRCDIR = @top_srcdir@
OBJDIR = ../../../..
SUBDIR = tmcd/freebsd/init/5
include $(OBJDIR)/Makeconf
client: init
include $(TESTBED_SRCDIR)/GNUmakerules
init: init.c pathnames.h
$(CC) $(CFLAGS) -static -o init $< -lutil -lcrypt
client-install: client
install -s -o root -g wheel -m 500 -fschg -b -B.bak init /sbin/init
rm -f *.o core init
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment