diff options
Diffstat (limited to 'contrib/configit/ConfigIt')
-rwxr-xr-x | contrib/configit/ConfigIt | 761 |
1 files changed, 761 insertions, 0 deletions
diff --git a/contrib/configit/ConfigIt b/contrib/configit/ConfigIt new file mode 100755 index 0000000000000..0899cba4faad3 --- /dev/null +++ b/contrib/configit/ConfigIt @@ -0,0 +1,761 @@ +#!/usr/bin/perl +# +# Copyright (c) 1994 GB Data Consulting +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. The name of the Author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# 4. This license extends only to network distributed versions. +# All even number versions are non-network. +# THIS SOFTWARE IS PROVIDED BY GB DATA AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL GB DATA OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# +# +# +# $Id: ConfigIt,v 1.2 1994/05/02 06:57:47 gclarkii Exp $ +# + +&config; +&standard_devices; +&menu; + +sub menu { +system "clear"; + +print " ConfigIt!\n"; +print " A auto-configuration system\n"; +print "\n\n\n"; + +print " 1 Disk devices\n"; +print " 2 Serial devices\n"; +print " 3 Network devices\n"; +print " 4 Console devices\n"; +print " 5 Tape devices\n"; +print " 6 Misc devices and options\n"; +print " 7 Parallel devices\n"; +print "\n\n"; +print "Please enter you choice or q to quit: "; +chop ($choice = <STDIN>); + +if ($choice eq ('q' || 'Q')) + { + print (CONFIG "\n\n\n"); + close CONFIG; + exit; } + elsif ($choice == 1) + { &disk_devices; } + elsif ($choice == 2 && !$serdevsflag) + { &serial_devices; } + elsif ($choice == 3 && !$netdevsflag) + { &network_devices; } + elsif ($choice == 4) + { &console_devices; } + elsif ($choice == 5) + { &tape_devices; } + elsif ($choice == 6) + { &misc_dev_option; } + elsif ($choice == 7) + { ¶llel_ports; } + else + { &menu; } +&menu; + +} + + +sub config { +system "clear"; +print " ConfigIt!\n"; +print " A Auto-configuration System\n\n"; +print "Please enter the name of your system: "; +chop ($systemname = <STDIN>); +$systemname =~ tr/a-z/A-Z/; +open (CONFIG, ">>$systemname"); + +} + + +sub config_serial_devices { +print (CONFIG "\n#Multi-port Config\n"); +print "Multi-port Comm-Cards are not supported at this time....\n\n"; +sleep 3; + +} + + +sub console_devices { +system "clear"; +print " Console Devices\n\n"; +print " 1 Syscons\n"; +print " 2 Pccons\n"; +print "\n\n\n"; +print "Please enter your choice (q or Q to quit): "; +chop ($cdevs = <STDIN>); + +if ($cdevs == 1 && !$condevsflag) + { &syscons; } +elsif ($cdevs == 2 && !$condevsflag) + { &pccons; } +elsif ($cdevs eq 'q') + { return; } +elsif ($cdevs eq 'Q') + { return; } +else { + &console_devices; } +} + + + +sub disk_devices { + + system "clear"; + local ($choice); + print " Disk Device Sub-section\n\n"; + print " 1 WD drives\n"; + print " 2 SCSI drives\n"; + print " 3 Floppy & QIC-40/80 Drives\n"; + print " 4 Mitsumi CD-ROM Drive\n"; + print "\n\n"; + print "Please enter your choice: "; + chop ($choice = <STDIN>); + + if ($choice eq ('q' || 'Q')) + { return; } + elsif ($choice == 1 && !$wdflag) + { &wd_drives; } + elsif ($choice == 2 && !$scsidevflag) + { &scsi_drives; } + elsif ($choice == 3 && !$floppyflag) + { &floppy_drives; } + elsif ($choice == 4 && !$mitsumiflag) + { &mitsumi_drive; } + else + { &disk_devices; } +} + + +sub doonecard { +$cardnum = @_[0]; + +system "clear"; +print " 1 AT&T EN100/STARLAN 10\n"; +print " 2 ISOLAN AT 4141-0\n or ISOLINK 4110\n"; +print " 3 WD/SMC 8003 & 8013\n"; +print " 4 SMC Ultra Elite 16\n"; +print " 5 3com 3c503\n"; +print " 6 NE1000/NE2000\n"; +print "\n\nPlease enter the type of network card number $cardnum : "; +chop ($netcardchoice = <STDIN>); +print "Please enter the port (in hex) address of the card: "; +chop ($netcardadd = <STDIN>); +print "Please enter the irq of the card: "; +chop ($netcardirq = <STDIN>); + +if ($netcardchoice != 2) + { print "Please enter the I/O mem of the card: "; + chop ($netcardiomem = <STDIN>); + } + +if ($netcardchoice != (2 || 1)) + { + if ($ednum < 1) { + $cardty = 'ed0'; + $ednum++; + } else { + $cardty = "ed$ednum"; + $ednum++; + } + $interp = 'edintr'; + } + +if ($netcardchoice == 2) + { + if ($isnum < 1) { + $cardty = 'is0'; + $isnum++; + } else { + $cardty = "is$isnum"; + $isnum++; + } + $interp = 'isintr'; + } + +if ($netcardchoice == 1) + { + if ($ienum < 1) { + $cardty = 'ie0'; + $ienum++; + } else { + $cardty = "ie$ienum"; + $ienum++ + } + $interp = 'ieintr'; + } + +print (CONFIG "device $cardty at isa? port $netcardadd net irq $netcardirq iomem $netcardiomem vector $interp\n"); + +} + + +sub floppy_drives +{ +$floppyflag = 1; +system "clear"; +print (CONFIG "\n#Disk devices\n\n"); + +print "How many floppys do you have?: "; +chop ($flch = <STDIN>); +if ($flch > 0) + { + print (CONFIG "controller fdc0 at isa? port \"IO_FD1\" bio irq 6 drq 2 vector fdintr\n"); + print (CONFIG "disk fd0 at fdc0 drive 0\n"); + print (CONFIG "disk fd1 at fdc0 drive 1\n"); + } +if ($flch > 0) + { + print "Do you have a QIC-40/80 drive?: "; + chop ($qic40 = <STDIN>); + if ($qic40 eq 'y' || $qic40 eq 'Y') + { + print (CONFIG "tape ft0 at fdc0 drive 2\n"); + } + } +} + + +sub misc_dev_option { +system "clear"; +$miscdevflag = 1; +print (CONFIG "\n# Misc Devices\n"); +print "Do you want kernel tracing?: "; +chop ($ktrace = <STDIN>); +if ($ktrace eq ('y' || 'Y')) + { + print (CONFIG "options KTRACE\n"); + } +print "Do you want kernel debugging?: "; +chop ($kddb = <STDIN>); +if ($kddb eq ('y' || 'Y')) + { + print (CONFIG "pseudo-device ddb\n"); + } +print "Do you want fast symlinks?: "; +chop ($fastlinks = <STDIN>); +if ($fastlinks eq ('y' || 'Y')) + { + print (CONFIG "options FASTLINKS\n"); + } +print "Do you want PC file system support?: "; +chop ($pcfs = <STDIN>); +if ($pcfs eq ('y' || 'Y')) + { + print (CONFIG "options PCFS\n"); + } +print "Do you want Memory File System support?: "; +chop ($mfs = <STDIN>); +if ($mfs eq ('y' || 'Y')) + { + print (CONFIG "options MFS\n"); + } +print "Do you want QUOTA support?: "; +chop ($quota = <STDIN>); +if ($quota eq ('y' || 'Y')) + { + print (CONFIG "options QUOTA\n"); + } +print "Do you want FIFO support?: "; +chop ($fifo = <STDIN>); +if ($fifo eq ('y' || 'Y')) + { + print (CONFIG "options FIFO\n"); + } +print "Do you want ISO File System support?: "; +chop ($isofs = <STDIN>); +if ($isofs eq ('y' || 'Y')) + { + print (CONFIG "options ISOFS\n"); + } + +} + + +sub mitsumi_drive { +system "clear"; +$mitsumiflag = 1; +print (CONFIG "\n#Disk devices\n\n"); + +print "What address (hex) is the mitsumi controller at?: "; +chop ($mitadd = <STDIN>); +print "What interupt is the mitsumi controller at?: "; +chop ($mitint = <STDIN>); +print (CONFIG "device mcd at isa? port $mitadd bio irq $mitint vector mcdint\n"); +} + +# +# Multi-port support for serial_devices.pl +# +# $Id: ConfigIt,v 1.2 1994/05/02 06:57:47 gclarkii Exp $ +# + + +sub multiport { +$numstandm = @_[0]; +system "clear"; +print "NOTE: Only 1 multiport card is supported by ConfigIt.\n"; +print "Please enter the number of ports on the card: "; + chop ($multinum = <STDIN>); +print "Please enter the starting port of the card: "; + chop ($startm = <STDIN>); +print "Please enter the port number of the master port or 0 if none: "; + chop ($multimaster = <STDIN>); +print "Please enter the intrupt of the card: "; + chop ($multiint = <STDIN>); +print (CONFIG "\n#Multi-port serial devices\n\n"); +print (CONFIG "options \"COM_MULTIPORT\"\n"); + +$portm = $startm; +$startm =~ tr/a-z/A-Z/; + + for ($i = 1; $i < $multinum + 1; $i++) { + $siom = $i + $numstandm; + $siom = $siom - 1; + if ($siom < 10) { $sio = "sio0"; } else { $sio = "sio"; } + + if ($multimaster != $i) { + print (CONFIG "device $sio$siom at isa? port $portm flags 0x501 vector siointr\n"); + } else { + print (CONFIG "device $sio$siom at isa? port $portm tty irq $multiint flags 0x501 vector siointr\n"); + } +$portm =~ tr/A-Z/a-z/; +$numorig = hex ("$portm"); +$numadd = hex ("0x08"); +$numend = $numadd + $numorig; +$endm = sprintf ("%lx", $numend); +$end1m = $endm; +$portm = "0x$end1m"; +$portm =~ tr/a-z/A-Z/; + + } +if ($numstandm > 0) { &standard_serial; } +} + +sub network_devices { +system "clear"; +$netdevsflag = 1; +print (CONFIG "\n# Network devices\n"); +print "How many networking cards do you have: "; +chop ($numnet = <STDIN>); + +if ($numnet != 0) { +for ($i = 1; $i <= $numnet ; $i++) +{ + &doonecard($i); + } +} + +print "Do you need the SLIP device in the kernel?: "; +chop ($slipch = <STDIN>); +if ($slipch eq ('y' || 'Y')) + { + print "How many slip devices do you need: "; + chop ($slipno = <STDIN>); + print (CONFIG "pseudo-device slip $slipno\n"); + } + +print "Do you need the PPP device in the kernel?: "; +chop ($pppch = <STDIN>); +if ($pppch eq ('y' || 'Y')) + { + print "How many PPP devices do you need: "; + chop ($pppno = <STDIN>); + print (CONFIG "pseudo-device ppp $pppno\n"); + } + +print "Do you want Berkeley Packet Filter support?: "; +chop ($bpf = <STDIN>); +if ($bpf eq ('y' || 'Y')) + { + print (CONFIG "pseudo-device bpf\n"); + } + +print "Do you want Internetwork Gateway support?: "; +chop ($gateway = <STDIN>); +if ($gateway eq ('y' || 'Y')) + { + print (CONFIG "option GATEWAY\n"); + } + +print "Do you want NFS support?: "; +chop ($nfs = <STDIN>); +if ($nfs eq ('y' || 'Y')) + { + print (CONFIG "option NFS\n"); + } + +print "How many pty's do you want?: "; +chop ($ptyno = <STDIN>); +if ($ptyno eq ('y' || 'Y')) + { + print (CONFIG "pseudo-device pty $ptyno\n"); + } + +} + + +# +# +# + +sub parallel_ports { + +print "How many parallel ports do you have: "; + chop ($paranum = <STDIN>); + +if ($paranum) { +print (CONFIG "\n#Parallel devices\n\n"); + +for ($i = 1; $i <= $paranum; $i++) { + $lpanum = $i - 1; + print "Please enter the address for parallel port number $i : "; + chop ($paraport = <STDIN>); + print "If you are running with out interupts on this port please\n"; + print "anwser 0 to the following question.\n"; + print "Please enter the interupt for parallel port number $i : "; + chop ($paraint = <STDIN>); + if ($paraint) { + print (CONFIG "device lpa$lpanum at isa? port $paraport tty irq $paraint vector lptintr\n"); + } else { + print (CONFIG "device lpa$lpanum at isa? port $paraport tty vector lptintr\n"); + } + + } + + } + +} + +sub pccons { +$condevsflag = 1; +print (CONFIG "\n# Console devices\n\n"); +print (CONFIG "device pc0 at isa? port \"IO_KBD\" tty irq 1 vector pcrint\n"); + +} + + +sub scsi_drives { +$scsidevsflag = 1; +system "clear"; +print (CONFIG "\n# SCSI Devices\n\n"); +print " 1 Adaptec 1542/Bustec 542\n"; +print " 2 Adaptec 1742\n"; +print " 3 Bustec 742\n"; +print " 4 Ultrastore 14F/34F\n"; +print "\n\n"; +print "Enter your choice or q to quit: "; +chop ($scsicho = <STDIN>); + +if ($scsicho eq 'q' || $scsicho eq 'Q') + { + return; + } +elsif ($scsicho == 1) + { + $scsicard = "aha0"; + $scsiio = "\"IO_AHA0\""; + $scsiint = "ahaintr"; + } +elsif ($scsicho == 2) + { + $scsicard = "ahb0"; + $scsiint = "ahbintr"; + } +elsif ($scsicho == 3) + { + $scsicard = "bt0"; + $scsiio = "\"IO_BT0\""; + $scsiint = "btintr"; + } +elsif ($scsicho == 4) + { + $scsicard = "uha0"; + $scsiio = "\"IO_UHA0\""; + $scsiio = "uhaintr"; + } +else { &scsi_drives; } + +if ($scsicho == 2) + { + print "Please enter the interupt the AHA-1742 is on: "; + chop ($scsiirq = <STDIN>); + print (CONFIG "contoller ahb0 at isa? bio irq $scsiirq vector $scsiint\n"); + } +elsif ($scsicho == 1 || $scsicho == 4) + { + print "Please enter the interupt the SCSI controller is on: "; + chop ($scsiirq = <STDIN>); + print "Please enter the dma channel the SCSI controller is on: "; + chop ($scsidrq = <STDIN>); + print (CONFIG "controller $scsicard at isa? port $scsiio bio irq $scsiirq drq $scsidrq vector $scsiint\n"); + } +else + { + print "Please enter the interupt the SCSI controller is on: "; + chop ($scsiirq = <STDIN>); + print (CONFIG "controller $scsicard at isa? port $scsiio bio irq $scsiirq vector $scsiint\n"); + } + +print (CONFIG "device sd0\n"); +print (CONFIG "device sd1\n"); +print (CONFIG "device sd2\n"); +print (CONFIG "device sd3\n"); +print (CONFIG "device st1\n"); +print (CONFIG "device st2\n"); +print (CONFIG "device cd0\n"); + +} + +# +# Do serial ports, only standard ones are here +# +# + +sub serial_devices { +system "clear"; +$serdevsflag = 1; + +print "Do you have a multi-port card (Non-standard serial card): "; + chop ($multicard = <STDIN>); +print "Please enter the number of standard serial ports you have: "; + chop ($numstand = <STDIN>); + + if ($multicard eq ( 'y' || 'Y')) { + print "Please enter the number of standard serial ports you also have: "; + &multiport($numstand); + } else { + &standard_serial($numstand); + } +print "Do you wish to have bidirectionl serial ports: "; + chop ($bidir = <STDIN>); + if ($bidir eq ('y' || 'Y')) { + print (CONFIG "options \"COM_BIDIR\"\n"); + } +} + + +sub standard_devices { +system "clear"; +print "What timezone are you in? (cst = 6): "; +chop ($time = <STDIN>); +print "What type of cpu do you have? ( 386 or 486 ): "; +chop ($cputype = <STDIN>); + +if ($cputype == 386) + { + print "Do you have a 387?: "; + chop ($mathco = <STDIN>); + } + +if ($cputype == 486) + { + print "Is it a DX or SX?: "; + chop ($dxsx = <STDIN>); + if ($dxsz eq 'SX' || $dxsx eq 'sx') + { + $mathco = 'n'; + } + } + +chop ($date = `date`); +chop ($whoami = `whoami`); + +print (CONFIG "\n#\n#Config file for $systemname\n"); +print (CONFIG "#Generated by ConfigIt!\n"); +print (CONFIG "#Generated at $date by $whoami\n#\n#\n\n"); + +print (CONFIG "#Generic Items\n\n"); +print (CONFIG "machine \"i386\"\n"); +print (CONFIG "cpu \"I","$cputype","_CPU\"\n"); + +if ($mathco eq 'n' || $mathco eq 'N') + { + print "Do you wish to use the new math emulator (its better): "; + chop ($choicesti = <STDIN>); + if ($choicesti eq ('y' || 'Y')) { + print (CONFIG "options GPL_MATH_EMULATE\n"); + } else { + print (CONFIG "options MATH_EMULATE\n"); + } +} + +print "The following is used to set certain parameters.\n"; +print "Please enter the number of users you expect: "; + chop ($maxusers = <STDIN>); +if ($maxusers <= 10) { $maxusers = 10; } +print (CONFIG "ident $systemname\n"); +print (CONFIG "maxusers $maxusers\n"); +print (CONFIG "maxfdescs 2000\n"); +print (CONFIG "timezone $time dst\n"); +print (CONFIG "options \"COMPAT_43\"\n"); +print (CONFIG "options UCONSOLE\n"); +print (CONFIG "options XSERVER\n"); +print (CONFIG "options INET\n"); +print "What device is root on? (e.g. \"wd0\"): "; +chop ($root = <STDIN>); +if ($root) { +$roots = "root on $root"; +} else { print "ABORTING you must have a root!\n"; exit; } + +print "What device is swap on? (e.g. \"wd0\" or \"wd0 and wd1\"): "; +chop ($swap = <STDIN>); +if ($swap) { +$swaps = "swap on $swap"; +} +print "What device is dump on? (e.g. \"wd0\"): "; +chop ($dump = <STDIN>); +if ($dumps) { +$dumps = "dumps on $dump"; +} + +print (CONFIG "config \"386bsd\" $roots $swaps $dumps \n"); +print (CONFIG "pseudo-device vnodepager\n"); +print (CONFIG "pseudo-device swappager\n"); +print (CONFIG "pseudo-device devpager\n"); +print (CONFIG "pseudo-device ether\n"); +print (CONFIG "pseudo-device loop\n"); +print (CONFIG "pseudo-device log\n"); +print (CONFIG "pseudo-device speaker\n"); +print (CONFIG "device isa0\n"); + +} + + +# +# Do standard serial ports +# + +sub standard_serial { +$sernumss = @_[0]; + + print "Are the $sernumss standard ports at the standard location and interup: "; + chop ($standss = <STDIN>); +if ($standss eq ('y' || 'Y')) { + + if ($sernumss == 0 || $sernumss > 4) + { print "invalid number of serial ports!!\n\n"; + print "Please hit any key to continue."; + while (!($kbhit = <STDIN>)) {} + &serial_devices;} + + if ($sernumss < 3) { + print (CONFIG "\n#Standard serial devices\n\n"); + print (CONFIG "device sio00 at isa? port \"IO_COM1\" tty irq 4 vector siointr\n"); + print (CONFIG "device sio01 at isa? port \"IO_COM2\" tty irq 3 vector siointr\n"); + } else { + print (CONFIG "\n#Standard serial devices\n\n"); + print (CONFIG "device sio00 at isa? port \"IO_COM1\" tty irq 4 vector siointr\n"); + print (CONFIG "device sio01 at isa? port \"IO_COM2\" tty irq 3 vector siointr\n"); + print (CONFIG "device sio02 at isa? port \"IO_COM3\" tty irq 5 vector siointr\n"); + print (CONFIG "device sio03 at isa? port \"IO_COM4\" tty irq 9 vector siointr\n"); } + +} else { + print (CONFIG "\n#Standard serial devices\n\n"); + + for ($i = 1;$i <= $sernum;$i++) { + print "Please enter the intrupt for serial port number $i: "; + chop ($intt = <STDIN>); + print "Please enter the address for serial port number $i: "; + chop ($portk = <STDIN>); + $iik = $i - 1; + print (CONFIG "device sio0$iik at isa port $portk tty irq $intt vector siointr\n"); + + } + } +} + + + +sub syscons { +print (CONFIG "\n#Console device\n"); + +$condevsflag = 1; +system "clear"; +print (CONFIG "device sc0 at isa? port \"IO_KBD\" tty irq 1 vector scintr\n"); +print "How many virtual terminals do you want? (max 8): "; +chop ($numvty = <STDIN>); +if ($numvty == 0 || $numvty > 8) + { $numvty = 1; } +print (CONFIG "options \"NCONS=$numvty\"\n"); +print (CONFIG "options \"STAR_SAVER\"\n"); +print (CONFIG "options \"FADE_SAVER\"\n"); +print (CONFIG "options \"SNAKE_SAVER\"\n"); +print (CONFIG "options \"BLANK_SAVER\"\n"); + +} + + +sub tape_devices +{ +system "clear"; +print (CONFIG "\n# QIC-02 Tape devices\n\n"); +$tapdevsflag = 1; +print "Do you have a QIC-02 tape drive?: "; +chop ($qic02 = <STDIN>); +if ($qic02 eq ('y' || 'Y')) + { +print "What address is it at? (Hex): "; +chop ($qic02add = <STDIN>); +print "What interupt is it at?: "; +chop ($qic02int = <STDIN>); +print (CONFIG "device wt0 at isa? port $qic02add bio irq $qic02int drq 1 vector wtintr\n"); + } +} + + +sub wd_drives { + $wdflag = 1; + local ($choice); + system "clear"; + print (CONFIG "\n#Disk devices\n\n"); + + print " WD Drive Configuration\n\n"; + print "How many WD drives do you have (Max of 4): "; + chop ($choice = <STDIN>); + + if ($choice >= 3 ) { + print "\n"; + print (CONFIG "controller wdc0 at isa? port \"IO_WD1\" bio irq 14 vector wdintr\n"); + print "\n"; + print (CONFIG "disk wd0 at wdc0 drive 0\n"); + print (CONFIG "disk wd1 at wdc1 drive 1\n"); + print (CONFIG "controller wdc1 at isa? port \"IO_WD2\" bio irq 15 vector wdintr\n"); + print (CONFIG "disk wd2 at wdc1 drive 0\n"); + print (CONFIG "disk wd3 at wdc1 drive 1\n"); + print "\n"; + } else { + print "\n"; + print (CONFIG "controller wdc0 at isa? port \"IO_WD1\" bio irq 14 vector wdintr\n"); + print "\n"; + print (CONFIG "disk wd0 at wdc0 drive 0\n"); + print (CONFIG "disk wd1 at wdc0 drive 1\n"); + print "\n"; + } +} + |