-- hd [2004-08-08 18:04:09]

1. Freebsd Jail安装Howto

呵呵,安装系统总是很烦的,为了实现“五分钟安装一台Server”,我告诉大家使用jail来驱动freebsd的决胜大法。

1.1. make jail world

需要先为vhost准备一个目录:

mkdir –p /home/jail/hdtest

1.1.1. 没有make world过

如果你从没有做过make world,哪么你只能这样:

cd /usr/src
make world DESTDIR=/home/jail/hdtest

你会发现需要一个很久的时间的。 当然,如果你需要定制你的world你可以学习一下我的/etc/make.conf文件:

CPUTYPE=i686

NO_FORTRAN=    true    # do not build g77 and related libraries
NO_I4B=        true    # do not build isdn4bsd package
NO_LPR=        true    # do not build lpr and related programs
NO_SENDMAIL=   true    # do not build sendmail and related programs
NO_SHAREDOCS=  true    # do not build the 4.4BSD legacy docs
NO_X=          true    # do not compile in XWindows support (e.g. doscmd)
NOGAMES=       true    # do not build games (games/ subdir)
NOINFO=        true    # do not make or install info files
NOPERL=        true    # do not build perl. Disables OpenSSL optimizations
NOPROFILE=     true    # Avoid compiling profiled libraries
NOUUCP=        true    # do not build uucp related programs

对于FreeBSD 5.x和更新的版本,建议的/etc/make.conf如下:

NO_ACPI=        true
NO_BOOT=        true
NO_BIND=        true
NO_BLUETOOTH=   true
NO_FORTRAN=     true
NO_I4B=         true
NO_IPFILTER=    true
NO_PF=          true
NO_AUTHPF=      true
NO_KERBEROS=    true
NO_LPR=         true
NO_MODULES=     true
NO_SHAREDOCS=   true
NO_USB=         true
NOATM=          true
NOGAMES=        true
NOINET6=        true
NOLIBC_R=       true
NOPROFILE=      true

1.1.2. 听说并且make world过

呵呵,如果你听说并且make world过,哪么你是幸福的人,而且真的就可以五分钟就安装完这个系统了:

cd /usr/src
make installworld DESTDIR=/home/jail/hdtest
cd /usr/src/etc
make distribution DESTDIR=/home/jail/hdtest

1.2. 准备vhost使用的地址

你可以手工临时的启动一个alias的ip地址:

ifconfig fxp0 inet 192.168.10.60 netmask 255.255.255.255 alias

这里fxp0换成你的网卡,ip换成你的ip。但是临时的方法并不好,将这行加入到/etc/rc.conf中去罢:

ifconfig_fxp0_alias0="inet 192.168.10.60 netmask 255.255.255.255"

1.3. 对vhost实施外科手术

这个vhost还缺少很多的东东,我们为它进行一个外科手术:

mkdir /home/jail/hdtest/stand
cp /stand/sysinstall /home/jail/hdtest/stand/
cp /etc/resolv.conf /home/jail/hdtest/etc
touch /home/jail/hdtest/etc/fstab

这里主要是复制sysinstall系统工具以及将dns配置、fstab默认配置生成,由于vhost不需要自己的文件系统,所以fstab将是一个空的文件。

1.4. 进入vhost的单用户模式

先进行vhost的单用户模式,给vhost进行相应的配置:

jail /home/jail/hdtest jail.huangdong.com 192.168.10.60 /bin/sh

这里jail.huangdong.com是你的hostname,192.168.10.60是你的ip地址,这个ip地址应该已经使用alias参数绑定在你的网卡上。最后的/bin/sh是进去后运行的shell。需要注意的是/bin/sh这是vhost中的路径,大家不要当成了host中的路径。

1.4.1. 配置vhost

进入vhost的单用户模式后,你就得到一个在vhost中的shell,这时你可以执行sysinstall工具:

/stand/sysinstall

以下是我一定会配置的内容,建议你配置,当然你也可以自己选择:

配置完成后输入:

exit

退出单用户模式。

1.5. 启动vhost

一切都完成后,只需要在命令行输入:

jail /home/jail/test jail.huangdong.com 192.168.10.60 /bin/sh /etc/rc

这样你就启动了一个真正的vhost,它开启了sshd服务,通过你的ssh2客户端登录上去试试罢。看看五分钟的装机是否成功。

1.6. 如果你的应用程序比较“个性”

** 下列内容可能只能适用于 FreeBSD 5-STABLE 和 6-CURRENT -- delphij

security.jail.allow_raw_sockets: jail 中的进程允许使用 raw socket (例如ping)
security.jail.sysvipc_allowed: jail 中的进程允许 System V 的 IPC 原语,如共享内存等

将上述sysctl设置成1有助于改善jail的兼容性,而其代价则是降低安全性。

1.7. 尾记

jail是一个非常有用的工具,你可以将其使用在多种环境之下,它比简单的chroot强大,因为它可以完成一个主机的功能,比vmware轻巧,因为它的硬盘和内存使用都是真正的共享,而且不消耗CPU。如果你是BSDer哪么一定要试试它,相信会给你带来很多的方便和惊喜。

1.8. stephen.cn补充

1.9. delphij补充

last edited 2005-03-09 07:38:20 by delphij