# Cleanup and make necessary directories
-rm -rf $R/sbin
+rm -rf $R/sbin $R/bin
+mkdir -p $R/cdrom
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/proc $R/root $R/sbin $R/tmp $R/var $R/usr
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
cd $R
ln -sf sbin bin
+cd usr
+ln -sf ../sbin sbin
cd $TOPDIR
#
exit 1
fi
cat rootsbin.list >${TMPFILE}
+# Try to find the shell program for root
command=`grep ^root: /etc/passwd | cut -d ':' -f 7`
command=`basename $command`
if [ x$command != "xbash" ] ; then
fullfile=`which $command 2> /dev/null`
if [ x$fullfile != x ] ; then
# echo "updating $command in roottree with $fullfile"
- cp -fpd $fullfile $file
+ cp -fp $fullfile $file
if [ $? != 0 ] ; then
echo "Update failed."
exit 1
cp -fp /lib/ld-linux.so.* roottree/lib/
strip `find roottree/lib/ -maxdepth 1 -type f` 2>/dev/null
-# Grab grub crap
-if [ -e /usr/share/grub ] ; then
+# Grab grub RedHat
+if [ -d /usr/share/grub ] ; then
mkdir -p roottree/usr/share/grub
- cp -fpr /usr/share/grub/* roottree/usr/share/grub
-elif [ -e /lib/grub ] ; then
+ cp -fpR /usr/share/grub/* roottree/usr/share/grub
+elif [ -d /lib/grub ] ; then
mkdir -p roottree/lib/grub
- cp -fpr /lib/grub/* roottree/lib/grub
+ cp -fpR /lib/grub/* roottree/lib/grub
+elif [ -d /usr/lib/grub ] ; then
+ mkdir -p roottree/usr/lib/grub
+ cp -fpR /usr/lib/grub* roottree/usr/lib/grub
else
echo "======= Warning could not find grub scripts ========"
fi
+if [ -d /lib/udev ] ; then
+ rm -rf $R/lib/udev
+ cp -fpR /lib/udev $R/lib/
+fi
+
#
# Get a bunch of stuff from /etc
#
echo "Building /etc ..."
+# SuSE 10.1
+if [ -f /etc/rc.status ]; then
+ cp -fp /etc/rc.status $R/etc/
+fi
+# copy the whole sysconfig directory
+if [ -d /etc/sysconfig ]; then
+ rm -rf $R/etc/sysconfig
+ cp -fpR /etc/sysconfig/ $R/etc/
+fi
+# comment out HWADDR in any ifcfg-eth* file, otherwise ifconfig won't start
+for i in `ls $R/etc/sysconfig/network*/ifcfg-eth*`
+do
+ grep ^HWADDR $i >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ sed -e 's/HWADDR/#HWADDR/' < $i > /tmp/temp.$$
+ mv -f /tmp/temp.$$ $i
+ fi
+done
+
+if [ -d /etc/syslog-ng ] ; then
+ cp -fpR /etc/syslog-ng/ $R/etc/
+fi
+
cp -p /etc/services roottree/etc/
if [ $? != 0 ] ; then
echo "Update failed."
fi
for file in `cat rootetc.list` ; do
- if [ -e $file ] ; then
+ if [ -f $file ] ; then
cp -fp $file roottree/etc/
else
echo "==== Could not find $file in /etc ===="
fi
done
-if [ -e /etc/modules.conf ] ; then
+
+# RedHat has a non-standard rc.d/init.d layout
+if [ -d /etc/rc.d/init.d ]; then
+ cp -a /etc/rc.d/ $R/etc/
+ (cd $R/etc; ln -sf rc.d init.d)
+ rcdtarget=$R/etc/rc.d
+elif [ -d /etc/init.d ]; then
+ cp -a /etc/init.d/ $R/etc/
+ (cd $R/etc; ln -sf init.d rc.d)
+ rcdtarget=$R/etc/init.d
+fi
+cp -f $R/etc/rc ${rcdtarget}/
+cp -a ${MKCDREC_DIR}/etc/rc.d/* ${rcdtarget}
+cat /dev/null > $R/etc/rc.d/rc.inits
+chmod +x $R/etc/rc.d/rc.inits
+touch $R/etc/rc.d/rc.local
+
+if [ -f /etc/modules.conf ] ; then
cp -fp /etc/modules.conf roottree/etc/
fi
-if [ -e /etc/modprobe.conf ] ; then
+if [ -f /etc/modprobe.conf ] ; then
cp -fp /etc/modprobe.conf roottree/etc/
fi
+if [ -f /etc/modprobe.conf.local ] ; then
+ cp -fp /etc/modprobe.conf.local roottree/etc/
+fi
+if [ -d /etc/modprobe.d ] ; then
+ cp -a /etc/modprobe.d roottree/etc/
+fi
+
rm -rf roottree/etc/pam.d
-if [ -e /etc/pam.d ] ; then
+if [ -d /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/
+if [ -d /etc/hotplug ] ; then
+ cp -a /etc/hotplug $R/etc
+fi
+if [ -d /etc/hotplug.d ] ; then
+ cp -a /etc/hotplug.d $R/etc
fi
+if [ -d /etc/udev ]; then
+ cp -a /etc/udev $R/etc
+fi
+if [ -d /etc/dev.d ]; then
+ cp -a /etc/dev.d $R/etc
+fi
+
-if [ -e /etc/udev ] ; then
- rm -rf roottree/etc/udev
- cp -aL /etc/udev roottree/etc/
+if [ -f /etc/rc.status ] ; then
+ cp -fp /etc/rc.status roottree/etc/
fi