妄想日記 by 妄想エンジン


Mirakurun を jail の中で動かす。

ということで、前回のエントリで書いた Mirakurun ですが、うちの環境では jail に閉じ込めて動かしています。
さすがに pt3 のデバイスは親環境でなければ動かないのですが、それ以外は jail で動きます。

さっくり簡単に説明すると、/etc/devfs.rules を新規に作成します。

[devfsrules_jail_ptx=5]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'ptx*' unhide

上記のように、jail の中に見せたいデバイスを見せるように作ります。

あとは、jail を作る際にこのルールセット5を使うようにすればオッケーです。通常のjail は /etc/default/devfs.rules の中で定義されている4番の
ルールを使うようになっています。
別の jail で別のデバイスを見せたい場合は、同様にルールセットを別に定義します。
たとえば、dhcpd を動かしたいのであれば、bpf を見えるようにします。

[devfsrules_jail_bpf=6]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'bpf*' unhide

さて、本題に戻って mirakurun という jail を作成して、jexec で jail の外から確認してみましょう。
ptxというデバイスが見えるようになってます。

> sudo jexec mirakurun ls -l /dev
total 2
dr-xr-xr-x 2 root wheel 512 Dec 7 15:24 fd
crw-rw-rw- 1 root wheel 0x15 Dec 14 00:33 null
dr-xr-xr-x 2 root wheel 512 Dec 7 15:24 pts
crw-rw-rw- 1 root operator 0xae Nov 27 23:21 ptx0.s0
crw-rw-rw- 1 root operator 0xaf Nov 27 23:21 ptx0.s1
crw-rw-rw- 1 root operator 0xb0 Nov 27 23:21 ptx0.t0
crw-rw-rw- 1 root operator 0xb1 Nov 27 23:21 ptx0.t1
crw-rw-rw- 1 root operator 0xb2 Nov 27 23:21 ptx1.s0
crw-rw-rw- 1 root operator 0xb3 Nov 27 23:21 ptx1.s1
crw-rw-rw- 1 root operator 0xb4 Nov 27 23:21 ptx1.t0
crw-rw-rw- 1 root operator 0xb5 Nov 27 23:21 ptx1.t1
crw-r--r-- 1 root wheel 0x5 Nov 27 23:20 random
lrwxr-xr-x 1 root wheel 4 Dec 7 15:24 stderr -> fd/2
lrwxr-xr-x 1 root wheel 4 Dec 7 15:24 stdin -> fd/0
lrwxr-xr-x 1 root wheel 4 Dec 7 15:24 stdout -> fd/1
lrwxr-xr-x 1 root wheel 6 Dec 7 15:24 urandom -> random
crw-rw-rw- 1 root wheel 0x16 Nov 28 08:20 zero

試していないのでわからないけど、たぶん複数の jail の中から同時に ptx 触るとエラーになると思うんですよね。
常識的に考えて。なので、その辺は適当に排他制御しておきましょう。っていうか、複数に割り振らないよね。

この手の環境を jail に押し込めることができると、いろいろ実験したり、バックアップ取ったりするのが非常に楽に
なるので、せっかく FreeBSD 使ってるので活かしましょう。
ちなみにうちは、Mirakurun, Chinachu, EPGStation それぞれ別の jail の中で動かしています。
アップデートがらくちんで便利。

qjail を使っているjailを管理している場合は、ルールセットを作成後、qjail config で ruleset を指定できます。具体的には

> sudo qjail config [jail名] -b [ルールセット]

です。もちろん、対象の jail は stop していないと変更できません。
create の際に指定する方法は無いようなので、create した直後に変更しておくとよいでしょう。

ツイート
|top |アフィリエイト |windowsネタ |料理メモ |コンタクト |twitter |
さわやかなエロスを目指す--妄想エンジン ©1996-2022
コンテンツ配信