Chinaunix首页 | 论坛 | 博客
  • 博客访问: 266229
  • 博文数量: 54
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 541
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-27 23:26
文章分类

全部博文(54)

文章存档

2018年(2)

2015年(3)

2014年(6)

2013年(5)

2012年(5)

2011年(7)

2010年(14)

2009年(1)

2008年(3)

2007年(6)

2006年(1)

2005年(1)

我的朋友

分类: BSD

2010-08-06 21:22:44

第一部分 jails的目录结构生成
0、make buildworld
1、创建jails模板 /home/j/mroot
# make installworld DESTDIR=/home/j/mroot
2、准备一份 FreeBSD Ports 套件
# cd /home/j/mroot
# mkdir usr/ports
# portsnap -p /home/j/mroot/usr/ports fetch extract
# cpdup /usr/src /home/j/mroot/usr/src
3、创建jails系统模板的可读写部分的框架,将只读模板mroot中的可读写部分的目录移出到skel
# mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-11R6 /home/j/skel/distfiles
# mv etc /home/j/skel
# mv usr/local /home/j/skel/usr-local
# mv tmp /home/j/skel
# mv var /home/j/skel
# mv root /home/j/skel
4、使用 mergemaster 补齐缺失的配置文件。并删除不属于可读写的部分目录。
# mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
# cd /home/j/skel
# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev
5、在只读的jails框架mroot中设置到skel的软连接。用于在/etc/fstab将每个jails系统的s目录对应到可读写目录区/home/js/xxxx的提供条件。
# cd /home/j/mroot
# mkdir s
# ln -s s/etc etc
# ln -s s/home home
# ln -s s/root root
# ln -s ../s/usr-local usr/local
# ln -s ../s/usr-X11R6 usr/X11R6
# ln -s ../../s/distfiles usr/ports/distfiles
# ln -s s/tmp tmp
# ln -s s/var var
6、创建一个默认的包含下列配置的 /home/j/skel/etc/make.conf
WRKDIRPREFIX?=  /s/portbuild
配置 WRKDIRPREFIX 使得在每个 jail 中分别编译 FreeBSD 成为可能。 请注意 ports 目录是只读系统的一部分。 而自订的 WRKDIRPREFIX 则使得联编过程得以在 jail 中的可读写部分完成。
 
第二部分 配置jails
I、配置/etc/rc.conf
rc.conf
ifconfig_em1="inet 192.168.1.9  netmask 255.255.255.240"
ifconfig_em1_alias0="inet 192.168.1.2 netmask 255.255.255.240"
ifconfig_em1_alias1="inet 192.168.1.3 netmask 255.255.255.240"
ifconfig_em1_alias2="inet 192.168.1.3 netmask 255.255.255.240"
ifconfig_em1_alias3="inet 192.168.1.4 netmask 255.255.255.240"
 
defaultrouter="192.168.1.1"
hostname="fb.local"
 
jail_enable="YES"
jail_set_hostname_allow="NO"
jail_list="www mail dns ftp"
 
jail_www_hostname=""
jail_www_ip="192.168.1.2"
jail_www_rootdir="/usr/home/j/www"
jail_www_devfs_enable="YES"
 
jail_mail_hostname="mail.local"
jail_mail_ip="192.168.1.3"
jail_mail_rootdir="/usr/home/j/mail"
jail_mail_devfs_enable="YES"
 
jail_dns_hostname="dns.local"
jail_dns_ip="192.168.1.4"
jail_dns_rootdir="/usr/home/j/dns"
jail_dns_devfs_enable="YES"
 
jail_ftp_hostname=""
jail_ftp_ip="192.168.1.5"
jail_ftp_rootdir="/usr/home/j/ftp"
jail_ftp_devfs="YES"
II、处理一下jails目录中的master.passwd,(这一步看来是必需的,不操作的后果就是找不到root文件和目录)
pwd_mkdb -p -d /home/j/skel/etc /home/j/skel/etc/master.passwd
III、复制 jail的可读写框架模板到已知jail。 注意您需要使用 , 它能够帮助您确保每个目录都是正确地复制的:
# mkdir /home/js
# cpdup /home/j/skel /home/js/dns
# cpdup /home/j/skel /home/js/mail
# cpdup /home/j/skel /home/js/www
IV、配置/etc/fstab,(至关重要的一部,这也是第一部分精巧的目录结构设计的最后实现环节,没有它,jails是不会正常运转的。)
/etc/fstab
/home/j/mroot           /home/j/www     nullfs  ro              0       0
/home/j/mroot           /home/j/mail    nullfs  ro              0       0
/home/j/mroot           /home/j/dns     nullfs  ro              0       0
/home/j/mroot           /home/j/ftp     nullfs  ro              0       0
/home/js/www            /home/j/www/s   nullfs  rw              0       0
/home/js/mail           /home/j/mail/s  nullfs  rw              0       0
/home/js/dns            /home/j/dns/s   nullfs  rw              0       0
/home/js/ftp            /home/j/ftp/s   nullfs  rw              0       0
V、映射目录
mount -a
VI、启动jails
/etc/rc.d/jail start
 
第三部分 jails的调试
1、jls
   列出已有jails。
2、jexec -u root 1 tcsh
   进入到id号为1的jails中,并启动tcsh shell,可进入内部调试。
 
阅读(3767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~