Redirect stdin from /dev/null when starting a jail:

At least in RELENG_7 this fixes some start problems for some programs
  from the ports. It is also more correct, as a jail shall not expect
  input (interactivity) from the jail-host.

Revert the current behavior of starting jails in the background and
make it optional only for the start of jails (jail_parallell_start=YES
in rc.conf):
 - The stop can not be done in the background, the system needs to wait
   until everything is stopped correctly before it can reboot or power
   down.
 - The start should not be done in parallel by default, this not only
   breaks POLA for people comming from RELENG_x, it may also break a
   dependency chain with other scripts in the jail-host, which need to
   do some stuff after the jails are up and running (e.g. hardlinking
   a mysql socket from one jail into another one).

Discussed on:	freebsd-jails@
This commit is contained in:
Alexander Leidinger 2010-03-05 14:34:33 +00:00
parent 34ae843479
commit 333fb1c996
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=204759
3 changed files with 25 additions and 3 deletions

View file

@ -637,6 +637,7 @@ mixer_enable="YES" # Run the sound mixer.
### Jail Configuration #######################################
##############################################################
jail_enable="NO" # Set to NO to disable starting of any jails
jail_parallel_start="NO" # Start jails in the background
jail_list="" # Space separated list of names of jails
jail_set_hostname_allow="YES" # Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail

View file

@ -636,7 +636,8 @@ jail_start()
done
eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \
\"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1
\"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 \
</dev/null
if [ "$?" -eq 0 ] ; then
_jail_id=$(head -1 ${_tmp_jail})
@ -728,4 +729,19 @@ fi
if [ -n "$*" ]; then
jail_list="$*"
fi
run_rc_command "${cmd}" &
# Only allow the parallel start of jails, other commands are not
# safe to execute in parallel.
case "${cmd}" in
*start)
;;
*)
jail_parallel_start=NO
esac
if checkyesno jail_parallel_start; then
run_rc_command "${cmd}" &
else
run_rc_command "${cmd}"
fi

View file

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd February 12, 2010
.Dd March 05, 2010
.Dt RC.CONF 5
.Os
.Sh NAME
@ -3497,6 +3497,11 @@ indicates that the highest frequency (less power savings) should be used.
If set to
.Dq Li NO ,
any configured jails will not be started.
.It jail_parallel_start
.Pq Vt bool
If set to
.Dq Li YES
all configured jails will be started in the background (= in parallel).
.It Va jail_list
.Pq Vt str
A space separated list of names for jails.