Проблема на самом деле даже не в jail а в devfs.
Собственно сама проблема в кратце - ни скриптами ни тюнингом rc.conf не удается ни в какую заставить работать фильтры devfs (что собственно для jail - катастрофа)...
Теперь подробнее..
Вырезка из rc.conf:
---------------------------------
# jails
jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="host2" # 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
jail_host2_rootdir="/usr/jails/host2" # Jail's root directory
jail_host2_hostname="host2.avdos.com" # Jail's hostname
jail_host2_ip="xx.xx.xx.xx" # Jail's IP number
jail_host2_exec="/bin/sh /etc/rc" # command to execute in jail
jail_host2_devfs_enable="YES" # mount devfs in the jail
jail_host2_procfs_enable="YES" # mount procfs in jail
jail_host2_devfs_ruleset="4" # as described in /etc/defaults/devfs.rules
---------------------------------
Собственно бутим джайл и смотрим в /usr/jails/host2/dev - и имеем там вместо указанных в /etc/defaults/devfs.rules девайсов полный набор вместе с mem и kmem...
Это пол беды.. Далее у меня вообще чудеса имеются и вот какие. Пишем скрипт:
---------------------------------
#!/bin/sh
# jail devfs
/sbin/devfs rule -s 10 delset
/sbin/devfs rule -s 10 add 100 hide
/sbin/devfs rule -s 10 add 200 path 'ptyp*' unhide
/sbin/devfs rule -s 10 add 300 path 'ttyp*' unhide
/sbin/devfs rule -s 10 add 400 path null unhide
/sbin/devfs rule -s 10 add 500 path zero unhide
/sbin/devfs rule -s 10 add 600 path random unhide
/sbin/devfs rule -s 10 add 610 path urandom unhide
/sbin/devfs rule -s 10 add 700 path fd unhide
/sbin/devfs rule -s 10 add 800 path fd/* unhide
/sbin/devfs rule -s 10 add 810 path mdctl unhide
/sbin/devfs rule -s 10 add 900 path stdin unhide
/sbin/devfs rule -s 10 add 910 path stdout unhide
/sbin/devfs rule -s 10 add 920 path stderr unhide
/sbin/mount_devfs devfs /usr/jails/host2/dev
/sbin/devfs -m /usr/jails/host2/dev rule -s 10 applyset
---------------------------------
...запускаем ЭТО скажем из rc.local и... имеем ОПЯТЬ полный набор девайсов... Далее еще интереснее запускаем скрипт "руками" прямо из шелла:
su-2.05b# ./devsetup
su-2.05b# ls -1 /usr/jails/host2/dev | wc -l
90
..и опять тут мы получили полный набор девайсов без фильтра... а теперь просто берем последнюю строку из скрипта (никаких больше действий не производится нигде) и запускем из шела:
su-2.05b# /sbin/devfs -m /usr/jails/host2/dev rule -s 10 applyset
su-2.05b# ls -1 /usr/jails/host2/dev | wc -l
13
su-2.05b# ls /usr/jails/host2/dev
fd mdctl null ptyp0 ptyp1 random stderr stdin stdout ttyp0 ttyp1 urandom zero
su-2.05b#
вот тут у меня собственно и вопрос - каким таким чудесно-волшебным способом из конфига или из скрипта рулесеты не устанавливаются, а прямыми коммандами из шелла - устанавливаются как положено?
У кого-нибудь есть идеи? Спасибо заранее..