diff -uraN sysvinit-2.86.ds1.orig/debian/control sysvinit-2.86.ds1/debian/control
--- sysvinit-2.86.ds1.orig/debian/control	2009-02-08 06:32:09.000000000 +0000
+++ sysvinit-2.86.ds1/debian/control	2009-02-08 01:34:15.000000000 +0000
@@ -3,7 +3,7 @@
 Priority: required
 Maintainer: Debian sysvinit maintainers <pkg-sysvinit-devel@lists.alioth.debian.org>
 Uploaders: Miquel van Smoorenburg <miquels@cistron.nl>, Petter Reinholdtsen <pere@debian.org>, Henrique de Moraes Holschuh <hmh@debian.org>
-Build-Depends: dpatch, libselinux1-dev (>= 1.14) [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64]
+Build-Depends: dpatch, libselinux1-dev (>= 1.14) [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64 !kopensolaris-i386], libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64 !kopensolaris-i386]
 Standards-Version: 3.8.0
 Vcs-Svn: svn://svn.debian.org/pkg-sysvinit/sysvinit/trunk
 Vcs-Browser: http://svn.debian.org/wsvn/pkg-sysvinit/sysvinit/trunk/
diff -uraN sysvinit-2.86.ds1.orig/debian/initscripts/etc/init.d/mountall.sh sysvinit-2.86.ds1/debian/initscripts/etc/init.d/mountall.sh
--- sysvinit-2.86.ds1.orig/debian/initscripts/etc/init.d/mountall.sh	2009-02-08 06:32:09.000000000 +0000
+++ sysvinit-2.86.ds1/debian/initscripts/etc/init.d/mountall.sh	2009-02-08 06:30:59.076582894 +0000
@@ -43,7 +43,7 @@
 	post_mountall
 
 	case "$(uname -s)" in
-	  *FreeBSD)
+	  *FreeBSD | "GNU/kOpenSolaris")
 		INITCTL=/etc/.initctl
 		;;
 	  *)
diff -uraN sysvinit-2.86.ds1.orig/debian/postinst sysvinit-2.86.ds1/debian/postinst
--- sysvinit-2.86.ds1.orig/debian/postinst	2009-02-08 06:32:09.000000000 +0000
+++ sysvinit-2.86.ds1/debian/postinst	2009-02-08 01:34:15.000000000 +0000
@@ -17,7 +17,7 @@
 umask 022
 
 case "$(uname -s)" in
-  *FreeBSD)
+  *FreeBSD | "GNU/kOpenSolaris")
 	INITCTL=/etc/.initctl
 	;;
   *)
diff -uraN sysvinit-2.86.ds1.orig/src/bootlogd.c sysvinit-2.86.ds1/src/bootlogd.c
--- sysvinit-2.86.ds1.orig/src/bootlogd.c	2004-06-09 12:47:45.000000000 +0000
+++ sysvinit-2.86.ds1/src/bootlogd.c	2009-02-08 06:30:04.775677911 +0000
@@ -505,6 +505,7 @@
 		return 1;
 	}
 
+#ifdef TIOCCONS
 	(void)ioctl(0, TIOCCONS, NULL);
 #if 1
 	/* Work around bug in 2.1/2.2 kernels. Fixed in 2.2.13 and 2.3.18 */
@@ -518,6 +519,7 @@
 			buf, strerror(errno));
 		return 1;
 	}
+#endif
 
 	/*
 	 *	Fork and write pidfile if needed.
diff -uraN sysvinit-2.86.ds1.orig/src/init.c sysvinit-2.86.ds1/src/init.c
--- sysvinit-2.86.ds1.orig/src/init.c	2004-07-30 12:16:20.000000000 +0000
+++ sysvinit-2.86.ds1/src/init.c	2009-02-08 06:30:04.983636841 +0000
@@ -42,6 +42,9 @@
 #include <stdarg.h>
 #include <sys/syslog.h>
 #include <sys/time.h>
+#ifdef __OpenSolaris_kernel__
+# include <zone.h>
+#endif
 
 #ifdef __i386__
 #  if (__GLIBC__ >= 2)
@@ -2616,7 +2619,16 @@
 	/*
 	 *	Is this telinit or init ?
 	 */
+#ifdef __OpenSolaris_kernel__
+	pid_t initpid = 1;
+	if (zone_getattr (getzoneid (), ZONE_ATTR_INITPID, &initpid,
+			sizeof (pid_t)) == sizeof (pid_t))
+        isinit = (getpid() == initpid);
+	else
+        isinit = (getpid() == 1);
+#else
 	isinit = (getpid() == 1);
+#endif
 	for (f = 1; f < argc; f++) {
 		if (!strcmp(argv[f], "-i") || !strcmp(argv[f], "--init"))
 			isinit = 1;
diff -uraN sysvinit-2.86.ds1.orig/src/initreq.h sysvinit-2.86.ds1/src/initreq.h
--- sysvinit-2.86.ds1.orig/src/initreq.h	2004-07-30 11:56:51.000000000 +0000
+++ sysvinit-2.86.ds1/src/initreq.h	2009-02-08 01:36:27.492175875 +0000
@@ -16,7 +16,7 @@
 
 #include <sys/param.h>
 
-#if defined(__FreeBSD_kernel__)
+#if defined(__FreeBSD_kernel__) || defined(__OpenSolaris_kernel__)
 #  define INIT_FIFO  "/etc/.initctl"
 #else
 #  define INIT_FIFO  "/dev/initctl"
diff -uraN sysvinit-2.86.ds1.orig/src/reboot.h sysvinit-2.86.ds1/src/reboot.h
--- sysvinit-2.86.ds1.orig/src/reboot.h	2004-06-09 12:47:45.000000000 +0000
+++ sysvinit-2.86.ds1/src/reboot.h	2009-02-08 01:38:04.589647702 +0000
@@ -32,5 +32,9 @@
 #  define BMAGIC_POWEROFF	BMAGIC_HALT
 #endif
 
-#define init_reboot(magic)	reboot(magic)
+#ifdef __OpenSolaris_kernel__
+#  define init_reboot(magic)	reboot(magic, "")
+#else
+#  define init_reboot(magic)	reboot(magic)
+#endif
 

