| 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-2004 by Thomas Lange, lange@informatik.uni-koeln.de |
# (c) 2000-2005 by Thomas Lange, lange@informatik.uni-koeln.de |
| 10 |
# Universitaet zu Koeln |
# Universitaet zu Koeln |
| 11 |
# |
# |
| 12 |
#********************************************************************* |
#********************************************************************* |
| 36 |
fi |
fi |
| 37 |
|
|
| 38 |
merror="properly" |
merror="properly" |
| 39 |
while getopts rvc:f:k opt ; do |
# option e currently does nothing |
| 40 |
|
while getopts ervc:f:kK opt ; do |
| 41 |
case "$opt" in |
case "$opt" in |
| 42 |
c) cfdir=$OPTARG ;; |
c) cfdir=$OPTARG ;; |
| 43 |
v) verbose=1 ; v=-v ;; |
v) verbose=1 ; v=-v ;; |
| 44 |
r) recover=1 ;; |
r) recover=1 ;; |
| 45 |
f) cfg=$OPTARG ;; |
f) cfg=$OPTARG ;; |
| 46 |
k) kinstall=1 ;; |
k) kinstall=1 ;; |
| 47 |
|
K) kremove=1; kinstall=1 ;; |
| 48 |
|
e) expert=1 ;; |
| 49 |
?) exit 5 ;; # error in option parsing |
?) exit 5 ;; # error in option parsing |
| 50 |
esac |
esac |
| 51 |
done |
done |
| 78 |
fi |
fi |
| 79 |
|
|
| 80 |
if [ "$FAI_SOURCES_LIST" ]; then |
if [ "$FAI_SOURCES_LIST" ]; then |
| 81 |
echo "The usage of the variable \$FAI_SOURCES_LIST is deprecated. Please use sources.lsit now." |
echo "The usage of the variable \$FAI_SOURCES_LIST is deprecated. Please use sources.list now." |
| 82 |
exit 3 |
exit 3 |
| 83 |
fi |
fi |
| 84 |
|
|
| 89 |
fi |
fi |
| 90 |
|
|
| 91 |
kfile="vmlinuz" |
kfile="vmlinuz" |
| 92 |
case `uname -m` in |
case `dpkg --print-installation-architecture` in |
| 93 |
i386|i486|i586|i686|amd64) |
i386|amd64) |
| 94 |
arch_packages="grub lilo read-edid kudzu hwtools dmidecode" ;; |
arch_packages="grub lilo read-edid kudzu hwtools dmidecode" ;; |
| 95 |
|
|
| 96 |
ia64) |
ia64) |
| 97 |
arch_packages="elilo gnu-efi efibootmgr" ;; |
arch_packages="elilo gnu-efi efibootmgr" ;; |
| 98 |
|
|
| 99 |
sparc|sparc64) |
sparc) |
| 100 |
arch_packages="silo sparc-utils" ;; |
arch_packages="silo sparc-utils" ;; |
| 101 |
|
|
| 102 |
ppc) |
powerpc) |
| 103 |
arch_packages="" |
arch_packages="" |
| 104 |
kfile="vmlinux" ;; |
kfile="vmlinux" ;; |
| 105 |
|
|
| 106 |
|
alpha) |
| 107 |
|
arch_packages="aboot" ;; |
| 108 |
|
|
| 109 |
*) arch_packages="" ;; |
*) arch_packages="" ;; |
| 110 |
esac |
esac |
| 111 |
packages="$packages |
packages="$packages |
| 204 |
fdivert /etc/dhcp3/dhclient-script /etc/dhcp3/dhclient.conf |
fdivert /etc/dhcp3/dhclient-script /etc/dhcp3/dhclient.conf |
| 205 |
cp -p $SHAREFAI/etc/dhclient.conf etc/dhcp3 |
cp -p $SHAREFAI/etc/dhclient.conf etc/dhcp3 |
| 206 |
cp -Rpv $cfdir/* $NFSROOT/etc/fai |
cp -Rpv $cfdir/* $NFSROOT/etc/fai |
| 207 |
|
# remove some files that should not be copied |
| 208 |
rm -f $NFSROOT/etc/fai/make-fai-nfsroot.conf |
rm -f $NFSROOT/etc/fai/make-fai-nfsroot.conf |
| 209 |
[ -f $cfdir/.cvspass ] && cp -p $v $cfdir/.cvspass $NFSROOT/.cvspass |
[ -f $cfdir/.cvspass ] && cp -p $v $cfdir/.cvspass $NFSROOT/.cvspass |
| 210 |
cp -p $LIBFAI/sbin/* sbin/ |
cp -p $LIBFAI/sbin/* sbin/ |
| 211 |
|
cp -p /usr/sbin/fai usr/sbin/ |
| 212 |
mv sbin/dhclient-script etc/dhcp3 |
mv sbin/dhclient-script etc/dhcp3 |
| 213 |
cp -p /usr/sbin/{ftar,fcopy,install_packages} usr/sbin/ |
cp -p /usr/sbin/{ftar,fcopy,install_packages} usr/sbin/ |
| 214 |
cp -p /usr/bin/{fai-do-scripts,fai-class} usr/bin/ |
cp -p /usr/bin/{fai-do-scripts,fai-class,fai-debconf} usr/bin/ |
| 215 |
cp -p $LIBFAI/* usr/lib/fai 2>/dev/null || true # cp will complain about directories |
cp -p $LIBFAI/* usr/lib/fai 2>/dev/null || true # cp will complain about directories |
| 216 |
cp -p $SHAREFAI/etc/fai_modules_off etc/modutils/ |
cp -p $SHAREFAI/etc/fai_modules_off etc/modutils/ |
| 217 |
|
|
| 218 |
cp -p $SHAREFAI/subroutines* usr/share/fai |
cp -p $SHAREFAI/subroutines* usr/share/fai |
| 219 |
cp -p $v $SHAREFAI/etc/apt.conf $NFSROOT/etc/apt |
cp -p $v $SHAREFAI/etc/apt.conf $NFSROOT/etc/apt |
| 220 |
cp -p /usr/share/perl5/Debian/Fai.pm usr/share/perl5/Debian/ |
cp -p /usr/share/perl5/Debian/Fai.pm usr/share/perl5/Debian/ |
| 221 |
|
$ROOTCMD shadowconfig on |
| 222 |
} |
} |
| 223 |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 224 |
call_debootstrap() { |
call_debootstrap() { |
| 233 |
if [ "$FAI_DEBOOTSTRAP" ]; then |
if [ "$FAI_DEBOOTSTRAP" ]; then |
| 234 |
call_with_stamp call_debootstrap $FAI_DEBOOTSTRAP |
call_with_stamp call_debootstrap $FAI_DEBOOTSTRAP |
| 235 |
$ROOTCMD apt-get clean |
$ROOTCMD apt-get clean |
| 236 |
|
rm -f $NFSROOT/etc/resolv.conf |
| 237 |
echo "Creating base.tgz" |
echo "Creating base.tgz" |
| 238 |
tar -l -C $NFSROOT -cf - --exclude var/tmp/base.tgz . | gzip > $NFSROOT/var/tmp/base.tgz |
tar -l -C $NFSROOT -cf - --exclude var/tmp/base.tgz . | gzip > $NFSROOT/var/tmp/base.tgz |
| 239 |
else |
else |
| 247 |
cd $NFSROOT || die "Error: Can't cd to $NFSROOT" |
cd $NFSROOT || die "Error: Can't cd to $NFSROOT" |
| 248 |
|
|
| 249 |
call_with_stamp create_base |
call_with_stamp create_base |
| 250 |
|
# save the list of all packages in the base.tgz |
| 251 |
|
$ROOTCMD dpkg --get-selections | egrep 'install$' | awk '{print $1}' > var/tmp/base-pkgs.lis |
| 252 |
|
echo $arch_packages > $NFSROOT/var/tmp/packages.arch |
| 253 |
|
|
| 254 |
if [ "$FAI_DEBMIRROR" ]; then |
if [ "$FAI_DEBMIRROR" ]; then |
| 255 |
[ "$verbose" ] && echo "Mounting $FAI_DEBMIRROR to $NFSROOT/$MNTPOINT." |
[ "$verbose" ] && echo "Mounting $FAI_DEBMIRROR to $NFSROOT/$MNTPOINT." |
| 296 |
ln -s /proc/mounts etc/mtab |
ln -s /proc/mounts etc/mtab |
| 297 |
ln -s /tmp/var/run var/run |
ln -s /tmp/var/run var/run |
| 298 |
ln -sf /tmp/var/state/discover var/state/discover |
ln -sf /tmp/var/state/discover var/state/discover |
| 299 |
|
ln -sf /tmp/var/lib/discover var/lib/discover |
| 300 |
ln -s /tmp/etc/syslogsocket dev/log |
ln -s /tmp/etc/syslogsocket dev/log |
| 301 |
ln -sf /tmp/etc/resolv.conf etc/resolv.conf |
ln -sf /tmp/etc/resolv.conf etc/resolv.conf |
| 302 |
ln -sf /tmp etc/sysconfig |
ln -sf /tmp etc/sysconfig |
| 303 |
ln -s ../../sbin/rcS_fai etc/init.d/rcS |
ln -s /usr/sbin/fai etc/init.d/rcS |
| 304 |
ln -sf /dev/null etc/network/ifstate |
ln -sf /dev/null etc/network/ifstate |
| 305 |
# for nis |
# for nis |
| 306 |
[ -d var/yp ] && ln -s /tmp/binding var/yp/binding |
[ -d var/yp ] && ln -s /tmp/binding var/yp/binding |
| 342 |
upgrade_nfsroot() { |
upgrade_nfsroot() { |
| 343 |
|
|
| 344 |
cp -p $v /etc/resolv.conf $NFSROOT/etc/resolv.conf-installserver |
cp -p $v /etc/resolv.conf $NFSROOT/etc/resolv.conf-installserver |
| 345 |
|
cp -p $v /etc/resolv.conf $NFSROOT/etc/resolv.conf # this is needed during make-fai-nfsroot |
| 346 |
$ROOTCMD apt-get update |
$ROOTCMD apt-get update |
| 347 |
$ROOTCMD apt-get -fyu install |
$ROOTCMD apt-get -fyu install |
| 348 |
$ROOTCMD apt-get check |
$ROOTCMD apt-get check |
| 417 |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 418 |
fdivert() { |
fdivert() { |
| 419 |
|
|
| 420 |
|
local item |
| 421 |
for item in "$@"; do |
for item in "$@"; do |
| 422 |
LC_ALL=C $ROOTCMD dpkg-divert --quiet --package fai --add --rename $item |
LC_ALL=C $ROOTCMD dpkg-divert --quiet --package fai --add --rename $item |
| 423 |
done |
done |
| 447 |
esac |
esac |
| 448 |
done |
done |
| 449 |
else |
else |
| 450 |
echo "Kernel package $KERNELPACKAGE not found." |
merror="with errors" |
| 451 |
|
echo "Error. Kernel package $KERNELPACKAGE not found." |
| 452 |
echo "No install kernel installed in /boot/fai." |
echo "No install kernel installed in /boot/fai." |
| 453 |
echo "No kernel modules available in nfsroot." |
echo "No kernel modules available in nfsroot." |
| 454 |
fi |
fi |
| 456 |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
| 457 |
# main routine |
# main routine |
| 458 |
|
|
| 459 |
|
# remove all kernels from nfsroot |
| 460 |
|
[ -n "$kremove" ] && { |
| 461 |
|
echo "Removing all kernels from NFSROOT." |
| 462 |
|
rm -f $NFSROOT/boot/{System.map,vmlinuz,config}* |
| 463 |
|
rm -rf $NFSROOT/lib/modules/2.* |
| 464 |
|
} |
| 465 |
# just install a new kernel to the nfsroot |
# just install a new kernel to the nfsroot |
| 466 |
[ -n "$kinstall" ] && { |
[ -n "$kinstall" ] && { |
| 467 |
trap "true" EXIT |
trap "true" EXIT |