diff options
author | jkh <jkh@FreeBSD.org> | 1995-01-14 07:41:52 +0000 |
---|---|---|
committer | jkh <jkh@FreeBSD.org> | 1995-01-14 07:41:52 +0000 |
commit | e84a47a834813d4827f3c7380ade661ec5a44e2d (patch) | |
tree | dbf8cab2c7d79691e8d537f1498fa9d2d0a6b872 | |
parent | 65615239a417627aa3b9420098fd2a4788101684 (diff) | |
download | FreeBSD-src-e84a47a834813d4827f3c7380ade661ec5a44e2d.zip FreeBSD-src-e84a47a834813d4827f3c7380ade661ec5a44e2d.tar.gz |
Initial revision
-rwxr-xr-x | release/scripts/adduser.sh | 183 | ||||
-rw-r--r-- | release/scripts/extract_bin.sh | 23 | ||||
-rw-r--r-- | release/scripts/extract_compat1x.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_dict.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_games.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_info.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_manpages.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_proflibs.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_secure.sh | 8 | ||||
-rw-r--r-- | release/scripts/extract_src.sh | 8 | ||||
-rw-r--r-- | release/scripts/instdist.sh | 565 | ||||
-rw-r--r-- | release/scripts/miscfuncs.sh | 140 | ||||
-rw-r--r-- | release/scripts/mkchecksums.sh | 25 | ||||
-rw-r--r-- | release/scripts/mkxf86extract.sh | 61 | ||||
-rw-r--r-- | release/scripts/netinst.sh | 208 |
15 files changed, 1269 insertions, 0 deletions
diff --git a/release/scripts/adduser.sh b/release/scripts/adduser.sh new file mode 100755 index 0000000..3ccd700 --- /dev/null +++ b/release/scripts/adduser.sh @@ -0,0 +1,183 @@ +#!/stand/sh +# +# Written: November 6th, 1994 +# Copyright (C) 1994 by Michael Reifenberger +# +# Permission to copy or use this software for any purpose is granted +# provided that this message stay intact, and at this location (e.g. no +# putting your name on top after doing something trivial like reindenting +# it, just to make it look like you wrote it!). + +######################## +# First set some globals +startuid=1000; +startgid=1000; +gname=guest +uname=guest +shell="/bin/csh" +needgentry="NO" + +. /stand/miscfuncs.sh + +######################### +# Some Functions we need. +# +########################### +# Show the User all options +usage() { +message " +adduser -h Prints help +adduser -i For interactively adding users + +Command line options: +adduser [-u UserName][-g GroupName][-s Shell]" + exit 1 +} +########################## +# Get the next free UserID +getuid() { +local xx=$startuid; +uid=$startuid; +for i in `cut -f 3 -d : /etc/master.passwd | cut -c 2- | sort -n`; do + if [ $i -lt $xx ]; then + elif [ $i -eq $xx ]; then xx=`expr $xx + 1` + else uid=$xx; return 0 + fi +done +} +####################################################### +# Get the next free GroupID or the GroupID of GroupName +getgid() { +local xx=$startgid; +gid=$startgid; +needgentry="YES" +if grep -q \^$gname: /etc/group; then + gid=`grep \^$gname: /etc/group | cut -f 3 -d:` + needgentry="NO" +else + for i in `cut -f 3 -d : /etc/group | cut -c 2- | sort -n`; do + if [ $i -lt $xx ]; then + elif [ $i -eq $xx ]; then xx=`expr $xx + 1` + else gid=$xx; return 0 + fi + done +fi +} +########################################## +# Ask the User interactively what he wants +interact() { +dialog --title "Add New User Name" --clear \ +--inputbox "Please specify a login name for the user:\n\ +Hit [return] for a default of <$uname>" -1 -1 2> /tmp/i.$$ +ret=$? +case $ret in + 0) + if [ x`cat /tmp/i.$$` != x ]; then + uname=`cat /tmp/i.$$`; fi;; + 1|255) + exit 1;; +esac +if grep -q \^$uname: /etc/master.passwd; then + error "Username $uname already exists." + exit 1 +fi +dialog --title "Group Name" --clear \ +--inputbox "Which group should $uname belong to?\n\ +Hit [return] for default of <$gname>" -1 -1 2> /tmp/i.$$ +ret=$? +case $ret in + 0) + if [ x`cat /tmp/i.$$` != x ]; then + gname=`cat /tmp/i.$$`; fi;; + 1|255) + exit 1;; +esac +dialog --title "Login Shell" --clear \ +--inputbox "Please specify which login shell\n<$uname> should use\n\ +Hit [return] for default of <$shell>" -1 -1 2> /tmp/i.$$ +ret=$? +case $ret in + 0) + if [ x`cat /tmp/i.$$` != x ]; then + shell=`cat /tmp/i.$$`; fi;; + 1|255) + exit 1;; +esac +############## +# Remove junk +rm -f /tmp/i.$$ +} + +######### +# START # +######### + +################################### +# Parse the commandline for options +set -- `getopt hiu:g:s: $*` +if [ $? != 0 ]; then + usage +fi +for i; do + case "$i" + in + -h) + usage; shift;; + -i) + interact; shift; iflag=yes; break;; + -u) + uname=$2; shift; shift;; + -g) + gname=$2; shift; shift;; + -s) + shell=$2; shift; shift;; + --) + shift; break;; +# *) +# usage; shift;; + esac +done +##################### +# This is no Edituser +if grep -q \^$uname: /etc/master.passwd; then + error "This user already exists in the master password file.\n +Use 'chpass' to edit an existing user rather than adduser.." + exit 1; +fi + +############### +# Get Free ID's +getuid; +getgid; +################### +# Only if necessary +if [ $needgentry = "YES" ]; then + echo "$gname:*:$gid:$uname" >> /etc/group +fi +################ +# Make /home BTW +mkdir -p -m755 /home/$uname +if [ ! -d /home/$uname ]; then + error "Could not create /home/$uname" + exit 1 +else + for xx in /usr/share/skel/*; do + cp $xx /home/$uname/.`basename $xx | cut -f 2 -d .` + done +fi +##################### +# Make the User happy +if [ ! -x $shell ]; then + message "There is no <$shell> shell, using /bin/sh instead.\n + If you wish, you can change this choice later with 'chpass'" + shell="/bin/csh" +elif ! grep -q $shell /etc/shells; then + echo $shell >> /etc/shells + echo "<$shell> added to /etc/shells" +fi +echo "$uname:*:$uid:$gid::0:0:User &:/home/$uname:$shell" >> /etc/master.passwd +pwd_mkdb /etc/master.passwd +chown -R $uname.$gname /home/$uname +chmod -R 644 /home/$uname +chmod 755 /home/$uname +passwd $uname diff --git a/release/scripts/extract_bin.sh b/release/scripts/extract_bin.sh new file mode 100644 index 0000000..f92923d --- /dev/null +++ b/release/scripts/extract_bin.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +# Temporary kludge for pathological bindist. +if [ -f $DDIR/etc/myname ]; then + cp $DDIR/etc/hosts $DDIR/etc/myname $DDIR/stand/etc +fi +if [ -f $DDIR/etc/defaultrouter ]; then + cp $DDIR/etc/defaultrouter $DDIR/stand/etc +fi +echo; echo "Extracting bindist, please wait." +cat bindist.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) +if [ -f $DDIR/stand/etc/myname ]; then + # Add back what the bindist nuked. + cp $DDIR/stand/etc/myname $DDIR/etc + cat $DDIR/stand/etc/hosts >> $DDIR/etc/hosts +fi +if [ -f $DDIR/stand/etc/defaultrouter ]; then + cp $DDIR/stand/etc/defaultrouter $DDIR/etc +fi +chmod 1777 /tmp diff --git a/release/scripts/extract_compat1x.sh b/release/scripts/extract_compat1x.sh new file mode 100644 index 0000000..4cdc2a4 --- /dev/null +++ b/release/scripts/extract_compat1x.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=compat1x_tgz +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_dict.sh b/release/scripts/extract_dict.sh new file mode 100644 index 0000000..d14877d --- /dev/null +++ b/release/scripts/extract_dict.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=dict +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_games.sh b/release/scripts/extract_games.sh new file mode 100644 index 0000000..1dc6cff --- /dev/null +++ b/release/scripts/extract_games.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=games +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_info.sh b/release/scripts/extract_info.sh new file mode 100644 index 0000000..003d363 --- /dev/null +++ b/release/scripts/extract_info.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=info +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_manpages.sh b/release/scripts/extract_manpages.sh new file mode 100644 index 0000000..ce4ef68 --- /dev/null +++ b/release/scripts/extract_manpages.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=manpages +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_proflibs.sh b/release/scripts/extract_proflibs.sh new file mode 100644 index 0000000..e6f4d05 --- /dev/null +++ b/release/scripts/extract_proflibs.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=proflibs +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_secure.sh b/release/scripts/extract_secure.sh new file mode 100644 index 0000000..76958b8 --- /dev/null +++ b/release/scripts/extract_secure.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=secure +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/extract_src.sh b/release/scripts/extract_src.sh new file mode 100644 index 0000000..4cdc2a4 --- /dev/null +++ b/release/scripts/extract_src.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# $Id: extract.sh,v 1.17 1994/12/04 03:41:18 jkh Exp $ +PATH=/stand:$PATH +DDIR=/ + +DIST=compat1x_tgz +echo "Extracting ${DIST}" +cat ${DIST}.?? | gzip -c -d | ( cd $DDIR; cpio -H tar -imdu ) diff --git a/release/scripts/instdist.sh b/release/scripts/instdist.sh new file mode 100644 index 0000000..d774f4c --- /dev/null +++ b/release/scripts/instdist.sh @@ -0,0 +1,565 @@ +#!/stand/sh +# +# instdist - Install a distribution from some sort of media. +# +# Written: November 11th, 1994 +# Copyright (C) 1994 by Jordan K. Hubbard +# +# Permission to copy or use this software for any purpose is granted +# provided that this message stay intact, and at this location (e.g. no +# putting your name on top after doing something trivial like reindenting +# it, just to make it look like you wrote it!). +# +# $Id: instdist.sh,v 1.51 1995/01/12 16:18:18 jkh Exp $ + +if [ "${_INSTINST_SH_LOADED_}" = "yes" ]; then + return 0 +else + _INSTINST_SH_LOADED_=yes +fi + +# Grab the miscellaneous functions. +. /stand/miscfuncs.sh + +# Set the initial state for media installation. +media_set_defaults() +{ + MEDIA_TYPE="" + MEDIA_DEVICE="" + MEDIA_DISTRIBUTIONS="" + DISTRIB_SUBDIR="" + TMPDIR="" + FTP_PATH="" + NFS_PATH="" +} + +# Set the installation media to undefined. +media_reset() +{ + MEDIA_DEVICE="" + MEDIA_TYPE="" + MEDIA_DISTRIBUTIONS="" + FTP_PATH="" + NFS_PATH="" + NFS_OPTIONS="" +} + +# Set the location of our temporary unpacking directory. +media_set_tmpdir() +{ + if [ "X${TMPDIR}" != "X" ]; then + return + fi + + TITLE="Choose temporary directory" + TMPDIR="/usr/tmp" + DEFAULT_VALUE="${TMPDIR}" + if ! input \ +"Please specify the name of a directory containing enough free +space to hold the temporary files for this distribution. At +minimum, a binary distribution will require around 21MB of +temporary space. At maximum, a srcdist may take 30MB or more. +If the directory you specify does not exist, it will be created +for you. If you do not have enough free space to hold both the +packed and unpacked distribution files, consider using the NFS +or CDROM installation methods as they require no temporary +storage."; then return 1; fi + TMPDIR=${ANSWER} + mkdir -p ${TMPDIR} + return 0 +} + +media_cd_tmpdir() +{ + if ! cd ${TMPDIR} > /dev/ttyv1 2>&1; then + error "No such file or directory for ${TMPDIR}, sorry! Please fix this and try again." + return 1 + fi +} + +media_rm_tmpdir() +{ + cd / + if [ "X${NO_ASK_REMOVE}" != "X" ]; then + rm -rf ${_TARGET} + return + fi + if [ -d ${TMPDIR}/${MEDIA_DISTRIBUTION} ]; then + _TARGET=${TMPDIR}/${MEDIA_DISTRIBUTION} + else + _TARGET=${TMPDIR} + fi + if dialog --title "Delete contents?" --yesno \ + "Do you wish to delete ${_TARGET}?" -1 -1; then + rm -rf ${_TARGET} + if dialog --title "Future Confirmation?" --yesno \ + "Do you wish to suppress this dialog in the future?" -1 -1; + then + NO_ASK_REMOVE=yes + fi + fi +} + +media_select_ftp_site() +{ + dialog --title "Please specify an ftp site" --menu \ +"FreeBSD is distributed from a number of sites on the Internet.\n\ +Please select the site closest to you or \"other\" if you'd like\n\ +to specify another choice. Also note that not all sites carry\n\ +every possible distribution! Distributions other than the basic\n\ +binary set are only guaranteed to be available from the Primary site.\n\ +If the first site selected doesn't respond, try one of the alternates.\n\ +Please use arrow keys to scroll through all items." \ +-1 -1 5 \ + "Primary" "ftp.freebsd.org" \ + "Secondary" "freefall.cdrom.com" \ + "Australia" "ftp.physics.usyd.edu.au" \ + "Finland" "nic.funet.fi" \ + "France" "ftp.ibp.fr" \ + "Germany" "ftp.uni-duisburg.de" \ + "Israel" "orgchem.weizmann.ac.il" \ + "Japan" "ftp.sra.co.jp" \ + "Japan-2" "ftp.mei.co.jp" \ + "Japan-3" "ftp.waseda.ac.jp" \ + "Japan-4" "ftp.pu-toyama.ac.jp" \ + "Japan-5" "ftpsv1.u-aizu.ac.jp" \ + "Japan-6" "tutserver.tutcc.tut.ac.jp" \ + "Japan-7" "ftp.ee.uec.ac.jp" \ + "Korea" "ftp.cau.ac.kr" \ + "Netherlands" "ftp.nl.net" \ + "Russia" "ftp.kiae.su" \ + "Taiwan" "netbsd.csie.nctu.edu.tw" \ + "Thailand" "ftp.nectec.or.th" \ + "UK" "ftp.demon.co.uk" \ + "UK-2" "src.doc.ic.ac.uk" \ + "UK-3" "unix.hensa.ac.uk" \ + "USA" "ref.tfs.com" \ + "USA-2" "ftp.dataplex.net" \ + "USA-3" "kryten.atinc.com" \ + "USA-4" "ftp.neosoft.com" \ + "other" "None of the above. I want to specify my own." \ + 2> ${TMP}/menu.tmp.$$ + RETVAL=$? + ANSWER=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then return 1; fi + case ${ANSWER} in + Primary) FTP_PATH="ftp://ftp.freebsd.org/pub/FreeBSD/${DISTNAME}" ;; + Secondary) FTP_PATH="ftp://freefall.cdrom.com/pub/FreeBSD/${DISTNAME}" ;; + Australia) FTP_PATH="ftp://ftp.physics.usyd.edu.au/FreeBSD/${DISTNAME}" ;; + Finland) FTP_PATH="ftp://nic.funet.fi/pub/unix/FreeBSD/${DISTNAME}" ;; + France) FTP_PATH="ftp://ftp.ibp.fr/pub/FreeBSD/${DISTNAME}" ;; + Germany) FTP_PATH="ftp://ftp.uni-duisburg.de/pub/unix/FreeBSD/${DISTNAME}" ;; + Israel) FTP_PATH="ftp://orgchem.weizmann.ac.il/pub/FreeBSD-${DISTNAME}" ;; + Japan) FTP_PATH="ftp://ftp.sra.co.jp/pub/os/FreeBSD/distribution/${DISTNAME}" ;; + Japan-2) FTP_PATH="ftp://ftp.mei.co.jp/free/PC-UNIX/FreeBSD/${DISTNAME}" ;; + Japan-3) FTP_PATH="ftp://ftp.waseda.ac.jp/pub/FreeBSD/${DISTNAME}" ;; + Japan-4) FTP_PATH="ftp://ftp.pu-toyama.ac.jp/pub/FreeBSD/${DISTNAME}" ;; + Japan-5) FTP_PATH="ftp://ftpsv1.u-aizu.ac.jp/pub/os/FreeBSD/${DISTNAME}" ;; + Japan-6) FTP_PATH="ftp://tutserver.tutcc.tut.ac.jp/FreeBSD/FreeBSD-${DISTNAME}" ;; + Japan-7) FTP_PATH="ftp://ftp.ee.uec.ac.jp/pub/os/FreeBSD.other/FreeBSD-${DISTNAME}" ;; + Korea) FTP_PATH="ftp://ftp.cau.ac.kr/pub/FreeBSD/${DISTNAME}" ;; + Netherlands) FTP_PATH="ftp://ftp.nl.net/pub/os/FreeBSD/${DISTNAME}" ;; + Russia) FTP_PATH="ftp://ftp.kiae.su/FreeBSD/${DISTNAME}" ;; + Taiwan) FTP_PATH="ftp://netbsd.csie.nctu.edu.tw/pub/FreeBSD/${DISTNAME}" ;; + Thailand) FTP_PATH="ftp://ftp.nectec.or.th/pub/FreeBSD/${DISTNAME}" ;; + UK) FTP_PATH="ftp://ftp.demon.co.uk/pub/BSD/FreeBSD/${DISTNAME}" ;; + UK-2) FTP_PATH="ftp://src.doc.ic.ac.uk/packages/unix/FreeBSD/${DISTNAME}" ;; + UK-3) FTP_PATH="ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/${DISTNAME}" ;; + USA) FTP_PATH="ftp://ref.tfs.com/pub/FreeBSD/${DISTNAME}" ;; + USA-2) FTP_PATH="ftp://ftp.dataplex.net/pub/FreeBSD/${DISTNAME}" ;; + USA-3) FTP_PATH="ftp://kryten.atinc.com/pub/FreeBSD/${DISTNAME}" ;; + USA-4) FTP_PATH="ftp://ftp.neosoft.com/systems/FreeBSD/${DISTNAME}" ;; + other) + TITLE="FTP Installation Information" + DEFAULT_VALUE="${FTP_PATH}" + if ! input \ +"Please specify the machine and parent directory location of the +distribution you wish to load. This should be either a \"URL style\" +specification (e.g. ftp://ftp.freeBSD.org/pub/FreeBSD/) or simply +the name of a host to connect to. If only a host name is specified, +the installation assumes that you will properly connect and \"mget\" +the files yourself."; then return 1; fi + FTP_PATH=${ANSWER} + ;; + esac +} + +media_extract_dist() +{ + if [ ! -f do_cksum.sh ]; then + if [ -f ${MEDIA_DISTRIBUTION}/do_cksum.sh ]; then + cd ${MEDIA_DISTRIBUTION} + fi + fi + if [ -f do_cksum.sh ]; then + message "Verifying checksums for distribution. Please wait!" + if sh ./do_cksum.sh; then + if [ -f extract.sh ]; then + message "Extracting ${MEDIA_DISTRIBUTION} distribution. Please wait!" + if [ -f ./is_interactive ]; then + sh ./extract.sh + else + sh ./extract.sh < /dev/ttyv1 > /dev/ttyv1 2>&1 + fi + dialog --title "Extraction Complete" --msgbox "Please press return to continue" -1 -1 + else + error "No installation script found!" + fi + else + error "Checksum error(s) found. Please check media!" + fi + else + error "Improper distribution. No checksum script found!" + media_reset + fi +} + +media_install_set() +{ + # check to see if we already have it + if [ -f ${TMPDIR}/${MEDIA_DISTRIBUTION}/extract.sh ]; then + cd ${TMPDIR}/${MEDIA_DISTRIBUTION} + media_extract_dist + cd / + return + fi + case ${MEDIA_TYPE} in + cdrom|nfs|ufs|doshd) + if ! cd ${MEDIA_DEVICE}/${MEDIA_DISTRIBUTION} > /dev/ttyv1 2>&1; then + error "Unable to cd to ${MEDIA_DEVICE}/${MEDIA_DISTRIBUTION} directory." + media_reset + else + media_extract_dist + cd / + fi + return + ;; + + tape) + if ! media_set_tmpdir; then return; fi + if ! media_cd_tmpdir; then return; fi + if dialog --title "Please mount tape for ${MEDIA_DEVICE}." \ + --yesno "Please enter the next tape and select\n<Yes> to continue or <No> if finished" -1 -1; then + message "Loading distribution from ${MEDIA_DEVICE}.\nUse ALT-F2 to see output, ALT-F1 to return." + if [ "${MEDIA_DEVICE}" = "ftape" ]; then + progress "${FT_CMD} | ${TAR_CMD} ${TAR_FLAGS} -" + ${FT_CMD} | ${TAR_CMD} ${TAR_FLAGS} - > /dev/ttyv1 2>&1 + else + progress "${TAR_CMD} ${TAR_FLAGS} ${MEDIA_DEVICE}" + ${TAR_CMD} ${TAR_FLAGS} ${MEDIA_DEVICE} > /dev/ttyv1 2>&1 + fi + fi + if [ -d ${MEDIA_DISTRIBUTION} ]; then cd ${MEDIA_DISTRIBUTION}; fi + media_extract_dist + media_rm_tmpdir + ;; + + dosfd) + if ! media_set_tmpdir; then return; fi + if ! media_cd_tmpdir; then return; fi + COPYING="yes" + progress "Preparing to extract from DOS floppies" + while [ "${COPYING}" = "yes" ]; do + progress "Asking for DOS diskette" + if dialog --title "Insert distribution diskette" \ + --yesno "Please enter the next diskette and select\n<Yes> to continue or <No> if finished" -1 -1; then + umount ${MNT} > /dev/null 2>&1 + if ! mount_msdos -o ro ${MEDIA_DEVICE} ${MNT}; then + error "Unable to mount floppy! Please correct." + else + message "Loading distribution from ${MEDIA_DEVICE}.\nUse ALT-F2 to see output, ALT-F1 to return." + ( ${TAR_CMD} -cf - -C ${MNT} . | ${TAR_CMD} -xvf - ) >/dev/ttyv1 2>&1 + umount ${MNT} + fi + else + COPYING="no" + fi + done + media_extract_dist + media_rm_tmpdir + return + ;; + + ftp) + if ! media_set_tmpdir; then return; fi + if ! media_cd_tmpdir; then return; fi + if ! echo ${MEDIA_DEVICE} | grep -q -v 'ftp://'; then + message "Fetching distribution using ncftp.\nUse ALT-F2 to see output, ALT-F1 to return." + mkdir -p ${MEDIA_DISTRIBUTION} + if ! ncftp ${MEDIA_DEVICE}/${MEDIA_DISTRIBUTION}/* < /dev/null > /dev/ttyv1 2>&1; then + error "Couldn't fetch ${MEDIA_DISTRIBUTION} distribution from\n${MEDIA_DEVICE}!" + else + media_extract_dist + fi + else + dialog --clear + ftp ${MEDIA_DEVICE} + dialog --clear + media_extract_dist + fi + media_rm_tmpdir + return + ;; + esac +} + +media_select_distribution() +{ + MEDIA_DISTRIBUTIONS="" + while [ "${MEDIA_DISTRIBUTIONS}" = "" ]; do + + dialog --title "Please specify a distribution to load" \ + --checklist \ +"FreeBSD is separated into a number of distributions for ease of\n\ +installation. With repeated passes through this screen, you'll be\n\ +given the chance to load one or all of them. Mandatory distributions\n\ +MUST be loaded! Please also note that the secrdist is NOT FOR EXPORT\n\ +from the U.S. Please don't endanger U.S. ftp sites by getting it\n\ +illegally, thanks! When finished, select <Cancel>." \ +-1 -1 10 \ + "?diskfree" "How much disk space do I have free?" OFF \ + "bindist" "Binary base files (mandatory - ${BINSIZE})" ON \ + "games" "Games and other frivolities (optional - ${GAMESIZE})" OFF \ + "manpages" "Manual pages (optional - ${MANSIZE})" OFF \ + "proflibs" "Profiled libraries (optional - ${PROFSIZE})" OFF \ + "dict" "Spelling checker dictionary files (optional - ${DICTSIZE})" OFF \ + "srcdist" "Sources for everything but DES (optional - ${SRCSIZE})" OFF \ + "secrdist" "DES encryption code (and sources) (optional - ${SECRSIZE})" OFF \ + "compat1xdist" "FreeBSD 1.x binary compatability (optional - ${COMPATSIZE})" OFF \ + "XFree86-3.1" "The XFree86 3.1 distribution (optional - ${X11SIZE})" OFF \ + 2> ${TMP}/menu.tmp.$$ + RETVAL=$? + MEDIA_DISTRIBUTIONS=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then return 1; fi + if [ "${MEDIA_DISTRIBUTIONS}" = "?diskfree" ]; then + if df -k > ${TMP}/df.out; then + dialog --title "How much free space do I have?" \ + --textbox ${TMP}/df.out 15 76 + else + error "Couldn't get disk usage information! :-(" + fi + MEDIA_DISTRIBUTIONS="" + fi + done +} + +media_get_possible_subdir() +{ + if [ -f ${MNT}/${MEDIA_DISTRIBUTION}/extract.sh ]; then return; fi + DEFAULT_VALUE="${DISTRIB_SUBDIR}" + TITLE="Distribution Subdirectory" + if input \ +"If the distributions are in a subdirectory of the mount point, +please enter it here (no leading slash - it should be relative +to the mount point). The directory you enter should be the +*parent* directory of any distribution subdirectories."; then + if [ "${ANSWER}" != "" ]; then + MEDIA_DEVICE=${MEDIA_DEVICE}/${ANSWER} + DISTRIB_SUBDIR=${ANSWER} + fi + else + return 1 + fi +} + +# Get values into $MEDIA_TYPE and $MEDIA_DEVICE. Call network initialization +# if necessary. +media_chose() +{ + while [ "${MEDIA_DEVICE}" = "" ]; do + + dialog --title "Installation From" \ +--menu \ +"Before installing a distribution, you need to chose and/or configure\n\ +a method of installation. Please pick from one of the following options.\n\ +If none of the listed options works for you, then your best bet may be to\n\ +simply press ESC twice to get a subshell and proceed manually on your own.\n\ +If you are already finished with the installation process, select cancel\n\ +to proceed." -1 -1 7 \ + "?Kern" "Please show me the kernel boot messages again!" \ + "Tape" "Load distribution from SCSI, QIC-02 or floppy tape" \ + "CDROM" "Load distribution from SCSI or Mitsumi CDROM" \ + "DOS" "Load from DOS floppies or a DOS hard disk partition" \ + "FTP" "Load distribution using FTP" \ + "UFS" "Load the distribution from existing UFS partition" \ + "NFS" "Load the distribution over NFS" 2> ${TMP}/menu.tmp.$$ + RETVAL=$? + CHOICE=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then return 1; fi + + case ${CHOICE} in + ?Kern) + if dmesg > ${TMP}/dmesg.out; then + dialog --title "Kernel boot message output" \ + --textbox ${TMP}/dmesg.out 22 76 + else + error "Couldn't get dmesg information! :-(" + fi + ;; + + Tape) + dialog --title "Choose Tape Type" --menu \ +"Which type of tape drive do you have attached to your \n\ +system? FreeBSD supports the following types:\n" -1 -1 3 \ + "SCSI" "SCSI tape drive attached to supported SCSI controller" \ + "QIC-02" "QIC-02 tape drive (Colorado Jumbo, etc)" \ + "floppy" "Floppy tape drive (QIC-40/QIC-80)" 2> ${TMP}/menu.tmp.$$ + RETVAL=$? + CHOICE=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then continue; fi + MEDIA_TYPE=tape; + case ${CHOICE} in + SCSI) + DEFAULT_VALUE="/dev/rst0" + TITLE="SCSI Tape Device" + if input \ +"If you only have one tape drive, simply press return - the +default value should be correct. Otherwise, enter the +correct value and press return."; then + MEDIA_DEVICE=${ANSWER} + fi + ;; + + QIC-02) + DEFAULT_VALUE="/dev/rwt0" + TITLE="QIC-02 Tape Device" + if input \ +"If you only have one tape drive, simply press return - the +default value should be correct. Otherwise, enter the +correct value and press return."; then + MEDIA_DEVICE=${ANSWER} + fi + ;; + + floppy) + MEDIA_DEVICE=ftape + ;; + esac + ;; + + CDROM) + dialog --title "Choose CDROM Type" --menu \ +"Which type of CDROM drive do you have attached to your \n\ +system? FreeBSD supports the following types:\n" -1 -1 2 \ + "SCSI" "SCSI CDROM drive attached to supported SCSI controller" \ + "Mitsumi" "Mitsumi CDROM drive" \ + 2> ${TMP}/menu.tmp.$$ + RETVAL=$? + CHOICE=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then continue; fi + MEDIA_TYPE=cdrom; + case ${CHOICE} in + SCSI) + MEDIA_DEVICE=/dev/cd0a + ;; + + Mitsumi) + MEDIA_DEVICE=/dev/mcd0a + ;; + esac + umount ${MNT} > /dev/null 2>&1 + if ! mount_cd9660 ${MEDIA_DEVICE} ${MNT} > /dev/ttyv1 2>&1; then + error "Unable to mount ${MEDIA_DEVICE} on ${MNT}" + MEDIA_DEVICE="" + else + MEDIA_DEVICE=${MNT} + media_get_possible_subdir + return 0 + fi + ;; + + DOS) + DEFAULT_VALUE="/dev/fd0" + if input \ +"Please specify the device pointing at your DOS partition or +floppy media. For a hard disk, this might be something like +/dev/wd0h or /dev/sd0h (as identified in the disklabel editor). +For the "A" floppy drive, it's /dev/fd0, for the "B" floppy +drive it's /dev/fd1\n"; then + MEDIA_DEVICE=${ANSWER} + if echo ${MEDIA_DEVICE} | grep -q -v fd; then + umount ${MNT} > /dev/null 2>&1 + if ! mount_msdos ${MEDIA_DEVICE} ${MNT} > /dev/ttyv1 2>&1; then + error "Unable to mount ${MEDIA_DEVICE}" + MEDIA_DEVICE="" + else + MEDIA_TYPE=doshd + MEDIA_DEVICE=${MNT} + media_get_possible_subdir + return 0 + fi + else + MEDIA_TYPE=dosfd + return 0 + fi + fi + ;; + + FTP) + if ! network_setup; then continue; fi + if media_select_ftp_site; then + MEDIA_TYPE=ftp + MEDIA_DEVICE=${FTP_PATH} + return 0 + fi + ;; + + NFS) + if ! network_setup; then continue; fi + TITLE="NFS Installation Information" + DEFAULT_VALUE="${NFS_PATH}" + if ! input \ +"Please specify a machine and directory mount point for the +distribution you wish to load. This must be in machine:dir +format (e.g. zooey:/a/FreeBSD/${DISTNAME}). The remote +directory *must* be be exported to your machine (or globally) +for this to work!\n"; then continue; fi + NFS_PATH=${ANSWER} + + DEFAULT_VALUE="${NFS_OPTIONS}" + if input \ +"Do you wish to specify any options to NFS? If you're installing +from a Sun 4.1.x system, you may wish to specify \`-o resvport' to send +NFS requests over a privileged port (use this if you get nasty +\`\`credential too weak'' errors from the server). When using a slow +ethernet card or network link, \`-o -r=1024,-w=1024' may also prove helpful. +Options, if any, should be separated by commas."; then + if [ "${ANSWER}" != "" ]; then + NFS_OPTIONS="${ANSWER}" + fi + fi + MEDIA_TYPE=nfs + umount ${MNT} > /dev/null 2>&1 + if ! mount_nfs ${NFS_OPTIONS} ${NFS_PATH} ${MNT} > /dev/ttyv1 2>&1; then + error "Unable to mount ${NFS_PATH}" + else + message "${NFS_PATH} mounted successfully" + MEDIA_DEVICE=${MNT} + media_get_possible_subdir + return 0 + fi + ;; + + UFS) + dialog --title "User Intervention Requested" --msgbox " +Please mount the filesystem you wish to use somewhere convenient and +exit the shell when you're through. I'll ask you for the location +of the distribution's parent directory when we come back." -1 -1 + dialog --clear + /stand/sh + TITLE="Please enter directory" + DEFAULT_VALUE="${MNT}" + if input "Ok, now give me the full pathname of the parent directorys for the distribution(s)."; then + MEDIA_TYPE=ufs + MEDIA_DEVICE=${ANSWER} + return 0 + fi + ;; + esac + done +} diff --git a/release/scripts/miscfuncs.sh b/release/scripts/miscfuncs.sh new file mode 100644 index 0000000..3667ba8 --- /dev/null +++ b/release/scripts/miscfuncs.sh @@ -0,0 +1,140 @@ +#!/stand/sh +# +# miscfuncs - miscellaneous functions for the other distribution scripts. +# +# Written: November 15th, 1994 +# Copyright (C) 1994 by Jordan K. Hubbard +# +# Permission to copy or use this software for any purpose is granted +# provided that this message stay intact, and at this location (e.g. no +# putting your name on top after doing something trivial like reindenting +# it, just to make it look like you wrote it!). +# +# $Id: miscfuncs.sh,v 1.14 1995/01/12 10:34:37 jkh Exp $ + +if [ "${_MISCFUNCS_SH_LOADED_}" = "yes" ]; then + return 0 +else + _MISCFUNCS_SH_LOADED_=yes +fi + +PATH=/usr/bin:/usr/sbin:/bin:/sbin:/stand +export PATH + +# Keep this current with the distribution! +DISTNAME="2.0-950112-SNAP" + +# Express or Custom install? +INSTALL_TYPE="" + +# Flagrant guesses for now. These need to be hand-edited or, much better yet, +# automatically done as part of the release process. When that's the case, +# the hardwired constants will be replaced with tokens that get sed'd for +# the real sizes. +# +BINSIZE="40MB" +GAMESIZE="8MB" +MANSIZE="8MB" +PROFSIZE="4MB" +DICTSIZE="2MB" +SRCSIZE="120MB" +SECRSIZE="4MB" +COMPATSIZE="3MB" +X11SIZE="50MB" + +# Paths +ETC="/etc" +MNT="/mnt" +HOME=/; export HOME +TMP=/tmp + +# Commands and flags +FT_CMD="ft" +TAR_CMD="tar" +TAR_FLAGS="--unlink -xvf" +IFCONFIG_CMD="ifconfig" +ROUTE_CMD="route" +ROUTE_FLAGS="add default" +HOSTNAME_CMD="hostname" +SLATTACH_CMD="slattach" +SLATTACH_FLAGS="-l -a -s" +PPPD_CMD="pppd" +PPPD_FLAGS="crtscts defaultroute -ip -mn netmask $netmask" + +interrupt() +{ + dialog --clear --title "User Interrupt Requested" \ + --msgbox "\n ** Aborting the installation ** \n" -1 -1 + exit 0; +} + +# Handle the return value from a dialog, doing some pre-processing +# so that each client doesn't have to. +handle_rval() +{ + case $1 in + 0) + return 0 + ;; + 255) + PS1="subshell# " /stand/sh + ;; + *) + return 1 + ;; + esac +} + +# stick a progress message out on the other vty +progress() +{ + echo "Progress <$*>" > /dev/ttyv1 +} + +# A simple user-confirmation dialog. +confirm() +{ + dialog --title "User Confirmation" --msgbox "$*" -1 -1 +} + +# A simple message box dialog. +message() +{ + progress $* + dialog --title "Progress" --infobox "$*" -1 -1 +} + +# A simple error dialog. +error() +{ + echo "ERROR <$*>" > /dev/ttyv1 + dialog --title "Error!" --msgbox "$*" -1 -1 +} + +# Something isn't supported yet! :-( +not_supported() +{ + echo "<Feature not supported>" > /dev/ttyv1 + dialog --title "Sorry!" --msgbox \ +"This feature is not supported in the current version of the +installation tools. Barring some sort of fatal accident, we do +expect it to be in a later release. Please press RETURN to go on." -1 -1 +} + +# Get a string from the user +input() +{ + TITLE=${TITLE-"User Input Required"} + dialog --title "${TITLE}" \ + --inputbox "$*" -1 -1 "${DEFAULT_VALUE}" 2> ${TMP}/inputbox.tmp.$$ + if ! handle_rval $?; then rm -f ${TMP}/inputbox.tmp.$$; return 1; fi + ANSWER=`cat ${TMP}/inputbox.tmp.$$` + rm -f ${TMP}/inputbox.tmp.$$ +} + +# Ask a networking question +network_dialog() +{ + TITLE="Network Configuration" + if ! input "$*"; then return 1; fi +} diff --git a/release/scripts/mkchecksums.sh b/release/scripts/mkchecksums.sh new file mode 100644 index 0000000..d7ab1f5 --- /dev/null +++ b/release/scripts/mkchecksums.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# +# mkchecksums.sh - generate interactive checksum-checking script. +# Jordan Hubbard +# +# This script generates a cksum.sh script from a set of tarballs +# and should not be run by anyone but the release coordinator (there +# wouldn't be much point). +# +# Jordan +# $Id: mkchecksums.sh,v 1.2 1994/11/24 22:30:03 phk Exp $ +# + +# Remove any previous attempts. +rm -rf CKSUMS do_cksum.sh + +# First generate the CKSUMS file for the benefit of those who wish to +# use it in some other way. If we find out that folks aren't even using +# it, we should consider eliminating it at some point. The interactive +# stuff makes it somewhat superfluous. +cksum * > CKSUMS + +# Now generate a script for actually verifying the checksums. +awk 'BEGIN {print "rval=0"} { printf("if [ \"\`cksum %s%s%s\`\" != \"%s %s %s\" ]; then dialog --title Error --infobox \"Checksum error detected on %s!\" -1 -1; rval=1; fi\n", "\047", $3, "\047", $1, $2, $3, $3);} END {print "exit $rval"}' < CKSUMS > do_cksum.sh +chmod +x do_cksum.sh diff --git a/release/scripts/mkxf86extract.sh b/release/scripts/mkxf86extract.sh new file mode 100644 index 0000000..af3550f --- /dev/null +++ b/release/scripts/mkxf86extract.sh @@ -0,0 +1,61 @@ +#!/bin/sh +# +# mkextract - generate extract.sh +# Jordan Hubbard +# +# This script generates the extract.sh script from the current tarballs +# and should not be run by anyone but the release coordinator (there wouldn't +# be much point). +# +# Jordan + +BASEDIR=/usr/X11R6 +TARGETS=XFree86-3.1* +echo -n "Creating extract.sh.." +cat > extract.sh << DO_THE_FUNKY_CHICKEN +#!/bin/sh +# +# Don't edit me - I'm auto-generated by mkextract.sh! +# +if [ ! -f /usr/bin/tar ]; then + dialog --title "Error!" --msgbox "You must install the bindist before this distribution!" -1 -1 + exit 0 +fi + +dialog --title "XFree86 3.1 Installation" \ + --msgbox "Welcome to the XFree86 3.1 installation! You'll be asked +a series of annoying yes/no questions for each component of the +XFree86 distribution you wish to install. If you're not sure +whether or not you need some component, simply answer yes and +delete it later if it turns out you don't need it. This is +a little rough, yes, but I'm working on it! + +Comments on the XFree86 distribution to David Dawes +<dawes@FreeBSD.org> + +Comments on this install to Jordan Hubbard +<jkh@FreeBSD.org> + +Thanks!" -1 -1 +dialog --title "Read This First" --textbox README.FreeBSD 22 76 +DO_THE_FUNKY_CHICKEN + +for i in $TARGETS; do + abbrevname=`echo $i | sed -e 's/XFree86-3.1-//' -e 's/.tar.gz//'` + echo "if [ "${INSTALL_TYPE}" != "Express" ]; then if dialog --title \"Install Request\" --yesno \"Do you wish to install the ${abbrevname} distribution?\" -1 -1; then dialog --title \"Progress\" --infobox \"Installing $i\" -1 -1; tar --unlink -xzf $i -C /usr; fi; fi" >> extract.sh +done + +cat >> extract.sh << OH_YEAH_BABY_GET_DOWN +dialog --title "Finished!" \ + --infobox " +You're now done with the installation of XFree86 3.1. +Now would probably be a very good time to look in ${BASEDIR}/lib/X11/doc +for further information on what to do next. XFree86 3.1 is now +installed in the ${BASEDIR} directory, unlike +earlier releases. For backwards compatibility, you might consider +a symlink to /usr/X386." -1 -1 +OH_YEAH_BABY_GET_DOWN + +chmod 755 extract.sh +touch -f .is_interactive +echo " Done." diff --git a/release/scripts/netinst.sh b/release/scripts/netinst.sh new file mode 100644 index 0000000..8060fdf --- /dev/null +++ b/release/scripts/netinst.sh @@ -0,0 +1,208 @@ +#!/stand/sh +# +# netinst.sh - configure the user's network. +# +# Written: November 11th, 1994 +# Copyright (C) 1994 by Jordan K. Hubbard +# +# Permission to copy or use this software for any purpose is granted +# provided that this message stay intact, and at this location (e.g. no +# putting your name on top after doing something trivial like reindenting +# it, just to make it look like you wrote it!). +# +# $Id: netinst.sh,v 1.17 1994/12/05 00:40:25 jkh Exp $ + +if [ "${_NETINST_SH_LOADED_}" = "yes" ]; then + return 0 +else + _NETINST_SH_LOADED_=yes +fi + +# Grab the miscellaneous functions. +. /stand/miscfuncs.sh + +network_set_defaults() +{ + HOSTNAME="" + DOMAIN="" + NETMASK="0xffffff00" + IPADDR="127.0.0.1" + IFCONFIG_FLAGS="" + REMOTE_HOSTIP="" + REMOTE_IPADDR="" + INTERFACE="" + SERIAL_INTERFACE="/dev/cuaa0" + SERIAL_SPEED="38400" +} + +network_basic_setup() +{ + HOSTNAME="" + while [ "${HOSTNAME}" = "" ]; do + DEFAULT_VALUE="" + if ! network_dialog "What is the fully qualified name of this host?"; then return 1; fi + if [ "${ANSWER}" = "" ]; then + error "You must select a host name!" + continue + else + HOSTNAME=${ANSWER} + fi + done + echo ${HOSTNAME} > ${ETC}/myname + ${HOSTNAME_CMD} ${HOSTNAME} + + DEFAULT_VALUE=`echo ${HOSTNAME} | sed -e 's/[^.]*\.//' | grep \.` + if network_dialog "What is the domain name of this host (Internet, not YP/NIS)?"; then + DOMAIN=${ANSWER} + fi + + DEFAULT_VALUE=${IPADDR} + if ! network_dialog "What is the IP address of this host?"; then return 1; fi + IPADDR=${ANSWER} + echo "${IPADDR} ${HOSTNAME} `echo ${HOSTNAME} | sed -e 's/\.${DOMAIN}//'`" >> ${ETC}/hosts +} + +network_setup_ether() +{ + dialog --title "Ethernet Interface Name" --menu \ + "Please select the type of ethernet interface you have:\n" -1 -1 8 \ + "ed0" "WD80x3, SMC, Novell NE[21]000 or 3C503 generic NIC at 0x280" \ + "ed1" "Same as above, but at address 0x300 and IRQ 5" \ + "ep0" "3COM 3C509 at address 0x300 and IRQ 10" \ + "de0" "DEC PCI ethernet adapter (or compatible)" \ + "ie0" "AT&T StarLan and EN100 family at 0x360 and IRQ 7" \ + "is0" "Isolan 4141-0 or Isolink 4110 at 0x280 and IRQ 7" \ + "le0" "DEC Etherworks ethernet adapter" \ + "ze0" "PCMCIA IBM or National card at 0x300 and IRQ 5" \ + 2> ${TMP}/menu.tmp.$$ + + RETVAL=$? + INTERFACE=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then return 1; fi +} + +network_setup_remote() +{ + DEFAULT_VALUE="${REMOTE_IPADDR}" + if ! network_dialog "What is the IP number for the remote host?"; then + return 1 + fi + REMOTE_IPADDR=${ANSWER} +} + +network_setup_serial() +{ + network_setup_remote + INTERFACE=$1 + + DEFAULT_VALUE=${SERIAL_INTERFACE} + if ! network_dialog "What serial port do you wish to use?"; then + return 1 + fi + SERIAL_INTERFACE=${ANSWER} + + DEFAULT_VALUE=${SERIAL_SPEED} + if ! network_dialog "What speed is the serial connection?"; then + return 1 + fi + SERIAL_SPEED=${ANSWER} + + if dialog --title "Dial" --yesno \ + "Do you need to dial the phone or otherwise talk to the modem?" \ + -1 -1; then + mkdir -p /var/log + touch -f /var/log/aculog > /dev/null 2>&1 + chmod 666 /var/log/aculog > /dev/null 2>&1 + confirm \ +"You may now dialog with your modem and set up the connection. +Be sure to disable DTR sensitivity (usually with AT&D0) or the +modem may hang up when you exit 'cu'. Use ~. to exit cu and +continue." + dialog --clear + # Grottyness to deal with a weird crunch bug. + if [ ! -f /stand/cu ]; then ln /stand/tip /stand/cu; fi + /stand/cu -l ${SERIAL_INTERFACE} -s ${SERIAL_SPEED} + dialog --clear + fi +} + +network_setup_plip() +{ + network_setup_remote + INTERFACE=lp0 +} + +network_setup() +{ + DONE=0 + while [ "${INTERFACE}" = "" ]; do + dialog --title "Set up network interface" --menu \ + "Please select the type of network connection you have:\n" \ + -1 -1 3 \ + "Ether" "A supported ethernet card" \ + "SLIP" "A point-to-point SLIP (Serial Line IP) connection" \ + "PLIP" "A Parallel-Line IP setup (with standard laplink cable)" \ + 2> ${TMP}/menu.tmp.$$ + + RETVAL=$? + CHOICE=`cat ${TMP}/menu.tmp.$$` + rm -f ${TMP}/menu.tmp.$$ + if ! handle_rval ${RETVAL}; then return 1; fi + case ${CHOICE} in + Ether) if ! network_setup_ether; then continue; fi ;; + SLIP) if ! network_setup_serial sl0; then continue; fi ;; + PLIP) if ! network_setup_plip; then continue; fi ;; + esac + if [ "${INTERFACE}" = "" ]; then continue; fi + + network_basic_setup + + DEFAULT_VALUE="${NETMASK}" + if network_dialog "Please specify the netmask"; then + if [ "${ANSWER}" != "" ]; then + NETMASK=${ANSWER} + fi + fi + + DEFAULT_VALUE="" + if network_dialog "Set extra flags to ${IFCONFIG_CMD}?"; then + IFCONFIG_FLAGS=${ANSWER} + fi + echo "Progress <${IFCONFIG_CMD} ${INTERFACE} ${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS}>" >/dev/ttyv1 + if ! ${IFCONFIG_CMD} ${INTERFACE} ${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS} > /dev/ttyv1 2>&1 ; then + error "Unable to configure interface ${INTERFACE}" + IPADDR="" + INTERFACE="" + continue + fi + if [ "${INTERFACE}" = "sl0" ]; then + DEFAULT_VALUE=${SLATTACH_FLAGS} + if network_dialog "Set extra flags to ${SLATTACH_CMD}?"; then + SLATTACH_FLAGS=${ANSWER} + fi + ${SLATTACH_CMD} ${SLATTACH_FLAGS} ${SERIAL_SPEED} ${SERIAL_INTERFACE} + progress ${SLATTACH_CMD} ${SLATTACH_FLAGS} ${SERIAL_SPEED} ${SERIAL_INTERFACE} + fi + echo "${IPADDR} ${REMOTE_IPADDR} netmask ${NETMASK} ${IFCONFIG_FLAGS}" > ${ETC}/hostname.${INTERFACE} + DEFAULT_VALUE="" + if network_dialog "If you have a default gateway, enter its IP address"; then + if [ "${ANSWER}" != "" ]; then + GATEWAY=${ANSWER} + ${ROUTE_CMD} ${ROUTE_FLAGS} ${GATEWAY} > /dev/ttyv1 2>&1 + progress ${ROUTE_CMD} ${ROUTE_FLAGS} ${GATEWAY} + echo ${GATEWAY} > ${ETC}/defaultrouter + fi + fi + + DEFAULT_VALUE="" + if network_dialog "If you have a name server, enter its IP address"; then + if [ "${ANSWER}" != "" ]; then + NAMESERVER=${ANSWER} + echo "domain ${DOMAIN}" > ${ETC}/resolv.conf + echo "nameserver ${NAMESERVER}" >> ${ETC}/resolv.conf + fi + fi + done + return 0 +} |