+#!/bin/sh
+
+# this script finds all binaries and updates them with the ones
+# from your system, in order to maintain them more easily.
+# Be careful. If you have specially made binaries (perhaps lean ones),
+# they will be overwritten.
+
+TOPDIR=`pwd`
+R=roottree
+PATH="/sbin:/bin:/usr/sbin:/usr/bin:$PATH"
+
+
+# Cleanup and make necessary directories
+rm -rf $R/sbin
+mkdir -p $R/etc $R/initrd $R/lib $R/mnt $R/mnt/cdrom
+mkdir -p $R/proc $R/root $R/sbin $R/tmp $R/var
+mkdir -p $R/dev $R/sys $R/initrd $R/sysroot
+mkdir -p $R/etc/terminfo $R/etc/terminfo/l
+mkdir -p $R/var/lib $R/var/log $R/var/run $R/var/state
+mkdir -p $R/var/lib/nfs
+mkdir -p $R/var/log/news
+touch $R/var/log/news/news.crit $R/var/log/news/news.err $R/var/log/news.notice
+
+cd $R
+ln -sf sbin bin
+cd $TOPDIR
+
+#
+# Some users have a different shell for root, so be
+# sure to add it to the rootsbin list. Note, the shell may
+# be copied twice, but it is not worth the effort to run uniq
+# here.
+#
+TMPFILE=`mktemp -t bin.XXXXXXXXXX`
+if [ $? != 0 ]; then
+ echo "Could not make temp file"
+ exit 1
+fi
+cat rootsbin.list >${TMPFILE}
+command=`grep ^root: /etc/passwd | cut -d ':' -f 7`
+command=`basename $command`
+if [ x$command != "xbash" ] ; then
+ echo "roottree/sbin/$command" >>${TMPFILE}
+fi
+
+echo "Building root /sbin. Some Could not find messages are normal ..."
+for file in `cat ${TMPFILE}` ; do
+ command=`basename $file`
+ fullfile=`which $command 2> /dev/null`
+ if [ x$fullfile != x ] ; then
+# echo "updating $command in roottree with $fullfile"
+ cp -fpd $fullfile $file
+ if [ $? != 0 ] ; then
+ echo "Update failed."
+ exit 1
+ fi
+ strip $file 2>/dev/null
+ else
+ echo "==== Could not find $command on your system ===="
+ rm -f $file
+ fi
+done
+rm -f ${TMPFILE}
+
+cd roottree/sbin
+ln -sf halt reboot
+# Eliminate recursive link
+rm -f sbin
+cd $TOPDIR
+
+# Copy all needed shared libraries
+echo "Building root shared libaries ..."
+rm -f `find roottree/lib/ -maxdepth 1 -type f 2>/dev/null`
+#
+# Statically linked binaries create an error
+# message from ldd, so we ignore those
+#
+for lib in `find roottree/sbin/ -type f -exec ldd {} \; | awk '{print $3}' | sort | uniq` ; do
+ if [ -e $lib ] ; then
+ cp -fp $lib roottree/lib/
+ if [ $? != 0 ] ; then
+ echo "Update failed."
+ exit 1
+ fi
+ fi
+done
+#
+# Wouldn't you know, there is one so that is critical to have or
+# nothing will load on 2.6 kernels.
+#
+cp -fp /lib/ld-linux.so.* roottree/lib/
+strip `find roottree/lib/ -maxdepth 1 -type f` 2>/dev/null
+
+# Grub crap
+mkdir -p roottree/usr/share/grub
+cp -fpr /usr/share/grub/* roottree/usr/share/grub
+
+#
+# Get a bunch of stuff from /etc
+#
+echo "Building /etc ..."
+cp -p /etc/services roottree/etc/
+if [ $? != 0 ] ; then
+ echo "Update failed."
+ exit 1
+fi
+
+for file in `cat rootetc.list` ; do
+ if [ -e $file ] ; then
+ cp -fp $file roottree/etc/
+ else
+ echo "==== Could not find $file in /etc ===="
+ fi
+done
+if [ -e /etc/modules.conf ] ; then
+ cp -fp /etc/modules.conf roottree/etc/
+fi
+if [ -e /etc/modprobe.conf ] ; then
+ cp -fp /etc/modprobe.conf roottree/etc/
+fi
+rm -rf roottree/etc/pam.d
+if [ -e /etc/pam.d ] ; then
+ cp -a /etc/pam.d roottree/etc/
+ if [ -e /etc/pam.conf ] ; then
+ cp -fp /etc/pam.conf roottree/etc/
+ fi
+fi
+
+if [ -e /etc/init.d ] ; then
+ rm -rf roottree/etc/init.d
+ cp -aL /etc/init.d roottree/etc/
+fi
+
+if [ -e /etc/udev ] ; then
+ rm -rf roottree/etc/udev
+ cp -aL /etc/udev roottree/etc/
+fi
+
+
+if [ -e /etc/ssh ] ; then
+ cp -a /etc/ssh roottree/etc/
+ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+ echo "!!!! !!!!"
+ echo "!!!! Warning your /etc/ssh directory was copied. !!!!"
+ echo "!!!! Keep this directory and the CDROM secure. !!!!"
+ echo "!!!! !!!!"
+ echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+fi
+if [ -e /etc/security ] ; then
+ cp -a /etc/security roottree/etc/
+fi
+
+#
+# Pull a few files needed by PAM
+#
+if [ -f /lib/libnss_files.so.1 ] ; then
+ cp -fp /lib/libnss_files.so.1 roottree/lib/
+fi
+cp -fp /lib/libnss_files.so.* roottree/lib/
+cp -a /lib/security roottree/lib/