#
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 "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"
+ 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
+ [ "$hdw_arch" = "ia32" ] && echo "lilo" >> ./fai/nfsroot-packages
+fi
if [ ! -f $fairoot/packages_installed ] ; then
echo "creating nfsroot..."
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/misc/sysfiles/etc/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
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"
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"