chroot命令格式
chroot <new root path> <command> <command args>
(1)建立chroot目录
mkdir /usr/local/chroot1
cd /usr/local/chroot1
以下所有的路径是相对于/usr/local/chroot1
(2)建立相关文件夹,并赋于权限
mkdir -p lib etc tmp dev usr
chmod 755 etc dev usr
chmod 1777 tmp
(3)复制jdk到相应目录
mkdir usr/jdk
cp -R /usr/local/jdk1.6.0_10/ usr/jdk/
(4)以下添加jvm需要的lib
# jvm need lib
ldd /usr/local/jdk1.6.0_10/bin/java
cp /lib/tls/libpthread.so.0 lib/tls
cp /lib/libdl.so.2 lib
cp /lib/tls/libc.so.6 lib/tls
cp /lib/ld-linux.so.2 lib
cp /lib/libm.so.6 lib
cp /lib/libnsl.so.1 lib
(5)添加dev
# add dev
/dev/MAKEDEV -d /usr/local/chroot1/dev null random urandom zero loop* log console
cp /dev/MAKEDEV /usr/local/chroot1/dev/
cp -R /dev/shm dev/
# mount proc filesystem
mkdir proc
mount -t proc proc /usr/local/chroot1/proc/
(6)复制conf
# copy conf
cp -a /etc/hosts /etc/resolv.conf /etc/nsswitch.conf etc
(7)添加dns需要的lib
# dns need
cp -p /lib/libresolv.so.2 lib/
cp -p /lib/libnss_dns.so.2 lib/
cp -p /lib/libnss_files.so.2 lib/
(8)添加bash shell需要的lib,并添加shell命令
# bash shell
mkdir bin
cp /bin/bash bin/
ln -s /bin/bash bin/sh
cp -p /lib/libtermcap.so.2 lib/
cp -p /lib/libdl.so.2 lib/
cp -p /lib/libc.so.6 lib/
cp -p /lib/ld-linux.so.2 lib/
# add command
cp /bin/uname /usr/local/chroot1/bin/
cp /usr/bin/dirname /usr/local/chroot1/bin/
cp /bin/touch /usr/local/chroot1/bin/
cp /lib/tls/librt.so.1 /usr/local/chroot1/lib/tls
cp /usr/bin/tty /usr/local/chroot1/bin/
(9)在chroot中运行java命令看是否能正确运行
# run chroot
chroot /usr/local/chroot1/ /usr/jdk/jdk1.6.0_10/bin/java -version
strace chroot /usr/local/chroot1/ /usr/jdk/jdk1.6.0_10/bin/java -version
如果不能正确运行,看缺少什么库,添上它
(10)复制tomcat,配置环境,并启动tomcat
cp -R /usr/local/apache-tomcat-5.5.28/ .
# add JAVA_HOME CATALINA_HOME to catalina.sh
export JAVA_HOME="/usr/jdk/jdk1.6.0_10/"
export CATALINA_HOME="/usr/apache-tomcat-5.5.28"
# start tomcat
chroot /usr/local/chroot1/ /usr/apache-tomcat-5.5.28/bin/catalina.sh start