- Added netconf script which makes it a lot easier to change network settings.

- Modified the setup script to use the netconf script for the network
   configuration:
    - Moved step 2 to step 8 and renamed the steps in between.
    - Autopart adapted to print step 3 instead of step 4.
This commit is contained in:
Thomas Veerman 2009-09-03 09:38:27 +00:00
parent 8aeb17c75e
commit 360dc9104c
4 changed files with 360 additions and 83 deletions

View File

@ -2066,7 +2066,7 @@ select_region(void)
void printstep(int step, char *str)
{
int n;
n = printf("\n --- Substep 4.%d: %s ---", step, str);
n = printf("\n --- Substep 3.%d: %s ---", step, str);
while(n++ < 73) printf("-");
printf("\n");
}

View File

@ -40,6 +40,7 @@ usr: \
/usr/bin/mkdist \
/bin/readclock \
/bin/setup \
/bin/netconf \
/usr/bin/binsizes \
/usr/bin/rotate \
/usr/bin/floppysetup \
@ -142,6 +143,9 @@ clean:
/bin/setup: setup.sh
install -m 755 -c -o bin $? $@
/bin/netconf: netconf.sh
install -m 755 -c -o bin $? $@
/usr/bin/binsizes: binsizes.sh
install -m 755 -c -o bin $? $@

315
commands/scripts/netconf.sh Executable file
View File

@ -0,0 +1,315 @@
#!/bin/sh
#
# netconf 0.1 - Configure network
#
# Changes:
#
LOCALRC=/usr/etc/rc.local
INETCONF=/etc/inet.conf
RCNET=/etc/rc.net
HOSTS=/etc/hosts
HOSTNAME=/etc/hostname.file
USRKBFILE=/.usrkb
step1=""
step2=""
step3=""
v=1 # verbosity
manual_opts=0
prefix=""
cd="no" # running from cd?
eth=""
driver=""
driverargs=""
config=""
manual=""
dhcp="no"
hostname=""
hostname_prev=""
ip=""
ip_prev=""
netmask=""
netmask_prev=""
gateway=""
dns1=""
dns2=""
# Provide some sane defaults
hostname_default=`uname -n`
test -z "$hostname_default" && hostname_default="Minix"
ip_default="10.0.0.1"
netmask_default="255.255.255.0"
gateway_default=""
usage()
{
cat >&2 <<'EOF'
Usage:
netconf [-q] [-p <prefix>] [-e <num>] [-a]
netconf [-H <name> -i <ip> -n <mask> -g <gw> -d <prim dns> [-s <sec dns>]]
flags:
-q Limit generated output
-p Path prefix for configuration files (e.g., during install -p mnt is used as files are mounted on /mnt).
-e Ethernet card
-a Use DHCP (-H, -i, -n, -g, -d, and -s flags are discarded)
-H Hostname
-i IP address
-n Netmask
-g Default gateway
-d Primary DNS
-s Secondary DNS
-h Shows this help file
-c Shows a list of ethernet cards supported
By default netconf starts in Interactive mode. By providing parameters on the
command line, some questions can be omitted.
EOF
exit 1
}
cards()
{
echo "0. No Ethernet card (no networking)"
echo "1. Intel Pro/100"
echo "2. 3Com 501 or 3Com 509 based card"
echo "3. Realtek 8139 based card (also emulated by KVM)"
echo "4. Realtek 8029 based card (also emulated by Qemu)"
echo "5. NE2000, 3com 503 or WD based card (also emulated by Bochs)"
echo "6. AMD LANCE (also emulated by VMWare and VirtualBox)"
echo "7. Different Ethernet card (no networking)"
}
warn()
{
echo -e "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ! $1"
}
do_step1()
{
# Ask user about networking
echo "MINIX 3 currently supports the following Ethernet cards. Please choose: "
echo ""
cards
echo ""
while [ "$step1" != ok ]; do
echo -n "Ethernet card? [0] "; read eth
test -z $eth && eth=0
drv_params $eth
test -n "$driver" && step1="ok"
done
}
drv_params()
{
case "$1" in
0) driver=psip0; ;;
1) driver=fxp; ;;
2) driver=dpeth; driverargs="#dpeth_arg='DPETH0=port:irq:memory'";
test "$v" = 1 && echo ""
test "$v" = 1 && echo "Note: After installing, edit $LOCALRC to the right configuration."
;;
3) driver=rtl8139; ;;
4) driver=dp8390; driverargs="dp8390_arg='DPETH0=pci'"; ;;
5) driver=dp8390; driverargs="dp8390_arg='DPETH0=240:9'";
test "$v" = 1 && echo ""
test "$v" = 1 && echo "Note: After installing, edit $LOCALRC to the right configuration."
test "$v" = 1 && echo " chose option 4, the defaults for emulation by Bochs have been set."
;;
6) driver="lance"; ;;
7) driver="psip0"; ;;
*) warn "choose a number"
esac
}
do_step2()
{
echo ""
echo "Configure network using DHCP or manually?"
echo ""
echo "1. Automatically using DHCP"
echo "2. Manually"
echo ""
while [ "$step2" != ok ]
do
echo -n "Configure method? [1] "; read config
test -z $config && config=1
case "$config" in
1) step2="ok"; dhcp="yes" ; ;;
2) step2="ok"; manual="do"; ;;
*) warn "choose a number"
esac
done
# Use manual parameters?
if [ -n "$manual" ]; then
# Query user for settings
# Hostname
if [ -z $hostname_prev ]; then
hostname_prev=$hostname_default
fi
echo -n "Hostname [$hostname_prev]: "
read hostname
if [ ! -z $hostname ]; then
hostname_prev=$hostname
else
hostname=$hostname_prev
fi
# IP address
if [ -z $ip_prev ]; then
ip_prev=$ip_default
fi
echo -n "IP address [$ip_prev]: "
read ip
if [ ! -z $ip ]; then
ip_prev=$ip
else
ip=$ip_prev
fi
# Netmask
if [ -z $netmask_prev ]; then
netmask_prev=$netmask_default
fi
echo -n "Netmask [$netmask_prev]: "
read netmask
if [ ! -z $netmask ]; then
netmask_prev=$netmask
else
netmask=$netmask_prev
fi
# Gateway (no gateway is fine for local networking)
echo -n "Gateway: "
read gateway
# DNS Servers
echo -n "Primary DNS Server [$dns1_prev]: "
read dns1
test -z "$dns1" && test -n "$dns1_prev" && dns1=$dns1_prev
if [ ! -z "$dns1" ]; then
dns1_prev=$dns1
echo -n "Secondary DNS Server [$dns2_prev]: "
read dns2
if [ ! -z $dns2 ]; then
dns2_prev=$dns2
fi
else
# If no primary DNS, then also no secondary DNS
dns2=""
fi
fi
}
# Parse options
while getopts ":qe:p:aH:i:n:g:d:s:hc" arg; do
case "$arg" in
q) v=0; ;;
e) ethernet=$OPTARG;
test "$ethernet" -ge 0 -a "$ethernet" -le 7 2>/dev/null || usage
drv_params $ethernet
;;
p) prefix=$OPTARG; ;;
a) dhcp="yes"; ;;
H) hostname=$OPTARG; manual_opts=`expr $manual_opts '+' 1`;;
i) ip=$OPTARG; manual_opts=`expr $manual_opts '+' 1`;;
n) netmask=$OPTARG; manual_opts=`expr $manual_opts '+' 1`;;
g) gateway=$OPTARG; manual_opts=`expr $manual_opts '+' 1`;;
d) dns1=$OPTARG; ;;
s) dns2=$OPTARG; ;;
h) usage ;;
c) echo -e "The following cards are supported by Minix:\n";
cards; exit 0
;;
\?) echo "Unknown option -$OPTARG"; usage ;;
:) echo "Missing required argument for -$OPTARG"; usage ;;
*) usage ;;
esac
done
# Verify parameter count
if [ "$dhcp" != "yes" ] ; then
if [ $manual_opts -gt 0 ] ; then
test $manual_opts -eq 4 -a -n "$dns1" || usage
manual="do"
fi
fi
if [ -n "$prefix" ] ; then
LOCALRC=$prefix$LOCALRC
INETCONF=$prefix$INETCONF
RCNET=$prefix$RCNET
HOSTS=$prefix$HOSTS
HOSTNAME=$prefix$HOSTNAME
if [ ! -f $INETCONF ]; then
echo -e "It seems the supplied prefix (\`$prefix') is invalid."
exit 1
fi
fi
if [ "$USER" != root ] ; then
test "$v" = 1 && echo "Please run netconf as root."
exit 1
fi
# Are we running from CD?
if [ -f "$USRKBFILE" ] ; then
echo "Running from CD"
cd="yes" # We are running from CD
fi
# Do we know what ethernet card to use?
test -z "$ethernet" && do_step1
# If no parameters are supplied and we're not using DHCP, query for settings
test $manual_opts -eq 0 -a "$dhcp" = "no" && do_step2
# Store settings.
# Do not make backups if we're running from CD
test "$cd" != "yes" && test -f $INETCONF && mv $INETCONF "$INETCONF~" &&
test "$v" = 1 && echo "Backed up $INETCONF to $INETCONF~"
test "$cd" != "yes" && test -f $LOCALRC && mv $LOCALRC "$LOCALRC~" &&
test "$v" = 1 && echo "Backed up $LOCALRC to $LOCALRC~"
echo "eth0 $driver 0 { default; } ;" > $INETCONF
echo "$driverargs" > $LOCALRC
if [ -n "$manual" ]
then
# Backup config file if it exists and we're not running from CD
test "$cd" != "yes" && test -f $RCNET && mv $RCNET "$RCNET~" &&
test "$v" = 1 && echo "Backed up $RCNET to $RCNET~"
test "$cd" != "yes" && test -f $HOSTS && mv $HOSTS "$HOSTS~" &&
test "$v" = 1 && echo "Backed up $HOSTS to $HOSTS~"
# Store manual config
echo "ifconfig -I /dev/ip0 -n $netmask -h $ip" > $RCNET
test ! -z $gateway && echo "add_route -g $gateway" >> $RCNET
echo "daemonize nonamed -L" >> $RCNET
test ! -z $dns1 && echo -e "$ip\t%nameserver\t#$hostname" > $HOSTS
test ! -z $dns1 && echo -e "$dns1\t%nameserver\t#DNS 1" >> $HOSTS
test ! -z $dns2 && echo -e "$dns2\t%nameserver\t#DNS 2" >> $HOSTS
echo -e "\n$ip\t$hostname" >> $HOSTS
echo $hostname > $HOSTNAME
else
test "$cd" != "yes" && test -f "$RCNET" && mv "$RCNET" "$RCNET~" &&
test "$v" = 1 && echo "Moved $RCNET to $RCNET~ to use default settings"
test "$cd" != "yes" && test -f $HOSTS && mv $HOSTS "$HOSTS~" &&
test "$v" = 1 && echo "Backed up $HOSTS to $HOSTS~"
test -f "$HOSTS~" && grep -v "%nameserver" "$HOSTS~" > $HOSTS
fi
test "$cd" != "yes" && test "$v" = 1 && echo "
You might have to reboot for the changes to take effect."
exit 0

View File

@ -130,59 +130,11 @@ done
# end Step 1
# begin Step 2
echo ""
echo " --- Step 2: Select your Ethernet chip ---------------------------------"
echo ""
# Ask user about networking
echo "MINIX 3 currently supports the following Ethernet cards. Please choose: "
echo ""
echo "0. No Ethernet card (no networking)"
echo "1. Intel Pro/100"
echo "2. 3Com 501 or 3Com 509 based card"
echo "3. Realtek 8139 based card (also emulated by KVM)"
echo "4. Realtek 8029 based card (also emulated by Qemu)"
echo "5. NE2000, 3com 503 or WD based card (also emulated by Bochs)"
echo "6. AMD LANCE (also emulated by VMWare and VirtualBox)"
echo "7. Different Ethernet card (no networking)"
echo ""
echo "You can always change your mind after the setup."
echo ""
step2=""
while [ "$step2" != ok ]
do
eth=""
echo -n "Ethernet card? [0] "; read eth
test -z $eth && eth=0
driver=""
driverargs=""
case "$eth" in
0) step2="ok"; ;;
1) step2="ok"; driver=fxp; ;;
2) step2="ok"; driver=dpeth; driverargs="#dpeth_arg='DPETH0=port:irq:memory'";
echo ""
echo "Note: After installing, edit $LOCALRC to the right configuration."
;;
3) step2="ok"; driver=rtl8139; ;;
4) step2="ok"; driver=dp8390; driverargs="dp8390_arg='DPETH0=pci'"; ;;
5) step2="ok"; driver=dp8390; driverargs="dp8390_arg='DPETH0=240:9'";
echo ""
echo "Note: After installing, edit $LOCALRC to the right configuration."
echo " chose option 4, the defaults for emulation by Bochs have been set."
;;
6) driver="lance"; step2="ok"; ;;
7) step2="ok"; ;;
*) warn "choose a number"
esac
done
# end Step 2
# begin Step 3
#step3=""
#while [ "$step3" != ok ]
#step2=""
#while [ "$step2" != ok ]
#do
# echo ""
# echo " --- Step 3: Select minimal or full distribution -----------------------"
# echo " --- Step 2: Select minimal or full distribution -----------------------"
# echo ""
# echo "You can install MINIX as (M)inimal or (F)ull. (M)inimal"
# echo "includes only the binary system and basic system sources."
@ -195,24 +147,24 @@ done
# echo -n "Basic (M)inimal or (F)ull install? [F] "
# read conf
# case "$conf" in
# "") step3="ok"; nobigsource="" ;;
# [Ff]*) step3="ok"; nobigsource="" ;;
# [Mm]*) step3="ok"; nobigsource="1"; TOTALMB=$NOSRCMB; USRFILES=$NOSRCUSRFILES ;;
# "") step2="ok"; nobigsource="" ;;
# [Ff]*) step2="ok"; nobigsource="" ;;
# [Mm]*) step2="ok"; nobigsource="1"; TOTALMB=$NOSRCMB; USRFILES=$NOSRCUSRFILES ;;
# esac
#done
# end Step 3
# end Step 2
echo ""
echo " --- Step 3: Selecting full distribution -------------------------------"
echo " --- Step 2: Selecting full distribution -------------------------------"
echo ""
nobigsource=""
# begin Step 4
step4=""
while [ "$step4" != ok ]
# begin Step 3
step3=""
while [ "$step3" != ok ]
do
echo ""
echo " --- Step 4: Create or select a partition for MINIX 3 -------------------"
echo " --- Step 3: Create or select a partition for MINIX 3 -------------------"
echo ""
echo "Now you need to create a MINIX 3 partition on your hard disk."
@ -282,7 +234,7 @@ Please finish the name of the primary partition you have created:
do
echo -n "Are you sure you want to continue? Please enter 'yes' or 'no': "
read confirmation
if [ "$confirmation" = yes ]; then step4=ok; fi
if [ "$confirmation" = yes ]; then step3=ok; fi
done
biosdrivename="Actual BIOS device name unknown, due to expert mode."
else
@ -311,23 +263,23 @@ Please finish the name of the primary partition you have created:
# them messy.
atnormalize
if [ -n "$primary" ]; then step4=ok; fi
if [ -n "$primary" ]; then step3=ok; fi
fi
fi
if [ ! -b "/dev/$primary" ]
then echo Doing step 4 again.
step4=""
then echo Doing step 3 again.
step3=""
else
devsize="`devsize /dev/$primary`"
if [ "$devsize" -lt 1 ]
then echo "/dev/$primary is a 0-sized device."
step4=""
step3=""
fi
fi
done # while step4 != ok
# end Step 4
done # while step3 != ok
# end Step 3
root=${primary}s0
home=${primary}s1
@ -359,7 +311,7 @@ while [ "$confirm" = "" ]
do
auto=""
echo ""
echo " --- Step 5: Reinstall choice ------------------------------------------"
echo " --- Step 4: Reinstall choice ------------------------------------------"
if mount -r /dev/$home $TMPMP >/dev/null 2>&1
then umount /dev/$home >/dev/null 2>&1
echo ""
@ -391,7 +343,7 @@ homesize=""
if [ ! "$auto" = r ]
then
echo ""
echo " --- Step 6: Select the size of /home ----------------------------------"
echo " --- Step 5: Select the size of /home ----------------------------------"
while [ -z "$homesize" ]
do
@ -448,7 +400,7 @@ blockdefault=4
if [ ! "$auto" = "r" ]
then
echo ""
echo " --- Step 7: Select a block size ---------------------------------------"
echo " --- Step 6: Select a block size ---------------------------------------"
echo ""
echo "The default file system block size is $blockdefault KB."
@ -505,10 +457,9 @@ else fshome=""
fi
echo ""
echo " --- Step 8: Wait for files to be copied -------------------------------"
echo " --- Step 7: Wait for files to be copied -------------------------------"
echo ""
echo "This is the final step of the MINIX 3 setup. All files will now be"
echo "copied to your hard disk. This may take a while."
echo "All files will now be copied to your hard disk. This may take a while."
echo ""
mount /dev/$usr /mnt >/dev/null || exit # Mount the intended /usr.
@ -521,10 +472,6 @@ mount /dev/$usr /mnt >/dev/null || exit # Mount the intended /usr.
done
) | progressbar "$USRFILES" || exit # Copy the usr floppy.
if [ -n "$driver" ]
then echo "$driverargs" >$MYLOCALRC
fi
umount /dev/$usr >/dev/null || exit # Unmount the intended /usr.
mount /dev/$root /mnt >/dev/null || exit
@ -536,10 +483,6 @@ cp /mnt/etc/motd.install /mnt/etc/motd
rm /mnt/var/log
ln -s /usr/log /mnt/var/log
if [ -n "$driver" ]
then echo "eth0 $driver 0 { default; };" >/mnt/etc/inet.conf
fi
# CD remnants that aren't for the installed system
rm /mnt/etc/issue /mnt/CD /mnt/.* 2>/dev/null
# Change /etc/fstab. (No swap.)
@ -554,7 +497,7 @@ $fshome"
# National keyboard map.
test -n "$keymap" && cp -p "/usr/lib/keymaps/$keymap.map" /mnt/etc/keymap
umount /dev/$root >/dev/null || exit # Unmount the new root.
umount /dev/$root >/dev/null || exit # Unmount the new root.
mount /dev/$usr /mnt >/dev/null || exit
# Make bootable.
@ -587,6 +530,21 @@ fi
echo "Saving random data.."
dd if=/dev/random of=/mnt/adm/random.dat bs=1024 count=1
umount /dev/$usr >/dev/null || exit
# Networking.
echo ""
echo " --- Step 8: Select your Ethernet chip ---------------------------------"
echo ""
mount /dev/$root /mnt >/dev/null || exit
mount /dev/$usr /mnt/usr >/dev/null || exit
/bin/netconf -p /mnt || echo FAILED TO CONFIGURE NETWORK
umount /dev/$usr && echo Unmounted $usr
umount /dev/$root && echo Unmounted $root
echo "
Please type 'shutdown' to exit MINIX 3 and enter the boot monitor. At
the boot monitor prompt, type 'boot $bios', where X is the bios drive