Initial revision
This commit is contained in:
parent
2062c2dbe3
commit
4dcddd0cca
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=5582
183
release/scripts/adduser.sh
Executable file
183
release/scripts/adduser.sh
Executable file
@ -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
|
23
release/scripts/extract_bin.sh
Normal file
23
release/scripts/extract_bin.sh
Normal file
@ -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
|
8
release/scripts/extract_compat1x.sh
Normal file
8
release/scripts/extract_compat1x.sh
Normal file
@ -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 )
|
8
release/scripts/extract_dict.sh
Normal file
8
release/scripts/extract_dict.sh
Normal file
@ -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 )
|
8
release/scripts/extract_games.sh
Normal file
8
release/scripts/extract_games.sh
Normal file
@ -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 )
|
8
release/scripts/extract_info.sh
Normal file
8
release/scripts/extract_info.sh
Normal file
@ -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 )
|
8
release/scripts/extract_manpages.sh
Normal file
8
release/scripts/extract_manpages.sh
Normal file
@ -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 )
|
8
release/scripts/extract_proflibs.sh
Normal file
8
release/scripts/extract_proflibs.sh
Normal file
@ -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 )
|
8
release/scripts/extract_secure.sh
Normal file
8
release/scripts/extract_secure.sh
Normal file
@ -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 )
|
8
release/scripts/extract_src.sh
Normal file
8
release/scripts/extract_src.sh
Normal file
@ -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 )
|
565
release/scripts/instdist.sh
Normal file
565
release/scripts/instdist.sh
Normal file
@ -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
|
||||
}
|
140
release/scripts/miscfuncs.sh
Normal file
140
release/scripts/miscfuncs.sh
Normal file
@ -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
|
||||
}
|
25
release/scripts/mkchecksums.sh
Normal file
25
release/scripts/mkchecksums.sh
Normal file
@ -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
|
61
release/scripts/mkxf86extract.sh
Normal file
61
release/scripts/mkxf86extract.sh
Normal file
@ -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."
|
208
release/scripts/netinst.sh
Normal file
208
release/scripts/netinst.sh
Normal file
@ -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
|
||||
}
|
Loading…
Reference in New Issue
Block a user