-- 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

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

  • Console中将Repeat设置为fast
  • User Management中加入系统中的用户(记得要加一个wheel能su成root的用户哟)
  • Time Zone中设置正确的时区
  • Networking中设置inetd为no、Mail为None、并选中sshd(inetd和sshd为必须)
  • Startup中关了quotas

配置完成后输入:

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、FreeBSD5.3不能在/usr/src下直接make world,需要先make buildworld后再make installworld。
  • 2、安装过的world无法直接删除,我用的比较笨的办法,先把jarl所在的分区的内容备份出来,然后umount -f 设备名 newfs 设备名,格式化这个分区后,再mount或者重新启动既可。

1.9. delphij补充

  • 删除jail的方法是:
  • 1. 首先停止jail,并umount掉它所mount的其他东西
  • 2. 然后,rm -fr [jail的目录],chflags -R 0 [jail的目录],rm -fr [jail的目录]