X-Git-Url: https://hackdaworld.org/gitweb/?p=hdw-linux%2Fhdw-linux.git;a=blobdiff_plain;f=scripts%2FCreate-FAI;h=b013db46e54d9e952b2aa289b43727e2e1b259e4;hp=1b3366e816153405ef1b65514fc11784d09c3944;hb=4dfe4bc90c6670e31d52449b3294467e879eda28;hpb=279a8b0643080f522eb4b0eb515229f21159ea2f diff --git a/scripts/Create-FAI b/scripts/Create-FAI index 1b3366e..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 $3 }' | 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 ..." @@ -27,34 +40,36 @@ if [ ! -f ./Config ] ; then 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 "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..." @@ -67,24 +82,41 @@ else 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 + # 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 + # 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 + # 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 ..." mkdir -p /tftpboot @@ -96,17 +128,20 @@ 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 \\" >> \ - /tftpboot/pxelinux.cfg/fai -echo -e "\tip=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 "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" @@ -114,8 +149,9 @@ 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 "note: tftp must support tsize option (use e.g. tftp-hpa package)" echo echo "done"