diff -uprN vblade-19/aoe.c vblade-19-pid/aoe.c
--- vblade-19/aoe.c	2008-10-08 14:07:40.000000000 -0700
+++ vblade-19-pid/aoe.c	2009-05-20 00:11:43.000000000 -0700
@@ -244,7 +244,8 @@ aoe(void)
 void
 usage(void)
 {
-	fprintf(stderr, "usage: %s [-b bufcnt] [-d ] [-s] [-r] [ -m mac[,mac...] ] shelf slot netif filename\n", 
+	fprintf(stderr, "usage: %s [-b bufcnt] [-d ] [-s] [-r] [-p file]"
+			" [ -m mac[,mac...] ] shelf slot netif filename\n", 
 		progname);
 	exit(1);
 }
@@ -301,6 +302,26 @@ maskok(uchar *ea)
 	return ok;
 }
 
+void
+write_pid(const char *path)
+{
+	int pid_n = (int)getpid();
+	int ppid_n = (int)getppid();
+	char pbuf[64];
+	FILE * f = fopen(path, "w");
+
+	if(!f) {
+		perror("write_pid: fopen");
+		exit(1);
+	}
+	snprintf(pbuf, 63, "%d %d", pid_n, ppid_n);
+	if(fwrite(pbuf, strlen(pbuf), 1, f) < 1) {
+		perror("write_pid: fwrite");
+		exit(1);
+	}
+	fclose(f);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -310,7 +331,7 @@ main(int argc, char **argv)
 	setbuf(stdin, NULL);
 	atainit();
 	progname = *argv;
-	while ((ch = getopt(argc, argv, "b:dsrm:")) != -1) {
+	while ((ch = getopt(argc, argv, "b:dsrm:p:")) != -1) {
 		switch (ch) {
 		case 'b':
 			bufcnt = atoi(optarg);
@@ -329,6 +350,9 @@ main(int argc, char **argv)
 		case 'm':
 			setmask(optarg);
 			break;
+		case 'p':
+			write_pid(optarg);
+			break;
 		case '?':
 		default:
 			usage();
diff -uprN vblade-19/makefile vblade-19-pid/makefile
--- vblade-19/makefile	2008-10-08 14:07:40.000000000 -0700
+++ vblade-19-pid/makefile	2009-05-19 23:48:52.000000000 -0700
@@ -7,6 +7,7 @@ prefix = /usr
 sbindir = ${prefix}/sbin
 sharedir = ${prefix}/share
 mandir = ${sharedir}/man
+initdir = /etc/init.d
 
 O=aoe.o bpf.o ${PLATFORM}.o ata.o
 CFLAGS += -Wall -g -O2
@@ -40,4 +41,5 @@ clean :
 install : vblade vbladed
 	install vblade ${sbindir}/
 	install vbladed ${sbindir}/
+	install vblade-skeleton ${initdir}/
 	install vblade.8 ${mandir}/man8/
diff -uprN vblade-19/vblade-skeleton vblade-19-pid/vblade-skeleton
--- vblade-19/vblade-skeleton	1969-12-31 16:00:00.000000000 -0800
+++ vblade-19-pid/vblade-skeleton	2009-05-19 23:44:44.000000000 -0700
@@ -0,0 +1,54 @@
+#!/bin/sh
+# /etc/init.d/vblade-skeleton
+# An init script skeleton for vblade.
+# Copy this file to /etc/init.d/$RESOURCE
+
+# Modify these variables
+RESOURCE="vblade-skeleton"
+FILE="/dev/sdb1"
+SHELF="1"
+SLOT="0"
+IFACE="eth0"
+PID="/var/run/$RESOURCE.pids"
+
+case $1 in
+start)
+	echo -en "Starting $RESOURCE...";
+	if [[ -f $PID ]]; then
+		echo "$RESOURCE running! Abort.";
+		exit 1;
+	fi
+	vbladed -p $PID $SHELF $SLOT $IFACE $FILE
+	;;
+stop)
+	echo -en "Stopping $RESOURCE...";
+	if [[ -f $PID ]]; then
+		for p in `cat $PID`; do 
+			kill $p; 
+		done
+	else
+		echo "No such file: $PID. $RESOURCE not running!?";
+		exit 1;
+	fi
+	rm -f $PID
+	;;
+stop-force)
+	echo -en "Stopping $RESOURCE with SIGKILL...";
+	if [[ -f $PID ]]; then
+		for p in `cat $PID`; do 
+			kill -9 $p; 
+		done
+	else
+		echo "No such file: $PID. $RESOURCE not running!?";
+		exit 1;
+	fi
+	rm -f $PID
+	;;
+*)
+	echo "usage: {start|stop|stop-force}";
+	exit 1;
+	;;
+esac;
+echo "Done";
+exit 0;
+
diff -uprN vblade-19/vblade.8 vblade-19-pid/vblade.8
--- vblade-19/vblade.8	2008-10-08 14:07:41.000000000 -0700
+++ vblade-19-pid/vblade.8	2009-05-19 23:37:33.000000000 -0700
@@ -51,6 +51,9 @@ client.
 \fB-r\fP
 The -r flag restricts the export of the device to be read-only.
 .TP
+\fB-p\fP
+The -p flag specifies a file to write the pid and parent-pid to.
+.TP
 \fB-m\fP
 The -m flag takes an argument, a comma separated list of MAC addresses
 permitted access to the vblade.  A MAC address can be specified in upper
