diff -Naur sysvinit-2.85+linux/debian/changelog sysvinit-2.85+kbsd/debian/changelog
--- sysvinit-2.85+linux/debian/changelog	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/changelog	2004-05-12 19:51:52.000000000 +0200
@@ -1,3 +1,9 @@
+sysvinit (2.85-15+kbsd) unreleased; urgency=low
+
+  * Resync GNU/k*BSD fixes.
+
+ -- Robert Millan <rmh@debian.org>  Fri, 30 Apr 2004 21:01:27 +0200
+
 sysvinit (2.85-15) unstable; urgency=high
 
   * Drop bogus dependency on fileutils (closes: #241570)
diff -Naur sysvinit-2.85+linux/debian/control sysvinit-2.85+kbsd/debian/control
--- sysvinit-2.85+linux/debian/control	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/control	2004-05-12 19:51:52.000000000 +0200
@@ -31,7 +31,7 @@
 Package: initscripts
 Architecture: any
 Depends: ${shlibs:Depends}, dpkg (>= 1.9.0), ${mount:Depends}, util-linux (>= 2.9t-2), e2fsprogs (>= 1.19-1), coreutils (>= 5.0.91-2)
-Replaces: sysvinit (<< 2.85-12), libc6, libc6.1
+Replaces: sysvinit (<< 2.85-12), libc6, libc6.1, libc0.1
 Conflicts: kbd (<< 0.95-2), mdutils (<< 0.35-9)
 Description: Standard scripts needed for booting and shutting down
  These scripts are meant for standard Debian/GNU/Linux installations.
diff -Naur sysvinit-2.85+linux/debian/initscripts/conffiles sysvinit-2.85+kbsd/debian/initscripts/conffiles
--- sysvinit-2.85+linux/debian/initscripts/conffiles	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/conffiles	2004-05-12 19:51:52.000000000 +0200
@@ -1,3 +1,4 @@
+/etc/init.d/rcArch
 /etc/init.d/bootclean.sh
 /etc/init.d/bootlogd
 /etc/init.d/bootmisc.sh
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/bootmisc.sh sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/bootmisc.sh
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/bootmisc.sh	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/bootmisc.sh	2004-05-12 19:51:52.000000000 +0200
@@ -8,6 +8,7 @@
 VERBOSE=yes
 EDITMOTD=yes
 [ -f /etc/default/rcS ] && . /etc/default/rcS
+. /etc/init.d/rcArch
 
 #
 #	Put a nologin file in /etc to prevent people from logging in
@@ -55,7 +56,7 @@
 #
 #	Save kernel messages in /var/log/dmesg
 #
-dmesg -s 65536 > /var/log/dmesg
+dmesg $dmesg_bufsize > /var/log/dmesg
 
 #
 #	Remove ".clean" files.
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/checkroot.sh sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/checkroot.sh
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/checkroot.sh	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/checkroot.sh	2004-05-12 19:51:52.000000000 +0200
@@ -7,6 +7,7 @@
 SULOGIN=no
 VERBOSE=yes
 [ -f /etc/default/rcS ] && . /etc/default/rcS
+. /etc/init.d/rcArch
 
 PATH=/lib/init:/bin:/sbin
 
@@ -176,7 +177,7 @@
 	#
 	# Ensure that root is quiescent and read-only before fsck'ing.
 	#
-	if ! mount -n -o remount,ro /
+	if ! mount $mount_no_mtab $mount_remount,ro /
 	then
     		echo -n "*** ERROR!  Cannot fsck root fs because it is "
 		echo    "not mounted read-only!"
@@ -233,7 +234,7 @@
 	echo "that the root file system is currently mounted read-only.  To"
 	echo "remount it read-write:"
 	echo
-	echo "   # mount -n -o remount,rw /"
+	echo "   # mount $mount_no_mtab $mount_remount,rw /"
 	echo
 	echo "CONTROL-D will exit from this shell and REBOOT the system."
 	echo
@@ -255,7 +256,7 @@
 #
 #	Remount root to final mode (rw or ro).
 #	
-mount -n -o remount,$rootmode /
+mount $mount_no_mtab $mount_remount,$rootmode /
 
 #
 #	We only create/modify /etc/mtab if the location where it is
@@ -282,9 +283,9 @@
 
 if [ "$init_mtab"  = yes ]
 then
-	[ "$roottype" != none ] && mount -f -o remount /
-	[ -n "$devfs" ] && mount -f $devfs
-	. /etc/init.d/mountvirtfs
+	[ "$roottype" != none ] && mount -f $mount_remount,$rootmode /
+	[ $SYSTEM = linux-compat ] && [ -n "$devfs" ] && mount -f $devfs
+	[ $SYSTEM = linux-compat ] && . /etc/init.d/mountvirtfs
 fi
 
 #
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/halt sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/halt
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/halt	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/halt	2004-05-12 19:51:52.000000000 +0200
@@ -25,6 +25,8 @@
 	esac
 fi
 
+. /etc/init.d/rcArch
+
 # See if we need to cut the power.
 if [ "$INIT_HALT" = "POWEROFF" -a -x /etc/init.d/ups-monitor ]
 then
@@ -45,6 +47,6 @@
 	poweroff=""
 fi
 
-halt -d -f -i $poweroff $hddown
+halt -d -f $poweroff $halt_ifdown $hddown
 
 : exit 0
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/mountall.sh sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/mountall.sh
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/mountall.sh	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/mountall.sh	2004-05-12 19:51:52.000000000 +0200
@@ -7,6 +7,7 @@
 VERBOSE=yes
 TMPTIME=0
 [ -f /etc/default/rcS ] && . /etc/default/rcS
+. /etc/init.d/rcArch
 . /etc/init.d/bootclean.sh
 
 #
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/rcArch sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/rcArch
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/rcArch	1970-01-01 01:00:00.000000000 +0100
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/rcArch	2004-05-12 19:51:52.000000000 +0200
@@ -0,0 +1,36 @@
+# Arch specific options
+
+if [ `uname -s` = Linux -o `uname -s` = GNU ]; then
+  SYSTEM=linux-compat
+  umount_all="-a -r"
+  umount_try_ro="-r"
+  case "`uname -s`:`uname -r`" in
+    GNU:*|Linux:2.[01].*)
+      umount_force=""
+      umount_lazy=""
+      ;;
+    Linux:2.[23].*)
+      umount_force="-f"
+      umount_lazy=""
+      ;;
+    *)
+      umount_force="-f"
+      umount_lazy="-l"
+      ;;
+  esac
+  dmesg_bufsize="-s 65536"
+  procfs="proc"
+  mount_no_mtab="-n"
+  mount_remount="-o remount"
+  halt_ifdown="-i"
+else
+  SYSTEM=bsd-compat
+  umount_all="-a"
+  umount_try_ro=""
+  umount_force="-f"
+  procfs="procfs"
+  mount_no_mtab=""
+  mount_remount="-o update"
+  halt_ifdown=""
+fi
+
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/reboot sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/reboot
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/reboot	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/reboot	2004-05-12 19:51:52.000000000 +0200
@@ -7,5 +7,7 @@
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
+. /etc/init.d/rcArch
+
 echo -n "Rebooting... "
-reboot -d -f -i
+reboot -d -f $halt_ifdown
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/single sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/single
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/single	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/single	2004-05-12 19:51:52.000000000 +0200
@@ -19,11 +19,14 @@
 # We start update here, since we just killed it.
 if [ -x /sbin/update ]
 then
-	case `uname -r` in
-		0.*|1.*|2.[0123].*)
-			update
-		;;
-	esac
+  if [ `uname -s` = Linux ]
+  then
+    case `uname -r` in
+      0.*|1.*|2.[0123].*)
+        update
+        ;;
+    esac
+  fi
 fi
 
 echo "Entering single-user mode..."
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/umountfs sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/umountfs
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/umountfs	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/umountfs	2004-05-12 19:51:52.000000000 +0200
@@ -7,19 +7,23 @@
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
-echo -n "Deactivating swap..."
-umount -ttmpfs -a -r
-swapoff -a
-echo "done."
+. /etc/init.d/rcArch
+
+if [ `uname -s` = Linux ] ; then
+  echo -n "Deactivating swap..."
+  umount -ttmpfs -a -r
+  swapoff -a
+  echo "done."
+fi
 
 #
 #	Umount all filesystems except the virtual ones.
 #
 echo -n "Unmounting local filesystems..."
-umount -tnoproc,nodevfs,nosysfs,nousbfs,nousbdevfs,nodevpts -d -a -r
+umount -tno$procfs,nodevfs,nosysfs,nousbfs,nousbdevfs,nodevpts -d $umount_all
 echo "done."
 
 # This is superfluous.
-mount -n -o remount,ro /
+mount $mount_no_mtab $mount_remount,ro /
 
 : exit 0
diff -Naur sysvinit-2.85+linux/debian/initscripts/etc/init.d/umountnfs.sh sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/umountnfs.sh
--- sysvinit-2.85+linux/debian/initscripts/etc/init.d/umountnfs.sh	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/initscripts/etc/init.d/umountnfs.sh	2004-05-12 19:51:52.000000000 +0200
@@ -11,16 +11,21 @@
 
 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
-case "`uname -r`" in
-	[01].*|2.[01].*)
+. /etc/init.d/rcArch
+
+case "`uname -s`:`uname -r`" in
+	Linux:[01].*|Linux:2.[01].*)
 		FLAGS=""
 		;;
-	2.[23].*|2.4.?|2.4.?-*|2.4.10|2.4.10-*)
+	Linux:2.[23].*|Linux:2.4.?|Linux:2.4.?-*|Linux:2.4.10|Linux:2.4.10-*)
 		FLAGS="-f"
 		;;
-	*)
+	Linux:*)
 		FLAGS="-f -l"
 		;;
+	*:*)
+		FLAGS="$umount_force $umount_lazy"
+		;;
 esac
 
 # Write a reboot record to /var/log/wtmp before unmounting
@@ -48,7 +53,7 @@
 			nfs|nfs4|smbfs|ncpfs|coda)
 				DIRS="$DIR $DIRS"
 				;;
-			proc|devfs|devpts|usbfs|usbdevfs|sysfs)
+			$procfs|devfs|devpts|usbfs|usbdevfs|sysfs)
 				DIRS="$DIR $DIRS"
 				;;
 		esac
diff -Naur sysvinit-2.85+linux/debian/rules sysvinit-2.85+kbsd/debian/rules
--- sysvinit-2.85+linux/debian/rules	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/debian/rules	2004-05-12 19:51:52.000000000 +0200
@@ -12,6 +12,8 @@
 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 DEB_BUILD_GNU_SYSTEM ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)
 
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
 define checkdir
 	test -f src/init.c
 endef
diff -Naur sysvinit-2.85+linux/src/bootlogd.c sysvinit-2.85+kbsd/src/bootlogd.c
--- sysvinit-2.85+linux/src/bootlogd.c	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/src/bootlogd.c	2004-05-12 19:51:52.000000000 +0200
@@ -41,7 +41,6 @@
 #include <fcntl.h>
 #include <pty.h>
 #include <ctype.h>
-#include <sys/mount.h>
 
 char *Version = "@(#) bootlogd 2.86 12-Jan-2004 miquels@cistron.nl";
 
@@ -240,7 +239,7 @@
 		return -1;
 	}
 	if (st.st_dev == st2.st_dev) {
-		if (mount("proc", "/proc", "proc", 0, NULL) < 0) {
+		if (system("mount -t proc proc /proc") != 0) {
 			perror("bootlogd: mount /proc");
 			return -1;
 		}
@@ -259,7 +258,7 @@
 			perror("bootlogd: /proc/cmdline");
 		close(fd);
 	}
-	if (didmount) umount("/proc");
+	if (didmount) system("umount /proc");
 
 	if (r < 0) return r;
 
diff -Naur sysvinit-2.85+linux/src/mountpoint.c sysvinit-2.85+kbsd/src/mountpoint.c
--- sysvinit-2.85+linux/src/mountpoint.c	2004-05-12 19:30:14.000000000 +0200
+++ sysvinit-2.85+kbsd/src/mountpoint.c	2004-05-12 19:51:52.000000000 +0200
@@ -77,6 +77,7 @@
 		return 1;
 
 	if (xdev) {
+#ifndef __FreeBSD_kernel__
 		if (!S_ISBLK(st.st_mode)) {
 			if (quiet)
 				printf("\n");
@@ -85,6 +86,7 @@
 				path);
 			return 1;
 		}
+#endif
 		printf("%u:%u\n", major(st.st_rdev), minor(st.st_rdev));
 		return 0;
 	}
