--- /dev/null
+#!/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
# 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."
# 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."
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
# 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
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 ""
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
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."
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.
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
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.)
# 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.
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