Home | History | Annotate | Line # | Download | only in chroot-setup
Solaris2 revision 1.1.1.1
      1  1.1  tron #!/bin/sh
      2  1.1  tron 
      3  1.1  tron umask 022
      4  1.1  tron PATH=/usr/bin:/sbin:/usr/sbin
      5  1.1  tron 
      6  1.1  tron # Create chroot'd area under Solaris 2.5.1 for postfix.
      7  1.1  tron #
      8  1.1  tron # Dug Song <dugsong (at] UMICH.EDU>
      9  1.1  tron 
     10  1.1  tron if [ $# -ne 1 ]; then
     11  1.1  tron   echo "Usage: `basename $0` <directory>, e.g.: /var/spool/postfix" ; exit 1
     12  1.1  tron fi
     13  1.1  tron 
     14  1.1  tron CHROOT=$1
     15  1.1  tron   
     16  1.1  tron # If CHROOT does not exist but parent does, create CHROOT
     17  1.1  tron if [ ! -d ${CHROOT} ]; then
     18  1.1  tron   # lack of -p below is intentional
     19  1.1  tron   mkdir ${CHROOT}
     20  1.1  tron fi
     21  1.1  tron if [ ! -d ${CHROOT} -o "${CHROOT}" = "/" -o "${CHROOT}" = "/usr" ]; then
     22  1.1  tron   echo "$0: bad chroot directory ${CHROOT}"
     23  1.1  tron   exit 2
     24  1.1  tron fi
     25  1.1  tron for dir in etc/default etc/inet dev usr/lib usr/share/lib/zoneinfo ; do
     26  1.1  tron   if [ ! -d ${CHROOT}/${dir} ]; then mkdir -p ${CHROOT}/${dir} ; fi
     27  1.1  tron done
     28  1.1  tron #chmod -R 755 ${CHROOT}
     29  1.1  tron 
     30  1.1  tron # AFS support.
     31  1.1  tron if [ "`echo $CHROOT | cut -c1-4`" = "/afs" ]; then
     32  1.1  tron   echo '\tCreating memory resident /dev...'
     33  1.1  tron   mount -F tmpfs -o size=10 swap ${CHROOT}/dev
     34  1.1  tron fi
     35  1.1  tron 
     36  1.1  tron # Setup /etc files.
     37  1.1  tron cp /etc/nsswitch.conf ${CHROOT}/etc
     38  1.1  tron cp /etc/netconfig /etc/resolv.conf ${CHROOT}/etc
     39  1.1  tron cp /etc/default/init ${CHROOT}/etc/default
     40  1.1  tron cp /etc/inet/services ${CHROOT}/etc/inet/services
     41  1.1  tron ln -s /etc/inet/services ${CHROOT}/etc/services
     42  1.1  tron find ${CHROOT}/etc -type f -exec chmod 444 {} \;
     43  1.1  tron 
     44  1.1  tron # Most of the following are needed for basic operation, except
     45  1.1  tron # for libnsl.so, nss_nis.so, libsocket.so, and straddr.so which are
     46  1.1  tron # needed to resolve NIS names.
     47  1.1  tron cp /usr/lib/ld.so /usr/lib/ld.so.1 ${CHROOT}/usr/lib
     48  1.1  tron for lib in libc libdl libintl libmp libnsl libsocket libw \
     49  1.1  tron     nss_nis nss_nisplus nss_dns nss_files; do
     50  1.1  tron   cp /usr/lib/${lib}.so.1 ${CHROOT}/usr/lib
     51  1.1  tron   rm -f ${CHROOT}/usr/lib/${lib}.so
     52  1.1  tron   ln -s ./${lib}.so.1 ${CHROOT}/usr/lib/${lib}.so
     53  1.1  tron done
     54  1.1  tron cp /usr/lib/straddr.so.2 ${CHROOT}/usr/lib
     55  1.1  tron rm -f ${CHROOT}/usr/lib/straddr.so
     56  1.1  tron ln -s ./straddr.so.2 ${CHROOT}/usr/lib/straddr.so
     57  1.1  tron chmod 555 ${CHROOT}/usr/lib/*
     58  1.1  tron 
     59  1.1  tron # Copy timezone database.
     60  1.1  tron (cd ${CHROOT}/usr/share/lib/zoneinfo
     61  1.1  tron   (cd /usr/share/lib/zoneinfo; find . -print | cpio -o) | cpio -imdu
     62  1.1  tron   find . -print | xargs chmod 555
     63  1.1  tron )
     64  1.1  tron 
     65  1.1  tron # Make device nodes. We need ticotsord, ticlts and udp to resolve NIS names.
     66  1.1  tron for device in zero tcp udp ticotsord ticlts; do
     67  1.1  tron   line=`ls -lL /dev/${device} | sed -e 's/,//'`
     68  1.1  tron   major=`echo $line | awk '{print $5}'`
     69  1.1  tron   minor=`echo $line | awk '{print $6}'`
     70  1.1  tron   rm -f ${CHROOT}/dev/${device}
     71  1.1  tron   mknod ${CHROOT}/dev/${device} c ${major} ${minor}
     72  1.1  tron done
     73  1.1  tron chmod 666 ${CHROOT}/dev/*
     74  1.1  tron 
     75  1.1  tron exit 0
     76