FreeBSD6.2Rでjail環境構築中その3(nullfsでhostとportsツリーを共有する場合) - ezjail

http://d.hatena.ne.jp/m-bird/20080118/1200647446からのつづき。

portsツリー導入しようぜ - 始めに

portsツリーを導入するのに、jail環境毎に構築してたら、HDDがもったいない。
ということで、nullfsとかでマウントしちゃえば無駄にならないじゃん、というのが今回のお話。

# ls -all /usr/jails/JAILNAME
total 29
drwxr-xr-x  12 root  wheel   512 Jan 18 03:22 .
drwxr-xr-x   6 root  wheel   512 Jan 18 02:32 ..
-r--r--r--   1 root  wheel  6196 Jan 18 02:32 COPYRIGHT
drwxr-xr-x   9 root  wheel   512 Jan 17 22:17 basejail
lrwxrwxrwx   1 root  wheel    13 Jan 18 02:32 bin -> /basejail/bin
lrwxrwxrwx   1 root  wheel    14 Jan 18 02:32 boot -> /basejail/boot
dr-xr-xr-x   4 root  wheel   512 Jan 18 03:28 dev
drwxr-xr-x  18 root  wheel  2048 Jan 18 17:24 etc
lrwxrwxrwx   1 root  wheel    13 Jan 18 02:32 lib -> /basejail/lib
lrwxrwxrwx   1 root  wheel    17 Jan 18 02:32 libexec -> /basejail/libexec
drwxr-xr-x   2 root  wheel   512 Jan 18 02:32 media
drwxr-xr-x   2 root  wheel   512 Jan 18 02:32 mnt
dr-xr-xr-x   1 root  wheel     0 Jan 18 17:24 proc
lrwxrwxrwx   1 root  wheel    16 Jan 18 02:32 rescue -> /basejail/rescue
drwxr-xr-x   2 root  wheel   512 Jan 18 03:19 root
lrwxrwxrwx   1 root  wheel    14 Jan 18 02:32 sbin -> /basejail/sbin
lrwxrwxrwx   1 root  wheel    11 Jan 18 02:32 sys -> usr/src/sys
drwxrwxrwt   6 root  wheel   512 Jan 18 03:28 tmp
drwxr-xr-x   4 root  wheel   512 Jan 18 02:32 usr
drwxr-xr-x  23 root  wheel   512 Jan 18 03:28 var

なんか、/basejailにリンクが。
/usrも見てみると。

# ls -all /usr/jails/JAILNAME/usr
total 8
drwxr-xr-x   4 root  wheel  512 Jan 18 02:32 .
drwxr-xr-x  12 root  wheel  512 Jan 18 03:22 ..
lrwxrwxrwx   1 root  wheel   17 Jan 18 02:32 bin -> /basejail/usr/bin
lrwxrwxrwx   1 root  wheel   19 Jan 18 02:32 games -> /basejail/usr/games
lrwxrwxrwx   1 root  wheel   21 Jan 18 02:32 include -> /basejail/usr/include
lrwxrwxrwx   1 root  wheel   17 Jan 18 02:32 lib -> /basejail/usr/lib
lrwxrwxrwx   1 root  wheel   19 Jan 18 02:32 lib32 -> /basejail/usr/lib32
lrwxrwxrwx   1 root  wheel   21 Jan 18 02:32 libdata -> /basejail/usr/libdata
lrwxrwxrwx   1 root  wheel   21 Jan 18 02:32 libexec -> /basejail/usr/libexec
drwxr-xr-x   3 root  wheel  512 Jan 18 02:32 local
drwxr-xr-x   2 root  wheel  512 Jan 18 02:32 obj
lrwxrwxrwx   1 root  wheel   19 Jan 18 02:32 ports -> /basejail/usr/ports
lrwxrwxrwx   1 root  wheel   18 Jan 18 02:32 sbin -> /basejail/usr/sbin
lrwxrwxrwx   1 root  wheel   19 Jan 18 02:32 share -> /basejail/usr/share
lrwxrwxrwx   1 root  wheel   17 Jan 18 02:32 src -> /basejail/usr/src

portsも/basejail/usr/portsに。
ってことで、/basejail/usr/portsportsツリーを構築しまっす。

jail環境にportsツリーを導入する。

マウントポイントの設定

とりあえず、

/usr/jails/basejail/usr/ports
/usr/jails/basejail/usr/src

この二つのディレクトリがあるかどうか確認(私はここで詰まりましたorz)。
無かったらmkdir。
nullfsでHOST環境のportsツリーをリードオンリーでマウント。
以下を編集(HOST)

# vim /etc/fstab

以下を追記。

/usr/ports  /usr/jails/JAILNAME/basejail/usr/ports  nullfs ro,noauto    0   0
/usr/src  /usr/jails/JAILNAME/basejail/usr/src  nullfs ro,noauto    0   0 

jail環境のportsを整備

portsでインストールする場合は、作業用ディレクトリとソース保存ディレクトリが必要になるので、make.confで以下の指定が必要です。
jail環境の/etc/make.confに以下の記述があるかどうか、確認して下さい(デフォルトで記述されているはず)。

WRKDIRPREFIX=  /var/ports
DISTDIR=  /var/ports/distfiles
PACKAGES=  /var/ports/packages 

以上の設定でよければ、これらのディレクトリを作成してあげます。jexecでjail環境に入って、以下の通りディレクトリを作成して下さい。

JAILNAME# mkdir /var/ports
JAILNAME# mkdir /var/ports/distfiles
JAILNAME# mkdir /var/ports/packages  
portsツリーのマウント

設定が完了したら、実際にjail環境にportsツリーをマウントしてやります。

HOST# mount /usr/jails/JAILNAME/basejail/usr/ports
HOST# mount /usr/jails/JAILNAME/basejail/usr/src


以上で、jail環境でもportsツリーが使えるようになりました。
良いFreeBSDライフを!

2007/2/10追記

遅れましたが、以下にportsツリーを分ける場合の手順を追記しました。
それに合わせ、全ての記事を大幅修正しました。
http://d.hatena.ne.jp/m-bird/20080118/1202583191