--- /dev/null
+#!/bin/bash
+#
+# author: hackbard@hackdaworld.dyndns.org
+#
+# automated install rc_fai.sh script
+#
+
+root=/trg
+croot=/fai/config
+myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`"
+myconf=$croot/$myip
+
+if [ ! -d $myconf ] ; then
+ echo "no config found, aborting fai"
+ exit
+fi
+
+disk=0
+disk=`grep '#\ disk' $myconf/disk | awk '{ print $3 }'`
+if [ ! -b $disk ] ; then
+ echo "disk $disk not found, aborting fai"
+ exit
+fi
+swap=0
+swap=`grep '#\ swap' $myconf/disk | awk '{ print $3 }'`
+if [ "$swap" != "0" -a -b ${disk}${swap} ] ; then
+ echo "creating swap device ..."
+ mkswap ${disk}${swap}
+ echo "done"
+fi
+
+cat $myconf/disk | grep -v '^#' | while read nr mp; do
+ if [ -b ${disk}${nr} ] ; then
+ echo "making filesystem for $mp"
+ mke2fs -j ${disk}${nr}
+ if [ "$mp" = "/" ] ; then
+ echo "mounting root partition"
+ mount ${disk}${nr} $root
+ fi
+ fi
+done
+
+cat $myconf/disk | grep -v '^#' | while read nr mp; do
+ if [ "$mp" != "/" ] ; then
+ if [ -b ${disk}${nr} ] ; then
+ mkdir -p $root/$mp
+ mount ${disk}${nr} $root/$mp
+ fi
+ fi
+done
+
+echo "to be continued ...."
+
+exit 0
#
fairoot="$1"
-myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $3 }' | awk -F: '{ print $2 }'`"
+myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`"
home_dir=$PWD
usage() {
fi
. ./Config
-if [ ! -d ./fai ] ; then
- echo "creating fai directory"
- mkdir ./fai
-fi
-
if [ ! -f ./fai/nfsroot-packages ] ; then
echo "storing $hdw_target as original target"
hdw_orig_target=$hdw_target
echo "(del $fairoot/packages_installed to recreate it)"
fi
-
-echo "preparing nfsroot for automated install routine ..."
-
-cd $fairoot
-
-mknod -m 0666 dev/null c 1 3
-mknod -m 0600 dev/console c 5 1
-
-grep -v swap etc/fstab > tmp~
-mv tmp~ etc/fstab
-
-for i in sysklogd network inetd nscd; do
- rm -f etc/init.d/rc2.d/*${i}
-done
-
-cd $home_dir
-
-echo "done"
+if [ ! -f $fairoot/prepared_nfsroot ] ; then
+ echo "preparing nfsroot for automated install routine ..."
+ cd $fairoot
+ mknod -m 0666 dev/null c 1 3
+ mknod -m 0600 dev/console c 5 1
+ grep -v swap etc/fstab > tmp~
+ mv tmp~ etc/fstab
+ mkdir -p ./trg
+ for i in sysklogd network inetd nscd; do
+ rm -f etc/init.d/rc2.d/*${i}
+ done
+ sed "s%^exit\ 0%mount -tnfs $myip:/$home_dir/fai /fai%" \
+ etc/init.d/rc > tmp~
+ mv tmp~ etc/init.d/rc
+ chmod 755 etc/init.d/rc
+ echo "/fai/scripts/rc_fai.sh" >> etc/init.d/rc
+ echo "shutdown -r now" >> etc/init.d/rc
+ cd $home_dir
+ echo "done"
+ touch $fairoot/prepared_nfsroot
+fi
echo "checking pxe/nfs environment ..."
mkdir -p /tftpboot
mkdir -p /tftpboot/pxelinux.cfg
echo -e "LABEL fai" > /tftpboot/pxelinux.cfg/fai
echo -e "\tKERNEL vmlinuz_hdw" >> /tftpboot/pxelinux.cfg/fai
-echo -e "\tAPPEND root=/dev/nfs nfsroot=$myip:$fairoot \\" >> \
+echo -e "\tAPPEND root=/dev/nfs nfsroot=$myip:$fairoot ip=dhcp" >> \
/tftpboot/pxelinux.cfg/fai
-echo -e "\tip=dhcp" >> /tftpboot/pxelinux.cfg/fai
echo -e "\tPROMPT 1" >> /tftpboot/pxelinux.cfg/fai
echo -e "$fairoot\tfoobar(async,ro,no_root_squash)" >> /etc/exports
-
-echo "mounting configuration dir to nfsroot export ..."
-mkdir -p $fairoot/fai-config
-mount --bind $PWD/fai $fairoot/fai-config
+echo -e "$home_dir/fai\tfoobar(async,ro,no_root_squash)" >> /etc/exports
echo "everything should work now. now do the following:"
echo "1) edit /etc/exports to allow your clients to mount the nfsroot"
echo "4) make sure inetd/nfs/dhcpd are up running"
echo "5) do the configuration stuff (see doc/FAI)"
echo
-echo "note: tftp must support tsize option (use e.g. tftp-hpa package)
+echo "note: tftp must support tsize option (use e.g. tftp-hpa package)"
echo
echo "done"