X-Git-Url: https://hackdaworld.org/gitweb/?p=hdw-linux%2Fhdw-linux.git;a=blobdiff_plain;f=fai%2Fscripts%2Frc_fai.sh;h=192c63f6de6ee9fdf7e217c4bad4e83778ab54a5;hp=e297052933b535522d46360d01ee3dbd11eee072;hb=b827aab00491c32a3fc9f8debaad6995d5391d83;hpb=6e75bb527068d620fe1811b09bb09e76ab29e856 diff --git a/fai/scripts/rc_fai.sh b/fai/scripts/rc_fai.sh index e297052..192c63f 100755 --- a/fai/scripts/rc_fai.sh +++ b/fai/scripts/rc_fai.sh @@ -9,12 +9,43 @@ root=/trg croot=/fai/config myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`" myconf=$croot/$myip +proot="" if [ ! -d $myconf ] ; then echo "no config found, aborting fai" exit fi +echo "debug:" +route +ifconfig + +# +# we need writeable /tmp +# +mount -tramfs ramfs /tmp + +# +# check if disk is ready +# +if [ ! -f $croot/$myip/disk_ready ] ; then + echo + echo "you're disk seems to not be ready. login now and use cfdisk" + echo "to partition your harddisk. please make sure it's compatible" + echo "to $croot/$myip/disk:" + cat $croot/$myip/disk + echo + echo "after partitioning your harddisk please touch the file" + echo "$croot/$myip/disk_ready" + echo "on your fai install server and reboot." + echo "... fully automated, he? :p" + echo + exit +fi + +# +# disk +# disk=0 disk=`grep '#\ disk' $myconf/disk | awk '{ print $3 }'` if [ ! -b $disk ] ; then @@ -28,27 +59,110 @@ if [ "$swap" != "0" -a -b ${disk}${swap} ] ; then mkswap ${disk}${swap} echo "done" fi - -cat $myconf/disk | grep -v '^#' | while read nr mp; do +cat $myconf/disk | grep -v '^#' | while read nr mp fs ac; do if [ -b ${disk}${nr} ] ; then - echo "making filesystem for $mp" - mke2fs -j ${disk}${nr} + action="" + [ "$fs" = "ext3" ] && action="mke2fs -j" + [ "$fs" = "ext2" ] && action="mke2fs" + if [ "$ac" = "format" -a -n "$action" ] ; then + echo "making filesystem for $mp" + $action ${disk}${nr} + fi if [ "$mp" = "/" ] ; then echo "mounting root partition" mount ${disk}${nr} $root + mkdir -p $root/etc + grep -v '/dev/root' /etc/fstab > $root/etc/fstab + echo -e "${disk}${nr}\t$mp\t$fs\tdefaults 0 2" >> \ + $root/etc/fstab + proot=${disk}${nr} fi fi done - -cat $myconf/disk | grep -v '^#' | while read nr mp; do +cat $myconf/disk | grep -v '^#' | while read nr mp fs ac; do if [ "$mp" != "/" ] ; then if [ -b ${disk}${nr} ] ; then mkdir -p $root/$mp mount ${disk}${nr} $root/$mp + echo -e "${disk}${nr}\t$mp\t$fs\tdefaults 0 2" >> \ + $root/etc/fstab fi fi done +# packages might install new fstab file, stored. +cp $root/etc/fstab $root/etc/fstab~ + +# +# install packages +# +cd /tmp # we need to wget stuff! +pkglist="" +[ -f /fai/config/$myip/packages ] && pkglist=/fai/config/$myip/packages +if [ -z "$pkglist" ] ; then + echo "cant find package list for $myip, aborting" + exit +fi +hdw-get dist-install $root $pkglist + +# +# config / files +# +cp $root/etc/fstab~ $root/etc/fstab +cp /etc/hdw-get.conf $root/etc +# files +cd /fai/files +for file in `find -type f | grep -v CVS`; do + srcf=`basename $file` + trgf=`dirname $file` + [ "$srcf" = "DEFAULT" -o "$srcf" = "$myip" ] && cp -v $file $root/$trgf +done + +# +# essential device file +# +[ ! -c $root/dev/null ] && mknod -m 0666 $root/dev/null c 1 3 +[ ! -c $root/dev/console ] && mknod -m 0600 $root/dev/console c 5 1 + + +# +# lilo +# +cat > $root/etc/lilo.conf << EOF +boot=$disk +prompt +lba32 +timeout=30 + +default=vmlinuz_hdw + +image=/boot/vmlinuz_hdw + label=vmlinuz_hdw + append="root=$proot" + read-only + +EOF +# run lilo in chroot +cat > $root/run_lilo.sh << EOF +mount /dev +mount /sys +mount /proc +udevstart +mount -a +ln -s /proc/self/fd /dev/fd +ln -s /proc/self/fd/0 /dev/stdin +ln -s /proc/self/fd/1 /dev/stdout +ln -s /proc/self/fd/2 /dev/stderr +ln -s /proc/kcore /dev/core +lilo +EOF +chmod 755 $root/run_lilo.sh +chroot $root /usr/bin/env PATH="/bin:/usr/bin:/sbin:/usr/sbin" /bin/bash \ + --login +h /run_lilo.sh + +echo +echo "fai finished, good luck for reboot ... :)" +echo -echo "to be continued ...." +touch /tmp/fai_finished exit 0