source: trunk/debathena/scripts/installer/install-debathena.sh @ 23923

Revision 23923, 10.0 KB checked in by amb, 15 years ago (diff)
In the network autoconfig applied to cluster installs, set some default nameservers so resolution will work before bind9 starts.
RevLine 
[23093]1#!/bin/sh
[23492]2# Athena 10 installer script.
[23476]3# Maintainer: debathena@mit.edu
[23492]4# Based on original Debathena installer script by: Tim Abbott <tabbott@mit.edu>
[23093]5
[23492]6# Download this to a Debian or Ubuntu machine and run it as root.  It can
[23093]7# be downloaded with:
[23831]8#   wget -N http://debathena.mit.edu/install-debathena.sh
[23093]9
10set -e
11
12output() {
13  printf '\033[38m'; echo "$@"; printf '\033[0m'
14}
15
16error() {
17  printf '\033[31m'; echo "$@"; printf '\033[0m'
18}
19
20ask() {
21  answer=''
22  while [ y != "$answer" -a n != "$answer" ]; do
23    printf '\033[38m'; echo -n "$1"; printf '\033[0m'
24    read answer
25    [ Y = answer ] && answer=y
26    [ N = answer ] && answer=n
27    [ -z "$answer" ] && answer=$2
28  done
29  output ""
30}
31
32if [ `id -u` != "0" ]; then
[23492]33  error "You must run the Debathena installer as root."
34  exit 1
[23093]35fi
36
[23492]37echo "Welcome to the Debathena installer."
[23093]38echo ""
[23604]39echo "Please choose the category which best suits your needs.  Each category"
[23093]40echo "in this list includes the functionality of the previous ones.  See the"
[23492]41echo "documentation at http://debathena.mit.edu/beta for more information."
[23093]42echo ""
[23678]43echo "  standard:        Athena client software (e.g. discuss) and customizations"
44echo "  login:           Allow Athena users to log into your machine"
45echo "  login-graphical: Athena graphical login customizations"
[23797]46echo "  workstation:     Managed graphical workstation with minimal need for"
47echo "                   manual maintenance"
[23093]48echo ""
49
[23476]50# Hack to deal with the older PXE installer (which used a simple flag file to
51# indicate a PXE cluster install).
[23460]52if test -f /root/unattended-cluster-install ; then
[23476]53  echo cluster > /root/pxe-install-flag
[23460]54fi
[23476]55
56category=""
57if test -f /root/pxe-install-flag ; then
58  pxetype=`head -1 /root/pxe-install-flag`
59  if [ cluster = "$pxetype" ] ; then
[23492]60    category=cluster ;
[23476]61    echo "PXE cluster install detected, so installing \"cluster\"."
62  fi
63fi
[23135]64while [ standard != "$category" -a login != "$category" -a \
[23797]65        login-graphical != "$category" -a workstation != "$category" -a \
66        cluster != "$category" ]; do
[23093]67  output -n "Please choose a category or press control-C to abort: "
68  read category
69done
70mainpackage=debathena-$category
71
[23187]72dev=no
[23093]73echo
[23476]74if [ cluster != $category ] ; then
[23460]75  ask "Will this machine be used to build Debathena packages [y/N]? " n
76  if [ y = "$answer" ]; then
77    dev=yes
78  fi
[23093]79fi
80
[23187]81csoft=no
[23460]82tsoft=no
[23247]83echo "The extra-software package installs a standard set of software"
[23093]84echo "determined to be of interest to MIT users, such as LaTeX.  It is pretty"
[23247]85echo "big (several gigabytes, possibly more)."
[23093]86echo ""
[23872]87echo "Note: by enabling this option, you hereby agree with the license terms at:"
88echo "  <http://dlc.sun.com/dlj/DLJ-v1.1.txt> Sun's Operating System Distributor"
89echo "  License for Java version 1.1."
90echo ""
[23478]91if [ cluster = $category ] ; then
[23476]92  echo "Cluster install detected, so installing extras."
[23187]93  csoft=yes
[23469]94  # Not setting tsoft=yes here; -cluster will pull it in anyway.
[23460]95else
96  ask "Do you want the extra-software package [y/N]? " n
97  if [ y = "$answer" ]; then
98    csoft=yes
[23492]99  fi
[23093]100fi
[23876]101if [ yes = "$csoft" ]; then
[23872]102    # Preseed an answer to the java license query, which license was already accepted
103    # at install time:
104    echo "sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true" |debconf-set-selections
105fi
[23093]106
107echo "A summary of your choices:"
[23187]108echo "  Category: $category"
109echo "  Debian development package: $dev"
[23247]110echo "  Extra-software package: $csoft"
[23460]111echo "  Third-party software package: $tsoft"
[23093]112echo ""
[23476]113if [ "$pxetype" ] ; then
[23460]114  # Setup for package installs in a chrooted immediately-postinstall environment.
115  echo "Setting locale."
116  export LANG
117  . /etc/default/locale
118  echo "LANG set to $LANG."
119  echo "Mounting /proc."
120  mount /proc 2> /dev/null || :
121  # Clear toxic environment settings inherited from the installer.
122  unset DEBCONF_REDIR
123  unset DEBIAN_HAS_FRONTEND
[23476]124  if [ cluster = "$pxetype" ] ; then
125    # Network, LVM, and display config that's specific to PXE cluster installs.
126    # If someone is installing -cluster on an already-installed machine, it's
127    # assumed that this config has already happened and shouldn't be stomped on.
[23093]128
[23479]129    # Configure network based on the preseed file settings, if present.
[23867]130    if test -f /root/debathena.preseed ; then
[23479]131      # Switch to canonical hostname.
132      ohostname=`cat /etc/hostname`
133      # Hack to avoid installing debconf-get for just this.
[23875]134      ipaddr=`grep netcfg/get_ipaddress /root/debathena.preseed|sed -e 's/.* //'`
135      netmask=`grep netcfg/get_netmask /root/debathena.preseed|sed -e 's/.* //'`
136      gateway=`grep netcfg/get_gateway /root/debathena.preseed|sed -e 's/.* //'`
[23479]137
138      hostname=`host $ipaddr | \
[23476]139          sed 's#^.*domain name pointer \(.*\)$#\1#' | sed 's;\.*$;;' | \
140          tr '[A-Z]' '[a-z]'`
[23479]141      if echo $hostname|grep -q "not found" ; then
142        hostname=""
143        printf "\a"; sleep 1 ; printf "\a"; sleep 1 ;printf "\a"
144        echo "The IP address you selected, $ipaddr, does not have an associated"
145        echo "hostname.  Please confirm that you're using the correct address."
146        while [ -z "$hostname" ] ; do
147          echo -n "Enter fully qualified hostname [no default]: "
148          read hostname
149        done
150      fi
151      echo ${hostname%%.*} > /etc/hostname
152      sed -e 's/\(127\.0\.1\.1[         ]*\).*/\1'"$hostname ${hostname%%.*}/" < /etc/hosts > /etc/hosts.new
153      mv -f /etc/hosts.new /etc/hosts
154      if grep -q dhcp /etc/network/interfaces ; then
155        sed -e s/dhcp/static/ < /etc/network/interfaces > /etc/network/interfaces.new
156        echo "  address $ipaddr" >> /etc/network/interfaces.new
157        echo "  netmask $netmask" >> /etc/network/interfaces.new
158        echo "  gateway $gateway" >> /etc/network/interfaces.new
[23923]159        echo "  dns-nameservers 18.72.0.3 18.70.0.160 18.71.0.151" >> /etc/network/interfaces.new
[23479]160        mv -f /etc/network/interfaces.new /etc/network/interfaces
161      fi
162      hostname ${hostname%%.*}
[23476]163    fi
[23479]164
[23476]165    # Free up designated LVM overhead.
[23867]166    lvremove -f /dev/athena/keep_2 || :
[23476]167
[23874]168    if [ "$distro" = intrepid ] ; then
169      # This makes gx755s suck less with Intrepid's slightly broken xorg modules.
170      # (It's likely we'll want some hardware-specific stuff for Jaunty as well.)
171      if lspci -n|grep -q 1002:94c1 && ! grep -q radeonhd /etc/X11/xorg.conf ; then
172        DEBIAN_FRONTEND=noninteractive aptitude -y install xserver-xorg-video-radeonhd
173        cat >> /etc/X11/xorg.conf <<EOF
[23460]174Section "Device"
175        Identifier "Configured Video Device"
176        Driver "radeonhd"
177EndSection
178EOF
[23874]179      fi
[23476]180    fi
[23460]181  fi
182else
183  output "Press return to begin or control-C to abort"
184  read dummy
185fi
186
[23093]187output "Installing lsb-release to determine system type"
188aptitude -y install lsb-release
189distro=`lsb_release -cs`
190case $distro in
[23591]191etch|lenny|squeeze)
[23093]192  ;;
[23753]193hardy|intrepid|jaunty)
[23093]194  ubuntu=yes
195  ;;
196*)
197  error "Your machine seems to not be running a current Debian/Ubuntu release."
[23492]198  error "If you believe you are running a current release, contact debathena@mit.edu"
199  exit 1
[23093]200  ;;
201esac
202
[23492]203output "Adding the Debathena repository to the apt sources"
204output "(This may cause the update manager to claim new upgrades are available."
205output "Ignore them until this script is complete.)"
[23093]206if [ -d /etc/apt/sources.list.d ]; then
207  sourceslist=/etc/apt/sources.list.d/debathena.list
208else
[23492]209  # dapper is the only "current" platform that doesn't support sources.list.d
[23093]210  sourceslist=/etc/apt/sources.list
211fi
212
213if [ ! -e "$sourceslist" ] || ! grep -q debathena "$sourceslist"; then
214  if [ -e "$sourceslist" ]; then
215    echo "" >> $sourceslist
216  fi
[23517]217  echo "deb http://debathena.mit.edu/apt $distro debathena debathena-config debathena-system openafs" >> $sourceslist
218  echo "deb-src http://debathena.mit.edu/apt $distro debathena debathena-config debathena-system openafs" >> $sourceslist
[23093]219fi
220
221if [ "$ubuntu" = "yes" ]; then
222  output "Making sure the universe repository is enabled"
223  sed -i 's,^# \(deb\(\-src\)* http://archive.ubuntu.com/ubuntu [[:alnum:]]* universe\)$,\1,' /etc/apt/sources.list
224fi
225
[23492]226output "Downloading the Debathena archive signing key"
[23831]227if ! wget -N http://debathena.mit.edu/apt/debathena-archive-keyring.asc ; then
[23492]228  error "Download failed; terminating."
[23093]229  exit 1
230fi
[23817]231echo "6334cf7272423247f3693a3fef771c8274860b26  ./debathena-archive-keyring.asc" | \
[23093]232  sha1sum -c
[23500]233apt-key add debathena-archive-keyring.asc
234rm ./debathena-archive-keyring.asc
[23093]235
236apt-get update
237
238modules_want=$(dpkg-query -W -f '${Source}\t${Package}\n' 'linux-image-*' | \
239 sed -nre 's/^linux-(meta|latest[^\t]*)\tlinux-image-(.*)$/openafs-modules-\2/p')
240modules=
241for m in $modules_want; do
242  aptitude show $m > /dev/null && modules="$modules $m"
243done
244
245if [ -z "$modules" ]; then
246  error "An OpenAFS modules metapackage for your kernel is not available."
[23492]247  error "Please use the manual installation instructions at"
248  error "http://debathena.mit.edu/beta/install"
249  error "You will need to compile your own AFS modules as described at:"
250  error "http://debathena.mit.edu/beta/troubleshooting#openafs-custom"
251  exit 1
[23093]252fi
253
254output "Installing OpenAFS kernel metapackage"
255apt-get -y install $modules
256
[23187]257# Use the noninteractive frontend to install the main package.  This
258# is so that AFS and Zephyr don't ask questions of the user which
259# debathena packages will later stomp on anyway.
[23492]260output "Installing main Debathena metapackage $mainpackage"
[23460]261
[23187]262DEBIAN_FRONTEND=noninteractive aptitude -y install "$mainpackage"
263
264# This package is relatively small so it's not as important, but allow
265# critical questions to be asked.
266if [ yes = "$dev" ]; then
267  output "Installing debathena-build-depends"
268  DEBIAN_PRIORITY=critical aptitude -y install debathena-build-depends
269fi
270
271# Use the default front end and allow questions to be asked; otherwise
272# Java will fail to install since it has to present its license.
273if [ yes = "$csoft" ]; then
[23247]274  output "Installing debathena-extra-software"
275  DEBIAN_PRIORITY=critical aptitude -y install debathena-extra-software
[23187]276fi
[23460]277if [ yes = "$tsoft" ]; then
278  output "Installing debathena-thirdparty"
279  DEBIAN_PRIORITY=critical aptitude -y install debathena-thirdparty
280fi
[23910]281
282# Post-install cleanup for cluster systems.
283if [ cluster = "$category" ] ; then
284  # Force an /etc/adjtime entry so there's no confusion about whether the
285  # hardware clock is UTC or local.
286  echo "Setting hardware clock to UTC."
287  hwclock --systohc --utc
288fi
Note: See TracBrowser for help on using the repository browser.