Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Feb 2007 00:11:08 +0100
From:      Jeremie Le Hen <jeremie@le-hen.org>
To:        freebsd-current@FreeBSD.org
Subject:   Using /etc/rc.d/devfs from command-line
Message-ID:  <20070221231108.GC2479@obiwan.tataz.chchile.org>

next in thread | raw e-mail | index | archive | help

--PuGuTyElPB9bOcsM
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

The attached patch allows to provide arguments to rc.d/devfs with
the same syntax as $devfs_set_rulesets.  This is then easier to mount
manually devfs inside a directory and apply some predefined rulesets
on it.  Before this patch you had to manually apply rules to the
devfs mount point, provided pre-configured rulesets had been loaded
into the kernel (with rc.subr's devfs_init_rulesets()).

Example:
% mount_devfs none /space/chroot/dev
% /etc/rc.d/devfs start /space/chroot/dev=devfsrules_jail

Best regards,
-- 
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >

--PuGuTyElPB9bOcsM
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="rc.d_devfs.patch"

? .devfs.swp
? rc.d_devfs.patch
Index: devfs
===================================================================
RCS file: /home/ncvs/src/etc/rc.d/devfs,v
retrieving revision 1.12
diff -u -p -r1.12 devfs
--- devfs	21 Jan 2006 14:31:45 -0000	1.12
+++ devfs	21 Feb 2007 22:55:53 -0000
@@ -14,6 +14,21 @@ name="devfs"
 start_cmd='devfs_start'
 stop_cmd=':'
 
+set_rulesets()
+{
+	if [ -n "$devfs_set_rulesets" ]; then
+		local _dir_set
+		local _dir
+		local _set
+		for _dir_set in $devfs_set_rulesets; do
+			_dir=${_dir_set%=*}
+			_set=${_dir_set#*=}
+			devfs_set_ruleset $_set $_dir
+			devfs_apply_ruleset $_set $_dir
+		done
+		fi
+}
+
 devfs_start()
 {
 	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then
@@ -22,17 +37,7 @@ devfs_start()
 			devfs_set_ruleset $devfs_system_ruleset /dev
 			devfs_apply_ruleset $devfs_system_ruleset /dev
 		fi
-		if [ -n "$devfs_set_rulesets" ]; then
-			local _dir_set
-			local _dir
-			local _set
-			for _dir_set in $devfs_set_rulesets; do
-				_dir=${_dir_set%=*}
-				_set=${_dir_set#*=}
-				devfs_set_ruleset $_set $_dir
-				devfs_apply_ruleset $_set $_dir
-			done
-		fi
+		set_rulesets
 	fi
 	read_devfs_conf
 }
@@ -67,4 +72,14 @@ read_devfs_conf()
 }
 
 load_rc_config $name
-run_rc_command "$1"
+cmd="$1"
+if [ $# -gt 0 ]; then
+	shift
+fi
+if [ -n "$*" ]; then
+	start_cmd="set_rulesets"
+	devfs_set_rulesets="$*"
+	devfs_init_rulesets
+fi
+
+run_rc_command "$cmd"

--PuGuTyElPB9bOcsM--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070221231108.GC2479>