/[fai]/trunk/scripts/make-fai-nfsroot
ViewVC logotype

Diff of /trunk/scripts/make-fai-nfsroot

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 691 by lange, Fri Jul 13 13:10:03 2001 UTC revision 1161 by lange, Tue Apr 9 12:28:39 2002 UTC
# Line 6  Line 6 
6  # make-fai-nfsroot -- create nfsroot directory and add additional packages  # make-fai-nfsroot -- create nfsroot directory and add additional packages
7  #  #
8  # This script is part of FAI (Fully Automatic Installation)  # This script is part of FAI (Fully Automatic Installation)
9  # (c) 2000-2001 by Thomas Lange, lange@informatik.uni-koeln.de  # (c) 2000-2002 by Thomas Lange, lange@informatik.uni-koeln.de
10  # Universitaet zu Koeln  # Universitaet zu Koeln
11  #  #
12  #*********************************************************************  #*********************************************************************
# Line 27  Line 27 
27  # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28  #*********************************************************************  #*********************************************************************
29    
30  # Packages that are install to nfsroot by default  # Packages that are install to nfsroot by default Additional packages are
31  # Additional packages are defined with $NFSROOT_PACKAGES in fai.conf  # defined with $NFSROOT_PACKAGES in fai.conf
32  packages="dhcp-client file rdate cfengine bootpc wget rsh-client less dump ext2resize strace hdparm parted dnsutils grub ntpdate psmisc"  packages="dhcp-client file rdate cfengine bootpc wget rsh-client less dump
33    ext2resize strace hdparm parted dnsutils grub ntpdate psmisc
34    dosfstools sysutils dialog"
35    # removed from distribution: hwtools
36    
37  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
38    
39  if [ "$UID" -ne 0 ]; then  if [ "$UID" -ne 0 ]; then
40   echo "Run this program as root."      echo "Run this program as root."
41   exit 9      exit 9
42  fi  fi
43    
44  while getopts v opt ; do  while getopts rv opt ; do
45          case "$opt" in      case "$opt" in
46          v) verbose=1 ;;          v) verbose=1 ;;
47          esac          r) recover=1 ;;
48        esac
49  done  done
50    
51  set -e  set -e
52  . /etc/fai.conf  . /etc/fai/fai.conf
53  packages="$packages $NFSROOT_PACKAGES"  
54  ROOTCMD="chroot $NFSROOT"  ROOTCMD="chroot $NFSROOT"
55    
56    RUNDIR=/var/run/fai/make-nfs-root
57    [ ! -d $RUNDIR ] && mkdir -p $RUNDIR
58    [ ! "$recover" ] && rm -rf $RUNDIR/*
59    
60  LIBFAI=/usr/lib/fai  LIBFAI=/usr/lib/fai
61    SHAREFAI=/usr/share/fai
62  conffile=$NFSROOT/etc/rcS_fai.conf  conffile=$NFSROOT/etc/rcS_fai.conf
63  export DEBIAN_FRONTEND=Noninteractive  export DEBIAN_FRONTEND=noninteractive
   
 if [ "$verbose" ]; then  
         devnull=/dev/tty  
 else  
         devnull=/dev/null  
 fi  
64    
65  trap "umount_dirs" EXIT  trap "umount_dirs" EXIT
66  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
67  die() {  die() {
68    
69      echo $*      echo "$@"
70      exit 99      exit 99
71  }  }
72  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
73    call_with_stamp() {
74    
75        local func=$1
76        local stamp=$RUNDIR/$func
77        # call subroutine
78        [ "$recover" -a -f $stamp ] && return 0
79        "$@"
80        > $stamp
81    }
82    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
83    call_verbose() {
84    
85        if [ "$verbose" ]; then
86            "$@"
87        else
88            "$@" > /dev/null
89        fi
90    }
91    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
92  install_kernel_nfsroot() {  install_kernel_nfsroot() {
93    
94      rm -rf $NFSROOT/boot/*-$KERNELVERSION $NFSROOT/lib/modules/$KERNELVERSION      rm -rf $NFSROOT/boot/*-$KERNELVERSION $NFSROOT/lib/modules/$KERNELVERSION
95        # since woody we can install the kernel using dpkg -i
96        echo "do_boot_enable=no" > $NFSROOT/etc/kernel-img.conf
97      dpkg -x $KERNELPACKAGE $NFSROOT      dpkg -x $KERNELPACKAGE $NFSROOT
98      # if $NFROOT/proc/modules exists, then update-modules calls depmod -a without      # if $NFROOT/proc/modules exists, then update-modules calls depmod -a without
99      # these special flags; so umount first      # these special flags; so umount first
100      umount $NFSROOT/proc      [ -e $NFSROOT/proc/modules ] && umount $NFSROOT/proc
101      chroot $NFSROOT update-modules      chroot $NFSROOT update-modules
102      chroot $NFSROOT depmod -a -F /boot/System.map-$KERNELVERSION $KERNELVERSION      chroot $NFSROOT depmod -a -F /boot/System.map-$KERNELVERSION $KERNELVERSION
103  }  }
# Line 84  setup_ssh() { Line 108  setup_ssh() {
108      [ -f $NFSROOT/var/lib/dpkg/info/ssh.list ] || return 0      [ -f $NFSROOT/var/lib/dpkg/info/ssh.list ] || return 0
109      mkdir -p -m 700 $NFSROOT/root/.ssh      mkdir -p -m 700 $NFSROOT/root/.ssh
110      [ -f /etc/ssh/ssh_known_hosts ] && cp /etc/ssh/ssh_known_hosts $NFSROOT/root/.ssh/known_hosts      [ -f /etc/ssh/ssh_known_hosts ] && cp /etc/ssh/ssh_known_hosts $NFSROOT/root/.ssh/known_hosts
111      loguserhome=`eval "cd ~$LOGUSER 2>/dev/null && pwd;true"`      if [ -n "$LOGUSER" ] ; then
112      [ -d $loguserhome/.ssh ] && cp -p $loguserhome/.ssh/identity* $NFSROOT/root/.ssh/          loguserhome=`eval "cd ~$LOGUSER 2>/dev/null && pwd;true"`
113            [ -d $loguserhome/.ssh ] && cp -p $loguserhome/.ssh/identity* $NFSROOT/root/.ssh/
114        fi
115    
116      # enable root login      # enable root login
117      perl -pi -e 's/PermitRootLogin no/PermitRootLogin yes/' $NFSROOT/etc/ssh/sshd_config      perl -pi -e 's/PermitRootLogin no/PermitRootLogin yes/' $NFSROOT/etc/ssh/sshd_config
118      if [ -f "$SSH_IDENTITY" ]; then      if [ -f "$SSH_IDENTITY" ]; then
119          cp -p $SSH_IDENTITY $NFSROOT/root/.ssh/authorized_keys          cp -p $SSH_IDENTITY $NFSROOT/root/.ssh/authorized_keys
120          echo You can log into install clients without password using $SSH_IDENTITY          echo You can log into install clients without password using $SSH_IDENTITY
121      fi      fi
122  }  }
123  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
124  copy_fai_files() {  copy_fai_files() {
125    
126      # copy to nfsroot      # copy to nfsroot
127      perl -pi -e "s/^root::/root:${FAI_ROOTPW}:/" etc/passwd      perl -pi -e "s#^root::#root:${FAI_ROOTPW}:#" etc/passwd
128      mkdir -p $NFSROOT/fai/fai_config $NFSROOT/usr/share/fai      mkdir -p $NFSROOT/$FAI/fai_config $NFSROOT/$SHAREFAI $NFSROOT/etc/fai
129      cd $NFSROOT      cd $NFSROOT
130      cp -p $LIBFAI/sbin/dhclient-script $LIBFAI/etc/dhclient.conf /etc/fai.conf etc      cp -p $LIBFAI/sbin/dhclient-script $SHAREFAI/etc/dhclient.conf etc/
131      cp -p $LIBFAI/sbin/* sbin      cp -Rp /etc/fai etc/
132      cp -p $LIBFAI/etc/fai_modules_off etc/modutils      [ -f /etc/fai/.cvspass ] && cp -p /etc/fai/.cvspass .cvspass
133        cp -p $LIBFAI/sbin/* sbin/
134      cp -p /usr/share/fai/subroutines usr/share/fai      cp -p $SHAREFAI/etc/fai_modules_off etc/modutils/
135      cp -p $LIBFAI/etc/apt.conf etc/apt  
136      cp -p /usr/lib/perl5/Debian/Fai.pm usr/lib/perl5/Debian/      cp -p $SHAREFAI/subroutines* usr/share/fai
137        cp -p $SHAREFAI/etc/apt.conf etc/apt
138        # potato / woody code
139        if [ -d usr/lib/perl5/Debian ]; then
140            cp -p /usr/lib/perl5/Debian/Fai.pm usr/lib/perl5/Debian/
141        else
142            cp -p /usr/share/perl5/Debian/Fai.pm usr/share/perl5/Debian/
143        fi
144      echo $NFSROOT_ETC_HOSTS >> etc/hosts      echo $NFSROOT_ETC_HOSTS >> etc/hosts
145  }  }
146  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
147  call_debootstrap() {  call_debootstrap() {
148    
149      echo "Creating nfsroot for $1 using debootstrap"      echo "Creating nfsroot for $1 using debootstrap"
150      [ "$verbose" ] && echo "calling debootstrap $1 $NFSROOT $2"      [ "$verbose" ] && echo "calling debootstrap $1 $NFSROOT $2"
151      LC_ALL=C debootstrap $1 $NFSROOT $2 > $devnull 2>&1      yes '' | debootstrap $FAI_DEBOOTSTRAP_OPTS $1 $NFSROOT $2 || true
152  }  }
153  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
154  create_base() {  create_base() {
155    
156      if [ "$FAI_DEBOOTSTRAP" ]; then      if [ "$FAI_DEBOOTSTRAP" ]; then
157          call_debootstrap $FAI_DEBOOTSTRAP          call_verbose call_with_stamp call_debootstrap $FAI_DEBOOTSTRAP
158          echo "Creating base.tgz"          $ROOTCMD apt-get clean
159          tar -C $NFSROOT -cf - . | gzip > $NFSROOT/../base.tgz          echo "Creating base.tgz"
160          mv $NFSROOT/../base.tgz $NFSROOT/var/tmp/base.tgz          tar -C $NFSROOT -cf - . | gzip > $NFSROOT/../base.tgz
161            mv $NFSROOT/../base.tgz $NFSROOT/var/tmp/base.tgz
162      else      else
163          # old method for potato          # old method for potato
164          get_basetgz          call_with_stamp get_basetgz
165          echo "Unpacking base2_2.tgz"          echo "Unpacking base2_2.tgz"
166          zcat /tmp/base2_2.tgz | tar -C $NFSROOT -xpf -          zcat /tmp/base2_2.tgz | tar -C $NFSROOT -xpf -
167          cp -p /tmp/base2_2.tgz $NFSROOT/var/tmp/base.tgz          cp -p /tmp/base2_2.tgz $NFSROOT/var/tmp/base.tgz
168      fi      fi
169  }  }
170  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
171  create_nfsroot() {  create_nfsroot() {
172    
173      mkdir -p $NFSROOT/fai      mkdir -p $NFSROOT/$FAI
174      cd $NFSROOT || die "Error: Can't cd to $NFSROOT"      cd $NFSROOT || die "Error: Can't cd to $NFSROOT"
175      create_base  
176      mknod dev/boot255 c 0 255      call_with_stamp create_base
177    
178        [ ! -c dev/boot255 ] && mknod dev/boot255 c 0 255
179    
180      if [ "$FAI_DEBMIRROR" ]; then      if [ "$FAI_DEBMIRROR" ]; then
181          mkdir -p $NFSROOT/$MNTPOINT          mkdir -p $NFSROOT/$MNTPOINT
182          mount -o ro,rsize=8192 $FAI_DEBMIRROR $NFSROOT/$MNTPOINT || die "Can't mount $FAI_DEBMIRROR"          mount -o ro,rsize=8192 $FAI_DEBMIRROR $NFSROOT/$MNTPOINT || \
183      fi                  die "Can't mount $FAI_DEBMIRROR"
184            fi
185    
186      # hoaks some packages      # hoaks some packages
187      > etc/fstab # dump and raidtool2 needs these files      # liloconfig, dump and raidtool2 needs these files
188        echo "# UNCONFIGURED FSTAB FOR BASE SYSTEM" > etc/fstab
189      > etc/raidtab      > etc/raidtab
190      mkdir -p lib/modules/$KERNELVERSION           # dirty trick to hoax lvm      mkdir -p lib/modules/$KERNELVERSION           # dirty trick to hoax lvm
191      >  lib/modules/$KERNELVERSION/modules.dep  # dirty trick to hoax lvm      >  lib/modules/$KERNELVERSION/modules.dep  # dirty trick to hoax lvm
192      mkdir -p etc/ssh      mkdir -p etc/ssh
193        echo 'NTPSERVERS=""' > etc/default/ntp-servers
194    
195        # potato only
196      > etc/ssh/NOSERVER      > etc/ssh/NOSERVER
197        # woody uses debconf
198    
199      echo "$FAI_SOURCES_LIST" > etc/apt/sources.list      if [ "$FAI_SOURCES_LIST" ]; then
200      upgrade_nfsroot          echo "$FAI_SOURCES_LIST" > etc/apt/sources.list
201      copy_fai_files      else
202            cp /etc/apt/sources.list etc/apt/sources.list
203        fi
204        [ -f /etc/apt/preferences ] && cp /etc/apt/preferences etc/apt
205        echo "Upgrading $NFSROOT"
206        call_verbose call_with_stamp upgrade_nfsroot
207        echo "Adding additional packages to $NFSROOT:"
208        echo "$packages"
209        call_verbose call_with_stamp add_packages_nfsroot
210        call_with_stamp copy_fai_files
211    
212      # set timezone      # set timezone
213      rm -f etc/localtime      rm -f etc/localtime
# Line 164  create_nfsroot() { Line 215  create_nfsroot() {
215    
216      # make little changes to nfsroot, because nfsroot is      # make little changes to nfsroot, because nfsroot is
217      # read only for the install clients      # read only for the install clients
218      rm -rf etc/mtab var/run      rm -rf etc/mtab var/run etc/sysconfig
219      mv etc/init.d/rcS etc/init.d/rcS.orig      mv etc/init.d/rcS etc/init.d/rcS.orig
220      ln -s /proc/mounts etc/mtab      ln -s /proc/mounts etc/mtab
221      ln -s /tmp/var/run var/run      ln -s /tmp/var/run var/run
222      ln -sf /tmp/etc/resolv.conf etc/resolv.conf      ln -sf /tmp/etc/resolv.conf etc/resolv.conf
223        ln -sf /tmp etc/sysconfig
224      ln -s /sbin/rcS_fai etc/init.d/rcS      ln -s /sbin/rcS_fai etc/init.d/rcS
225        ln -s /dev/null etc/network/ifstate
226        # for nis
227        [ -d var/yp ] && ln -s /tmp/binding var/yp/binding
228    
229      # turn off logging of loading kernel modules      # turn off logging of loading kernel modules
230      rmdir var/log/ksymoops/      [ -d var/log/ksymoops/ ] && rmdir var/log/ksymoops/
231      ln -s /dev/null var/log/ksymoops      ln -s /dev/null var/log/ksymoops
232    
233      # definition for loopback device      # definition for loopback device
234      echo "iface lo inet loopback" > etc/network/interfaces      echo "iface lo inet loopback" > etc/network/interfaces
235    
236      echo "*.* /tmp/syslog.log" > etc/syslog.conf      echo "*.* /tmp/syslog.log" > etc/syslog.conf
237      echo ". /usr/share/fai/subroutines" >> root/.profile      echo ". $SHAREFAI/subroutines" >> root/.profile
238        echo ". $SHAREFAI/subroutines-$OSTYPE" >> root/.profile
239    
240      setup_ssh      call_verbose call_with_stamp setup_ssh
241    
242      cat >$NFSROOT/etc/rc2.d/S01fai_abort <<-EOF      cat >$NFSROOT/etc/rc2.d/S01fai_abort <<-EOF
243          #!/bin/sh          #!/bin/sh
244          echo FAI: installation aborted.          echo FAI: installation aborted.
245          echo reboot with: faireboot          echo reboot with: faireboot
246          echo or after a logout          echo or after a logout
247          sh          sh
248          cd /          cd /
249          umount -ar          umount -ar
250          reboot -dfi          reboot -dfi
251  EOF  EOF
252      chmod a+rx $NFSROOT/etc/rc2.d/S01fai_abort      chmod a+rx $NFSROOT/etc/rc2.d/S01fai_abort
253  }  }
254  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
255  upgrade_nfsroot() {  upgrade_nfsroot() {
256    
     echo "Upgrading $NFSROOT"  
     {  
257      cp /etc/resolv.conf $NFSROOT/etc      cp /etc/resolv.conf $NFSROOT/etc
258      $ROOTCMD apt-get update      $ROOTCMD apt-get update
259      $ROOTCMD apt-get check      $ROOTCMD apt-get check
260      rm -rf $NFSROOT/etc/pcmcia $NFSROOT/etc/apm      rm -rf $NFSROOT/etc/apm
261      mount -t proc /proc $NFSROOT/proc      mount -t proc /proc $NFSROOT/proc
262      $ROOTCMD apt-get -y install debconf pcmcia-cs- ppp- </dev/null      $ROOTCMD apt-get --purge -y install debconf </dev/null
263    
264      # fake start-stop-dameon      # fake start-stop-dameon
265      $ROOTCMD dpkg-divert --quiet --package fai --add --rename /sbin/start-stop-daemon      $ROOTCMD dpkg-divert --quiet --package fai --add --rename /sbin/start-stop-daemon
266      cp $LIBFAI/sbin/start-stop-daemon $NFSROOT/sbin      cp $LIBFAI/sbin/start-stop-daemon $NFSROOT/sbin
267      $ROOTCMD apt-get -y upgrade      $ROOTCMD apt-get -y upgrade
268      } > $devnull  }
269      echo "Adding additional packages to $NFSROOT:"  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
270      echo "$packages"  add_packages_nfsroot() {
271      {  
272      $ROOTCMD apt-get -y --fix-missing install $packages </dev/null      $ROOTCMD apt-get -y --fix-missing install $packages </dev/null
273        if [ -n "$NFSROOT_PACKAGES" ] ; then
274            $ROOTCMD apt-get -y --fix-missing install $NFSROOT_PACKAGES </dev/null
275        fi
276      $ROOTCMD apt-get clean      $ROOTCMD apt-get clean
     } > $devnull  
277  }  }
278  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
279  get_basetgz() {  get_basetgz() {
# Line 225  get_basetgz() { Line 281  get_basetgz() {
281      [ -f /tmp/base2_2.tgz ] && return      [ -f /tmp/base2_2.tgz ] && return
282      [ "$FAI_BASETGZ" ] || die "No /tmp/base2_2.tgz found and FAI_BASETGZ not defined."      [ "$FAI_BASETGZ" ] || die "No /tmp/base2_2.tgz found and FAI_BASETGZ not defined."
283      case $FAI_BASETGZ in      case $FAI_BASETGZ in
284          ftp:*|http:*)          ftp:*|http:*)
285              echo "Fetching $FAI_BASETGZ via wget. This may take some time."              echo "Fetching $FAI_BASETGZ via wget. This may take some time."
286              TMPBDIR=`mktemp /tmp/FAI-wget-XXXXXX` || exit 1              TMPBDIR=`mktemp /tmp/FAI-wget-XXXXXX` || exit 1
287              rm $TMPBDIR; mkdir $TMPBDIR || exit              rm $TMPBDIR; mkdir $TMPBDIR || exit
288              wget -P$TMPBDIR $FAI_BASETGZ              wget -P$TMPBDIR $FAI_BASETGZ
289              mv $TMPBDIR/base2_2.tgz /tmp              mv $TMPBDIR/base2_2.tgz /tmp
290              rm -rf $TMPBDIR              rm -rf $TMPBDIR
291              ;;              ;;
292          /*/base2_2.tgz)          /*/base2_2.tgz)
293              rm -f /tmp/base2_2.tgz              rm -f /tmp/base2_2.tgz
294              test -r $FAI_BASETGZ || die "Can't read $FAI_BASETGZ. Check FAI_BASETGZ in fai.conf."              test -r $FAI_BASETGZ || die "Can't read $FAI_BASETGZ. Check FAI_BASETGZ in fai.conf."
295              ln -s $FAI_BASETGZ /tmp              ln -s $FAI_BASETGZ /tmp
296              ;;              ;;
297          *)          *)
298              die "FAI_BASETGZ in fai.conf is $FAI_BASETGZ and looks very strong."              die "FAI_BASETGZ in fai.conf is $FAI_BASETGZ and looks very strange."
299              ;;              ;;
300      esac      esac
301  }  }
302  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Line 251  umount_dirs() { Line 307  umount_dirs() {
307      umount $NFSROOT/proc 1>/dev/null 2>&1 || true      umount $NFSROOT/proc 1>/dev/null 2>&1 || true
308      umount $NFSROOT/dev/pts 1>/dev/null 2>&1 ||true      umount $NFSROOT/dev/pts 1>/dev/null 2>&1 ||true
309      if [ "$FAI_DEBMIRROR" ]; then      if [ "$FAI_DEBMIRROR" ]; then
310          test -d $NFSROOT/$MNTPOINT && umount $NFSROOT/$MNTPOINT || true          test -d $NFSROOT/$MNTPOINT && umount $NFSROOT/$MNTPOINT || true
311      fi      fi
312      # show directories still mounted on nfsroot      # show directories still mounted on nfsroot
313      mount | grep " on $NFSROOT " || true      mount | grep " on $NFSROOT " || true
314  }  }
315  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
316    get_kernel_version() {
317    
318        local package=$1
319        KERNELVERSION=`dpkg --info $1 | grep "Package: kernel-image" | sed -e 's/.*kernel-image-'//`
320    }
321    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
322    setup_bootp(){
323    
324        mknbi-linux --verbose $NFSROOT/boot/vmlinuz-$KERNELVERSION /boot/fai/installimage
325        # imggen is free software from 3com
326        # it converts netboot image to images, that are bootable by 3com network cards
327        imggen=`which imggen || true`
328        if [ -x "$imggen" ]; then
329            imggen -a /boot/fai/installimage /boot/fai/installimage_3com
330        fi
331        echo "BOOTP environment prepared."
332    }
333    
334    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
335    setup_dhcp(){
336    
337        # pxe and dhcp environment
338        cp -p $NFSROOT/boot/vmlinuz-$KERNELVERSION /boot/fai/installkernel
339        rdev /boot/fai/installkernel $NFSROOT/dev/boot255
340        [ -f /usr/lib/syslinux/pxelinux.bin ] && cp /usr/lib/syslinux/pxelinux.bin /boot/fai
341        [ -d /boot/fai/pxelinux.cfg ] || mkdir /boot/fai/pxelinux.cfg || true
342        cp -p /usr/share/fai/etc/pxelinux.cfg /boot/fai/pxelinux.cfg/default
343        echo "DHCP environment prepared. Now enable dhcpd and the special tftp daemon"
344    }
345    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
346  # main routine  # main routine
347    
348  if [ -d $NFSROOT/fai ]; then  # Kill the directory if not in recover mode
349    if [ -d $NFSROOT/$FAI -a ! "$recover" ]
350    then
351      echo $NFSROOT already exists. Removing $NFSROOT      echo $NFSROOT already exists. Removing $NFSROOT
352      umount $NFSROOT/dev/pts 1>/dev/null 2>&1 || true      umount $NFSROOT/dev/pts 1>/dev/null 2>&1 || true
353      rm -rf $NFSROOT/.??* $NFSROOT/*      rm -rf $NFSROOT/.??* $NFSROOT/*
# Line 267  if [ -d $NFSROOT/fai ]; then Line 355  if [ -d $NFSROOT/fai ]; then
355      find $NFSROOT ! -type d -xdev -maxdepth 1 | xargs -r rm -f      find $NFSROOT ! -type d -xdev -maxdepth 1 | xargs -r rm -f
356  fi  fi
357    
358  create_nfsroot  # Create a new nfsroot
359    call_with_stamp create_nfsroot
360    
361    # Install the kernel package
362  if [ -f $KERNELPACKAGE ]; then  if [ -f $KERNELPACKAGE ]; then
363        # determine kernel version
364        get_kernel_version $KERNELPACKAGE
365    
366      # create tftp boot images      # create tftp boot images
367      install_kernel_nfsroot      call_with_stamp install_kernel_nfsroot
368      mknbi-linux --verbose $NFSROOT/boot/vmlinuz-$KERNELVERSION /boot/fai/installimage  
369      # imggen is free software from 3com      grep -q _dhcp_ $NFSROOT/boot/System.map-$KERNELVERSION && TYPE=DHCP
370      # it converts netboot image to images, that are bootable by 3com network cards      # only BOOTP need a netboot image, DHCP can do with raw kernels
371      imggen=`which imggen || true`      if [ "$TYPE" = DHCP ]; then
372      if [ -x "$imggen" ]; then          call_with_stamp setup_dhcp
373          imggen -a /boot/fai/installimage /boot/fai/installimage_3com      else
374            call_with_stamp setup_bootp
375      fi      fi
376  else  else
377      echo "Kernel package $KERNELPACKAGE not found."      echo "Kernel package $KERNELPACKAGE not found."

Legend:
Removed from v.691  
changed lines
  Added in v.1161

  ViewVC Help
Powered by ViewVC 1.1.5