X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=scripts%2FCreate-FAI;h=046b1d3e80d278f7c991fea5fc24a12e171bc3f0;hb=6e75bb527068d620fe1811b09bb09e76ab29e856;hp=cc3e6e6b71c5d64181d8fd1203600bf6c556a126;hpb=5ec575d2b0a8b430079f5dd375565fd99876db19;p=hdw-linux%2Fhdw-linux.git diff --git a/scripts/Create-FAI b/scripts/Create-FAI index cc3e6e6..046b1d3 100755 --- a/scripts/Create-FAI +++ b/scripts/Create-FAI @@ -6,17 +6,110 @@ # fairoot="$1" +myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`" +home_dir=$PWD usage() { echo echo "usage:" - echo "$1 " + echo "$0 " echo exit } -if [ ! -d $fairoot -o ] ; then - usage +[ "$#" != "1" ] && usage +[ ! -d $fairoot ] && usage + +echo "reading config ..." +if [ ! -f ./Config ] ; then + echo "config file not found, aborting" + exit +fi +. ./Config + +if [ ! -f ./fai/nfsroot-packages ] ; then + echo "storing $hdw_target as original target" + hdw_orig_target=$hdw_target + + echo "pretending default target for nfsroot install now" + export hdw_target=default + + ./scripts/Helper -create_dist_files + + export hdw_target=$hdw_orig_target + echo "orig target restored to $hdw_target" + + cp ./distro/default ./fai/nfsroot-packages fi -echo "preparing +echo "deleting some packages from list now" +del="linux-libc-headers man-pages binutils gcc m4 autoconf automake" +del="$del man make patch bin86 nasm lilo cvs" +del="$del bootdisk" # just by now - may contain kernel image later +for package in $del; do + grep -v ^$package ./fai/nfsroot-packages > ./fai/tmp~ + mv ./fai/tmp~ ./fai/nfsroot-packages +done + +if [ ! -f $fairoot/packages_installed ] ; then + echo "creating nfsroot..." + chmod 755 ./misc/hdw-tools/hdw-get + ./misc/hdw-tools/hdw-get dist-install $fairoot ./fai/nfsroot-packages + touch $fairoot/packages_installed + echo "done" +else + echo "nfsroot seems to be available already" + echo "(del $fairoot/packages_installed to recreate it)" +fi + +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 +cp $fairoot/boot/vmlinuz_hdw /tftpboot +if [ ! -f /tftpboot/pxelinux.0 ] ; then + if [ ! -f /usr/lib/syslinux/pxelinux.0 ] ; then + echo "pxelinux (syslinux) not found, fix this manually now :p" + fi + cp /usr/lib/syslinux/pxelinux.0 /tftpboot +fi +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 ip=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 -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 "2) link the ipaddr in hex of the client to fai in pxe config dir" +echo "3) tell your dhcpd (see syslinux docs for more help)" +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 + +echo "done"