freebsd-dev/libexec/rc/rc.d/devfs
Bjoern A. Zeeb 0696600c41 Move the rc framework out of sbin/init into libexec/rc.
The reasons for this are forward looking to pkgbase:
 * /sbin/init is a special binary; try not to replace it with
   every package update because an rc script was touched.
   (a follow-up commit will make init its own package)
 * having rc in its own place will allow more easy replacement
   of the rc framework with alternatives, such as openrc.

Discussed with:		brd (during BSDCam), kmoore
Requested by:		cem, bz
PR:			231522
Approved by:		re (gjb)
2018-10-17 16:49:11 +00:00

73 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: devfs
# REQUIRE: mountcritremote
# BEFORE: SERVERS securelevel
# KEYWORD: nojail
. /etc/rc.subr
name="devfs"
desc="Device filesystem"
start_cmd='devfs_start'
stop_cmd=':'
devfs_start()
{
if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] ||
checkyesno devfs_load_rulesets; then
devfs_init_rulesets
if [ -n "$devfs_system_ruleset" ]; then
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
fi
read_devfs_conf
}
read_devfs_conf()
{
if [ -r /etc/devfs.conf ]; then
cd /dev
while read action devicelist parameter; do
case "${action}" in
l*) for device in ${devicelist}; do
if [ ! -e ${parameter} ]; then
ln -fs ${device} ${parameter}
fi
done
;;
o*) for device in ${devicelist}; do
if [ -c ${device} ]; then
chown ${parameter} ${device}
fi
done
;;
p*) for device in ${devicelist}; do
if [ -c ${device} ]; then
chmod ${parameter} ${device}
fi
done
;;
esac
done < /etc/devfs.conf
fi
}
load_rc_config $name
run_rc_command "$1"