FreeBSDのjail環境下でストリーミング配信を行う実験のため、jail仮想環境でデバイスをフルに利用するための設定を行ってみたメモ。
/etc/defaults/devfs.rulesを/etcにコピー
# cp /etc/defaults/devfs.rules /etc
jail仮想ホストのデバイスをフルにするためにコピーした/etc/devfs.rulesを編集
[devfsrules_hide_all=1] add hide # Basic devices typically necessary. # Requires: devfsrules_hide_all # [devfsrules_unhide_basic=2] add path log unhide add path null unhide add path zero unhide add path crypto unhide add path random unhide add path urandom unhide # Devices typically needed to support logged-in users. # Requires: devfsrules_hide_all # [devfsrules_unhide_login=3] add path 'ptyp*' unhide add path 'ptyq*' unhide add path 'ptyr*' unhide add path 'ptys*' unhide add path 'ptyP*' unhide add path 'ptyQ*' unhide add path 'ptyR*' unhide add path 'ptyS*' unhide add path 'ptyl*' unhide add path 'ptym*' unhide add path 'ptyn*' unhide add path 'ptyo*' unhide add path 'ptyL*' unhide add path 'ptyM*' unhide add path 'ptyN*' unhide add path 'ptyO*' unhide add path 'ttyp*' unhide add path 'ttyq*' unhide add path 'ttyr*' unhide add path 'ttys*' unhide add path 'ttyP*' unhide add path 'ttyQ*' unhide add path 'ttyR*' unhide add path 'ttyS*' unhide add path 'ttyl*' unhide add path 'ttym*' unhide add path 'ttyn*' unhide add path 'ttyo*' unhide add path 'ttyL*' unhide add path 'ttyM*' unhide add path 'ttyN*' unhide add path 'ttyO*' unhide add path ptmx unhide add path pts unhide add path 'pts/*' unhide add path fd unhide add path 'fd/*' unhide add path stdin unhide add path stdout unhide add path stderr unhide # Devices usually found in a jail. # [devfsrules_jail=4] add include $devfsrules_hide_all add include $devfsrules_unhide_basic add include $devfsrules_unhide_login add path zfs unhide # [devfsrules_jail=5] ← 以下を追加 add path mem unhide add path kmem unhide
/etc/jail.confを調整
# ############## # 共通の設定 # ############## allow.raw_sockets = 0; allow.set_hostname = 0; allow.sysvipc = 0; mount.devfs; mount += "procfs /jail/${name}/proc procfs rw 0 0"; exec.start += "/bin/sh /etc/rc"; exec.stop = "/bin/sh /etc/rc.shutdown"; ################## # jail個別の設定 # ################## jail1 { # デバイスを規制したjail host.hostname = "jail1.hoge.com"; path = "/jail/jail1"; ip4.addr += "xxx.xxx.xxx.xxx/32"; allow.raw_sockets = 1; allow.sysvipc = 1; allow.mount.procfs; devfs_ruleset = "4"; ← 制限したルール適用 } jail2 { # デバイスフルのjail host.hostname = "jail2.hoge.com"; path = "/jail/jail2"; ip4.addr += "xxx.xxx.xxx.yyy/32"; allow.raw_sockets = 1; allow.sysvipc = 1; allow.mount.procfs; devfs_ruleset = "5"; ← 制限無のルール適用 }
い