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

Contents of /trunk/bin/make-fai-nfsroot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 581 - (hide annotations) (download)
Mon Apr 30 09:58:59 2001 UTC (12 years, 1 month ago) by lange
Original Path: trunk/scripts/make-fai-nfsroot
File size: 8694 byte(s)
use trap for umounting directories
copy known_hosts, don't create it
1 lange 46 #! /bin/sh
2 lange 2
3     # $Id$
4     #*********************************************************************
5     #
6     # make-fai-nfsroot -- create nfsroot directory and add additional packages
7     #
8     # This script is part of FAI (Fully Automatic Installation)
9 lange 368 # (c) 2000-2001 by Thomas Lange, lange@informatik.uni-koeln.de
10 lange 2 # Universitaet zu Koeln
11     #
12     #*********************************************************************
13     # This program is free software; you can redistribute it and/or modify
14     # it under the terms of the GNU General Public License as published by
15     # the Free Software Foundation; either version 2 of the License, or
16     # (at your option) any later version.
17     #
18     # This program is distributed in the hope that it will be useful, but
19     # WITHOUT ANY WARRANTY; without even the implied warranty of
20     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21     # General Public License for more details.
22     #
23     # A copy of the GNU General Public License is available as
24     # `/usr/share/common-licences/GPL' in the Debian GNU/Linux distribution
25     # or on the World Wide Web at http://www.gnu.org/copyleft/gpl.html. You
26     # can also obtain it by writing to the Free Software Foundation, Inc.,
27     # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
28     #*********************************************************************
29    
30 lange 119 # Thomas Lange, Universitaet Koeln, 2000
31 lange 2
32 lange 485 # Packages that are install to nfsroot by default
33     # Additional packages are defined with $NFSROOT_PACKAGES in fai.conf
34     packages="perl-5.005 dhcp-client file rdate cfengine bootpc wget rsh-client less dump ext2resize raidtools2 strace expect5.31 hdparm parted dnsutils grub"
35    
36 lange 217 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
37 lange 2
38 lange 485 if [ "$UID" -ne 0 ]; then
39     echo "Run this program as root."
40     exit 9
41     fi
42    
43 lange 119 while getopts v opt ; do
44     case "$opt" in
45     v) verbose=1 ;;
46     esac
47     done
48    
49 lange 330 set -e
50 lange 119 . /etc/fai.conf
51 lange 485 packages="$packages $NFSROOT_PACKAGES"
52 lange 491 ROOTCMD="chroot $NFSROOT"
53 lange 119
54     conffile=$NFSROOT/etc/rcS_fai.conf
55 lange 14 export DEBIAN_FRONTEND=Noninteractive
56 lange 2
57 lange 14 if [ "$verbose" ]; then
58     devnull=/dev/tty
59     else
60     devnull=/dev/null
61     fi
62 lange 2
63 lange 581 trap "umount_dirs" EXIT
64 lange 2 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
65 lange 203 die() {
66    
67     echo $*
68     exit 99
69     }
70     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
71 lange 545 install_kernel_nfsroot() {
72     rm -rf $NFSROOT/boot/*-$KERNELVERSION $NFSROOT/lib/modules/$KERNELVERSION
73     dpkg -x $KERNELPACKAGE $NFSROOT
74     # if $NFROOT/proc/modules exists, then update-modules calls depmod -a without
75     # these special flags; so umount first
76     umount $NFSROOT/proc
77     chroot $NFSROOT update-modules
78     chroot $NFSROOT depmod -a -F /boot/System.map-$KERNELVERSION $KERNELVERSION
79     }
80     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
81 lange 69 setup_ssh() {
82    
83 lange 485 # nothing to do if no ssh is available in nfsroot
84     [ -f $NFSROOT/var/lib/dpkg/info/ssh.list ] || return 0
85 lange 425 mkdir -p -m 700 $NFSROOT/root/.ssh
86 lange 581 [ -f /etc/ssh/ssh_known_hosts ] && cp /etc/ssh/ssh_known_hosts $NFSROOT/root/.ssh/known_hosts
87 lange 425 loguserhome=`eval "cd ~$LOGUSER 2>/dev/null && pwd;true"`
88     [ -d $loguserhome/.ssh ] && cp -p $loguserhome/.ssh/identity* $NFSROOT/root/.ssh/
89    
90 lange 119 # enable root login
91     perl -pi -e 's/PermitRootLogin no/PermitRootLogin yes/' $NFSROOT/etc/ssh/sshd_config
92     if [ -f "$SSH_IDENTITY" ]; then
93 lange 130 cp -p $SSH_IDENTITY $NFSROOT/root/.ssh/authorized_keys
94 lange 217 echo You can log into install clients without password using $SSH_IDENTITY
95 lange 119 fi
96 lange 69 }
97     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
98 lange 119 copy_fai_files() {
99 lange 2
100 lange 485 # copy to nfsroot
101 lange 217 perl -pi -e "s/^root::/root:${FAI_ROOTPW}:/" etc/passwd
102 lange 119 mkdir -p $NFSROOT/fai/fai_config $NFSROOT/usr/share/fai
103 lange 485 cd $NFSROOT
104     cp -p $LIBFAI/sbin/dhclient-script $LIBFAI/etc/dhclient.conf /etc/fai.conf etc
105     cp -p $LIBFAI/sbin/* sbin
106     cp -p $LIBFAI/etc/fai_modules_off etc/modutils
107    
108     cp -p /usr/share/fai/* usr/share/fai
109     cp -p $LIBFAI/etc/apt.conf etc/apt
110     cp -p /usr/lib/perl5/Debian/Fai.pm usr/lib/perl5/Debian/
111     cp -p /tmp/base?_?.tgz var/tmp
112     echo $NFSROOT_ETC_HOSTS >> etc/hosts
113 lange 119 }
114     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
115     create_nfsroot() {
116    
117 lange 581 mkdir -p $NFSROOT/fai
118 lange 217 cd $NFSROOT || die "Error: Can't cd to $NFSROOT"
119 lange 69 get_basetgz
120 lange 119 echo -n "Unpacking " ; ls /tmp/base?_?.tgz
121 lange 217 tar -C $NFSROOT -zxpf /tmp/base?_?.tgz
122 lange 501 mknod dev/boot255 c 0 255
123 lange 119
124 lange 480 if [ "$FAI_DEBMIRROR" ]; then
125 lange 361 mkdir -p $NFSROOT/$MNTPOINT
126 lange 480 mount -o ro,rsize=8192 $FAI_DEBMIRROR $NFSROOT/$MNTPOINT || die "Can't mount $FAI_DEBMIRROR"
127 lange 203 fi
128    
129 lange 119 # hoaks some packages
130 lange 14 touch etc/fstab etc/raidtab # dump and raidtool2 needs these files
131 lange 217 mkdir -p lib/modules/$KERNELVERSION # dirty trick to hoax lvm
132     touch lib/modules/$KERNELVERSION/modules.dep # dirty trick to hoax lvm
133 lange 485 mkdir -p etc/ssh
134     touch etc/ssh/NOSERVER
135 lange 119
136 lange 485 echo "$FAI_SOURCES_LIST" > etc/apt/sources.list
137 lange 361 upgrade_nfsroot
138 lange 119 copy_fai_files
139    
140     # set timezone
141 lange 485 rm -f etc/localtime
142     cp -d /etc/localtime /etc/timezone etc
143 lange 119
144 lange 485 # make little changes to nfsroot, because nfsroot is
145 lange 217 # read only for the install clients
146 lange 187 rm -rf etc/mtab var/run
147 lange 485 mv etc/init.d/rcS etc/init.d/rcS.orig
148     ln -s /proc/mounts etc/mtab
149     ln -s /tmp/var/run var/run
150     ln -sf /tmp/etc/resolv.conf etc/resolv.conf
151     ln -s /sbin/rcS_fai etc/init.d/rcS
152 lange 2
153 lange 217 # turn off logging of loading kernel modules
154 lange 485 rmdir var/log/ksymoops/
155     ln -s /dev/null var/log/ksymoops
156 lange 119
157 lange 217 # definition for loopback device
158 lange 485 echo "iface lo inet loopback" > etc/network/interfaces
159 lange 305
160 lange 485 echo "*.* /tmp/syslog.log" > etc/syslog.conf
161     echo ". /usr/share/fai/subroutines" >> root/.profile
162 lange 361
163 lange 425 setup_ssh
164 lange 119
165 lange 217 cat >$NFSROOT/etc/rc2.d/S01fai_abort <<-EOF
166 lange 183 #!/bin/sh
167     echo FAI: installation aborted.
168     echo reboot with: faireboot
169     echo or after a logout
170     sh
171     cd /
172     umount -ar
173     reboot -dfi
174 lange 2 EOF
175 lange 217 chmod a+rx $NFSROOT/etc/rc2.d/S01fai_abort
176 lange 2 }
177     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
178 lange 27 upgrade_nfsroot() {
179 lange 2
180 lange 119 echo "Upgrading $NFSROOT"
181     {
182 lange 242 cp /etc/resolv.conf $NFSROOT/etc
183 lange 491 $ROOTCMD apt-get update
184     $ROOTCMD apt-get check
185 lange 119 rm -rf $NFSROOT/etc/pcmcia $NFSROOT/etc/apm
186 lange 485 mount -t proc /proc $NFSROOT/proc
187 lange 491 $ROOTCMD apt-get -y remove pcmcia-cs </dev/null
188 lange 57
189 lange 217 # fake start-stop-dameon
190 lange 491 $ROOTCMD dpkg-divert --quiet --package fai --add --rename /sbin/start-stop-daemon
191 lange 217 cp $LIBFAI/sbin/start-stop-daemon $NFSROOT/sbin
192 lange 491 $ROOTCMD apt-get -y upgrade
193 lange 119 } > $devnull
194     echo "Adding additional packages to $NFSROOT:"
195 lange 69 echo "$packages"
196 lange 119 {
197 lange 491 $ROOTCMD apt-get -y --fix-missing install $packages </dev/null
198     $ROOTCMD apt-get clean
199 lange 119 } > $devnull
200 lange 2 }
201     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
202 lange 69 get_basetgz() {
203 lange 2
204 lange 119 [ -f /tmp/base?_?.tgz ] && return
205 lange 485 [ "$FAI_BASETGZ" ] || die "No /tmp/base?_?.tgz found and FAI_BASETGZ not defined."
206 lange 274 case $FAI_BASETGZ in
207 lange 119 ftp:*|http:*)
208 lange 485 echo "Fetching $FAI_BASETGZ via wget. This may take some time."
209 lange 203 TMPBDIR=`mktemp /tmp/FAI-wget-XXXXXX` || exit 1
210     rm $TMPBDIR; mkdir $TMPBDIR || exit
211 lange 274 wget -P$TMPBDIR $FAI_BASETGZ
212 lange 203 mv $TMPBDIR/base?_?.tgz /tmp
213     rm -rf $TMPBDIR
214 lange 119 ;;
215 lange 217 /*/base?_?.tgz)
216 lange 278 rm -f /tmp/base?_?.tgz
217 lange 460 test -r $FAI_BASETGZ || die "Can't read $FAI_BASETGZ. Check FAI_BASETGZ in fai.conf."
218 lange 278 ln -s $FAI_BASETGZ /tmp
219 lange 119 ;;
220 lange 217 *)
221 lange 460 die "FAI_BASETGZ in fai.conf is $FAI_BASETGZ and looks very strong."
222 lange 217 ;;
223 lange 119 esac
224 lange 69 }
225     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
226 lange 581 umount_dirs() {
227    
228     cd /
229     sleep 2
230     umount $NFSROOT/proc 1>/dev/null 2>&1 || true
231     umount $NFSROOT/dev/pts 1>/dev/null 2>&1 ||true
232     if [ "$FAI_DEBMIRROR" ]; then
233     test -d $NFSROOT/$MNTPOINT && umount $NFSROOT/$MNTPOINT || true
234     fi
235     # show directories still mounted on nfsroot
236     mount | grep " on $NFSROOT "
237     }
238     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
239 lange 169 # main routine
240    
241 lange 119 if [ -d $NFSROOT/fai ]; then
242     echo $NFSROOT already exists. Removing $NFSROOT
243 lange 361 umount $NFSROOT/dev/pts 1>/dev/null 2>&1 || true
244 lange 129 rm -rf $NFSROOT
245 lange 2 fi
246    
247 lange 203 create_nfsroot
248 lange 330
249 lange 545 if [ -f $KERNELPACKAGE ]; then
250     # create tftp boot images
251     install_kernel_nfsroot
252     mknbi-linux --verbose $NFSROOT/boot/vmlinuz-$KERNELVERSION /boot/fai/installimage
253     # imggen is a free software from 3com
254     imggen=`which imggen || true`
255     if [ -x $imggen ]; then
256     imggen -a /boot/fai/installimage /boot/fai/installimage_3com
257     fi
258     else
259     echo "No kernel package $KERNELPACKAGE found."
260     echo "No install kernel installed in /boot/fai,"
261     echo "no kernel modules available in nfsroot."
262     fi
263    
264 lange 485 echo make-fai-nfsroot finished.
265 lange 14 exit 0

Properties

Name Value
svn:eol-style native
svn:executable *
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.5