ぽっぺん日記@karashi.org
2004-12-12(Sun) [長年日記]
_ 5.3-RELEASEホスト下のjail環境で4.10-RELEASEを動かす
いずれ、Wikiを立てた時に、そちらに移すということで、とりあえずメモ。
わざわざ5.3-RELEASEホスト下のjailで、4.10-RELEASEを動かす理由は、社内で動いている4.10-RELEASEのマシン用のpackageサーバを構築するため。
本来ならば、えいやっと全マシンを5.3-RELEASEに上げてしまうなり、4.10-RELEASEのマシンをpackageサーバとして用意するなりするのが一番シンプルなのだろうが、諸般の事情により*1そうもいかないのでやってみた。
基本的に特別なことは何もしていない。
まず、4.10-RELEASEのjailツリーを構築する。
構築方法は、通常の4.10-RELESEでやるやり方とまったく同じ。色々な方法があると思うけれど、俺の場合、配布されている4.10-RELEASE-i386-disc1.isoをftpで取ってきて、下記の要領で展開した。
*1 5.3-Rだとまだ心配だとか、時間がないとか、マシンの手当がつかないとか、スペースがないとか、面倒とか。
# mdconfig -a -f /vac/tmp/4.10-RELEASE-i386-disc1.iso
# mount -t cd9660 /dev/md1 /mnt
# setenv JAIL_PATH /usr/local/jail/4-release
# setenv DESTDIR $JAIL_PATH
# cd /mnt/bin
# ./install.sh
# cd ../manpages
# ./install.sh
# cd ../crypto
# ./install.sh
あとは好みでinfo等を展開する。
次にjail環境を整えるのだが、基本的な事は、俺が書くよりもman 8 jailするなり、FreeBSD Expert 2005のotsuneさんの記事を参照して貰う方が良いと思うので割愛。
jail環境構築の仕上げとして/etc/make.confに下記を書き加えておく。
OSREL=4.10
OSVERSION=491000
これが今回の肝。上記の記述がないと/usr/bin/unameがホストのバージョン番号を返すので、jail下で一部portsのmakeに失敗する。
あとは通常通りでjailを起動するだけ。注意点として、4.10-RELEASEはdevfsに対応していないので、/etc/rc.confでjail_jail1_devfs_enable="enable"を指定している場合には問題が出ると思われる。俺の場合は、同じホストで5.3-RELEASEのjailも動かしているので、4.10-RELEASEのjailについては/etc/rc.localから起動している。 ←(後日の追記:ここは間違い。devfsを使用すること。jail_jail1_devfs_enable="enable"も使える)
理由はよく分からないが、4.10-RELEASEのjail内からはsshdを起動することができないので、*1←(後日の追記:devfsを使えば、sshdが使える)jexec JAIL_ID /bin/tcshしてjail内に入り作業をしている。サーバを動かす理由もないし、packageだけmakeできればいいので、とりあえず問題ない。またjail内にportupgrade等、packageをmakeするための一連の作業を書いておいたスクリプトを置いておいて、それをホストからjexecで起動すれば作業の負担も軽減されると思う。
*1 "PRNG is not seeded"というエラーを吐く。
_ 現状の問題点
sshdを起動できない。-
試していないので不明だが、httpd等のデーモンも起動できない可能性がある。しかし、上記に書いた通りjexecで済ますなり、ホストまたは他のjailでデーモンを起動するなりすれば回避できるのであまり問題はないと思う。
(後日の追記:上記は間違い。前述の通り、devfsを使えば、sshdの起動は可能)
_ 追加
もしかすると、別のアプローチで5.3-RELEASE上でも4.x向けのpackageが作成できたりするのかも知れない、とちと思った。
例えば、compat4xをインストールしてから、/etc/make.confに少し追記するだけとか。調べていないので全然分からんけれども。




まで頂ければ幸いです。