3 # author: hackbard@hackdaworld.dyndns.org
5 # automated install rc_fai.sh script
10 myip="`ifconfig eth0 | grep inet\ addr | awk '{ print $2 }' | awk -F: '{ print $2 }'`"
13 if [ ! -d $myconf ] ; then
14 echo "no config found, aborting fai"
23 # we need writeable /tmp
25 mount -tramfs ramfs /tmp
28 # check if disk is ready
30 if [ ! -f $myconf/disk_ready ] ; then
32 echo "you're disk seems to not be ready. login now and use cfdisk"
33 echo "to partition your harddisk. please make sure it's compatible"
34 echo "to $myconf/disk:"
37 echo "after partitioning your harddisk please touch the file"
38 echo "$myconf/disk_ready"
39 echo "on your fai install server and reboot."
40 echo "... fully automated, he? :p"
49 disk=`grep '#\ disk' $myconf/disk | awk '{ print $3 }'`
50 if [ ! -b $disk ] ; then
51 echo "disk $disk not found, aborting fai"
55 swap=`grep '#\ swap' $myconf/disk | awk '{ print $3 }'`
56 if [ "$swap" != "0" -a -b ${disk}${swap} ] ; then
57 echo "creating swap device ..."
61 cat $myconf/disk | grep -v '^#' | while read nr mp fs ac; do
62 if [ -b ${disk}${nr} ] ; then
64 [ "$fs" = "ext3" ] && action="mke2fs -j"
65 [ "$fs" = "ext2" ] && action="mke2fs"
66 if [ "$ac" = "format" -a -n "$action" ] ; then
67 echo "making filesystem for $mp"
70 if [ "$mp" = "/" ] ; then
71 echo "mounting root partition"
72 mount ${disk}${nr} $root
74 grep -v '/dev/root' /etc/fstab > $root/etc/fstab
75 echo -e "${disk}${nr}\t$mp\t$fs\tdefaults 0 2" >> \
80 cat $myconf/disk | grep -v '^#' | while read nr mp fs ac; do
81 if [ "$mp" != "/" ] ; then
82 if [ -b ${disk}${nr} ] ; then
84 mount ${disk}${nr} $root/$mp
85 echo -e "${disk}${nr}\t$mp\t$fs\tdefaults 0 2" >> \
90 # packages might install new fstab file, stored.
91 cp $root/etc/fstab $root/etc/fstab~
96 cd /tmp # we need to wget stuff!
98 [ -f $myconf/packages ] && pkglist=$myconf/packages
99 if [ -z "$pkglist" ] ; then
100 echo "cant find package list for $myip, aborting"
103 hdw-get dist-install $root $pkglist
108 cp $root/etc/fstab~ $root/etc/fstab
109 cp /etc/hdw-get.conf $root/etc
112 for file in `find -type f | grep -v CVS`; do
113 srcf=`basename $file`
115 [ "$srcf" = "DEFAULT" -o "$srcf" = "$myip" ] && cp -v $file $root/$trgf
119 # essential device file
121 [ ! -c $root/dev/null ] && mknod -m 0666 $root/dev/null c 1 3
122 [ ! -c $root/dev/console ] && mknod -m 0600 $root/dev/console c 5 1
128 proot=${disk}`grep /[^a-z,^A-Z] $myconf/disk | awk '{ print $1 }'`
129 echo "running lilo -> root device = $proot"
130 cat > $root/etc/lilo.conf << EOF
138 image=/boot/vmlinuz_hdw
145 cat > $root/run_lilo.sh << EOF
149 mkdir -p /dev/shm && mount /dev/shm
150 mkdir -p /dev/pts && mount /dev/pts
152 ln -s /proc/self/fd /dev/fd
153 ln -s /proc/self/fd/0 /dev/stdin
154 ln -s /proc/self/fd/1 /dev/stdout
155 ln -s /proc/self/fd/2 /dev/stderr
156 ln -s /proc/kcore /dev/core
159 chmod 755 $root/run_lilo.sh
160 chroot $root /usr/bin/env PATH="/bin:/usr/bin:/sbin:/usr/sbin" /bin/bash \
161 --login +h /run_lilo.sh
164 echo "fai finished, good luck for reboot ... :)"
167 touch /tmp/fai_finished