X-Git-Url: https://hackdaworld.org/gitweb/?p=hdw-linux%2Fhdw-linux.git;a=blobdiff_plain;f=scripts%2FCreate-FAI;h=b013db46e54d9e952b2aa289b43727e2e1b259e4;hp=046b1d3e80d278f7c991fea5fc24a12e171bc3f0;hb=4dfe4bc90c6670e31d52449b3294467e879eda28;hpb=6e75bb527068d620fe1811b09bb09e76ab29e856 diff --git a/scripts/Create-FAI b/scripts/Create-FAI index 046b1d3..b013db4 100755 --- a/scripts/Create-FAI +++ b/scripts/Create-FAI @@ -5,19 +5,32 @@ # script creating a minimal system nfsroot for automated installation of hdw # -fairoot="$1" -myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`" home_dir=$PWD +fairoot="$1" +iface="eth0" + +[ "$2" ] && iface="$2" + +myip="`ifconfig $iface | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`" + +if [ -z $myip ] ; then + echo "unable to figure out your ip addr." + echo "pls specify the network interface." + echo + echo "example: $0 $1 br0" + echo + exit +fi usage() { echo echo "usage:" - echo "$0 " + echo "$0 []" echo exit } -[ "$#" != "1" ] && usage +[ "$#" -lt "1" ] && usage [ ! -d $fairoot ] && usage echo "reading config ..." @@ -33,23 +46,30 @@ if [ ! -f ./fai/nfsroot-packages ] ; then echo "pretending default target for nfsroot install now" export hdw_target=default + echo "hdw_target=default # FAI_WAS_HERE" >> Config # dirty! ./scripts/Helper -create_dist_files export hdw_target=$hdw_orig_target + grep -v '# FAI_WAS_HERE' Config > tmp~ + mv tmp~ Config echo "orig target restored to $hdw_target" cp ./distro/default ./fai/nfsroot-packages -fi -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 + 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 devfsd" + 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 + echo "adding needed packages to list now" + echo "portmap" >> ./fai/nfsroot-packages + echo "tcp_wrappers" >> ./fai/nfsroot-packages + [ "$hdw_arch" = "ia32" ] && echo "lilo" >> ./fai/nfsroot-packages +fi if [ ! -f $fairoot/packages_installed ] ; then echo "creating nfsroot..." @@ -65,23 +85,37 @@ 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 + # special files (null & console) + [ ! -c dev/null ] && mknod -m 0666 dev/null c 1 3 + [ ! -c dev/console ] && mknod -m 0600 dev/console c 5 1 + # fstab + cp $home_dir/misc/sysfiles/etc/fstab ./etc + # the target directory mkdir -p ./trg + # dir for mounting fai config + mkdir -p fai + # removing some services 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 + # modified inittab, rc and bootscript + sed "s%| /sbin/btee .*%%g" $home_dir/packages/base/sysvinit/inittab > \ + etc/inittab + cp $home_dir/misc/fai/fai_boot ./etc/init.d/boot + sed "s%^FAI_MOUNT_LINE%mount -tnfs $myip:/$home_dir/fai /fai%" \ + $home_dir/misc/fai/fai_rc > 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 + # modify hdw-get.conf + sed "s%hdw_arch_opt=.*%hdw_arch_opt=$hdw_arch_opt%" etc/hdw-get.conf > \ + tmp~ + mv tmp~ etc/hdw-get.conf + # get to home_dir again cd $home_dir echo "done" touch $fairoot/prepared_nfsroot +else + echo "nfsroot seems to be prepared already" + echo "(del $fairoot/prepared_nfsroot to recreate it)" fi echo "checking pxe/nfs environment ..." @@ -94,11 +128,18 @@ if [ ! -f /tftpboot/pxelinux.0 ] ; then 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 +cat > /tftpboot/pxelinux.cfg/fai << EOF +PROMPT 1 +DEFAULT disk +TIMEOUT 200 + +LABEL fai + KERNEL vmlinuz_hdw + APPEND root=/dev/nfs nfsroot=$myip:$fairoot ip=dhcp + +LABEL disk + LOCALBOOT 0 +EOF echo -e "$fairoot\tfoobar(async,ro,no_root_squash)" >> /etc/exports echo -e "$home_dir/fai\tfoobar(async,ro,no_root_squash)" >> /etc/exports @@ -108,6 +149,7 @@ 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 "6) adapt the hdw-get.conf file in the fai nfsroot tree" echo echo "note: tftp must support tsize option (use e.g. tftp-hpa package)" echo