PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

     NAME
          plan9.ini - configuration file for PCs

     SYNOPSIS
          none

     DESCRIPTION
          When booting Inferno on a PC, the Plan 9 bootstrap programs
          are used, hence the references to Plan 9 below.  The DOS
          program 9load(10.8) first reads a DOS file containing con-
          figuration information from the boot disk.  This file,
          plan9.ini, looks like a shell script containing lines of the
          form

               name=value

          each of which defines a kernel or device parameter.

          For devices, the generic format of value is

               type=TYPE [port=N] [irq=N] [mem=N] [size=N] [dma=N] [ea=N]

          specifying the controller type, the base I/O port of the
          interface, its interrupt level, the physical starting
          address of any mapped memory, the length in bytes of that
          memory, the DMA channel, and for Ethernets an override of
          the physical network address.  Not all elements are relevant
          to all devices; the relevant values and their defaults are
          defined below in the description of each device.

          The file is used by 9load and the kernel to configure the
          hardware available.  The information it contains is also
          passed to the boot process, and subsequently other programs,
          as environment variables (see also osinit.dis in root(3)).
          However, values whose names begin with an asterisk * are
          used by the kernel and are not converted into environment
          variables.

          The following sections describe how variables are used.

        etherX=value
          This defines an Ethernet interface.  X, a unique monotoni-
          cally increasing number beginning at 0, identifies an Ether-
          net card to be probed at system boot.  Probing stops when a
          card is found or there is no line for etherX+1.  After prob-
          ing as directed by the etherX lines, any remaining ethernet
          cards that can be automatically detected are added.  Almost
          all cards can be automatically detected.  For debugging pur-
          poses, automatic probing can be disabled by specifying the
          line *noetherprobe=.  This automatic probing is only done by

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

          the kernel, not by 9load(10.8). Thus, if you want to load a
          kernel over the ethernet, you need to specify an ether0 line
          so that 9load can find the ethernet card, even if the kernel
          would have automatically detected it.

          Some cards are software configurable and do not require all
          options.  Unspecified options default to the factory
          defaults.

          Known types are

          ne2000
               Not software configurable. 16-bit card.  Defaults are
                    port=0x300 irq=2 mem=0x04000 size=0x4000
               The option (no value) nodummyrr is needed on some
               (near) clones to turn off a dummy remote read in the
               driver.

          amd79c970
               The AMD PCnet PCI Ethernet Adapter (AM79C970).  (This
               is the ethernet adapter used by VMware.)  Completely
               configurable, no options need be given.

          wd8003
               Includes WD8013 and SMC Elite and Elite Ultra cards.
               There are varying degrees of software configurability.
               Cards may be in either 8-bit or 16-bit slots.  Defaults
               are
                    port=0x280 irq=3 mem=0xD0000 size=0x2000
               BUG: On many machines only the 16 bit card works.

          elnk3
               The 3COM Etherlink III series of cards including the
               5x9, 59x, and 905 and 905B.  Completely configurable,
               no options need be given.  The media may be specified
               by setting media= to the value 10BaseT, 10Base2,
               100BaseTX, 100BaseFX, aui, and mii.  If you need to
               force full duplex, because for example the Ethernet
               switch does not negotiate correctly, just name the word
               (no value) fullduplex or 100BASE-TXFD.  Similarly, to
               force 100Mbit operation, specify force100.  Port 0x110
               is used for the little ISA configuration dance.

          3c589
               The 3COM 3C589 series PCMCIA cards, including the 3C562
               and the 589E.  There is no support for the modem on the
               3C562.  Completely configurable, no options need be
               given.  Defaults are
                    port=0x240 irq=10
               The media may be specified as media=10BaseT or
               media=10Base2.

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

          ec2t The Linksys Combo PCMCIA EthernetCard (EC2T), EtherFast
               10/100 PCMCIA cards (PCMPC100) and integrated con-
               trollers (PCM100), the Netgear FA410TX 10/100 PCMCIA
               card and the Accton EtherPair-PCMCIA (EN2216).  Com-
               pletely configurable, no options need be given.
               Defaults are
                    port=0x300 irq=9
               These cards are NE2000 clones.  Other NE2000 compatible
               PCMCIA cards may be tried with the option
                    id=string
               where string is a unique identifier string contained in
               the attribute memory of the card (see pcmcia(8));
               unlike most options in plan9.ini, this string is case-
               sensitive.  The option dummyrr=[01] can be used to turn
               off (0) or on (1) a dummy remote read in the driver in
               such cases, depending on how NE2000 compatible they
               are.

          i82557
               Cards using the Intel 8255[789] Fast Ethernet PCI Bus
               LAN Controller such as the Intel EtherExpress PRO/100B.
               Completely configurable, no options need be given.  If
               you need to force the media, specify one of the options
               (no value) 10BASE-T, 10BASE-2, 10BASE-5, 100BASE-TX,
               10BASE-TFD, 100BASE-TXFD, 100BASE-T4, 100BASE-FX, or
               100BASE-FXFD.

          2114x
               Cards using the Digital Equipment (now Intel) 2114x PCI
               Fast Ethernet Adapter Controller, for example the Net-
               gear FA310.  Completely configurable, no options need
               be given.  Media can be specified the same was as for
               the i82557.  Some cards using the PNIC and PNIC2 near-
               clone chips may also work.

          wavelan
               Lucent Wavelan (Orinoco) IEEE 802.11b and compatible
               PCMCIA cards.  Compatible cards include the Dell True-
               Mobile 1150 and the Linksys Instant Wireless Network PC
               Card.  Port and IRQ defaults are 0x180 and 3 respec-
               tively.

               These cards take a number of unique options to aid in
               identifying the card correctly on the 802.11b network.
               The network may be ad hoc or managed (i.e. use an
               access point):
                    mode=[adhoc, managed]
               and defaults to managed. The 802.11b network to attach
               to (managed mode) or identify as (ad hoc mode), is
               specified by
                    essid=string
               and defaults to a null string.  The card station name

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

               is given by
                    station=string
               and defaults to Plan 9 STA. The channel to use is given
               by
                    channel=number
               where number lies in the range 1 to 16 inclusive; the
               channel is normally negotiated automatically.

               If the card is capable of encryption, the following
               options may be used:
                    crypt=[off, on]
               and defaults to on.
                    keyN=string
               sets the encryption key n (where n is in the range 1 to
               4 inclusive) to string; this will also set the transmit
               key to n (see below).
                    txkey=number
               sets the transmit key to use to be number in the range
               1 to 4 inclusive.  If it is desired to exclude or
               include unencrypted packets
                    clear=[off, on]
               configures reception and defaults to inclusion.

               The defaults are intended to match the common case of a
               managed network with encryption and a typical entry
               would only require, for example
                    essid=left-armpit key2=fishcalledraawaru
               if the port and IRQ defaults are used.  These options
               may be set after boot by writing to the device's ctl
               file using a space as the separator between option and
               value, e.g.
                    echo 'key2 fishcalledraawaru' > /net/ether0/0/ctl

          wavelanpci
               PCI ethernet adapters that use the same Wavelan pro-
               gramming interface.  Currently the only tested cards
               are those based on the Intersil Prism 2.5 chipset.

          83815
               National Semiconductor DP83815-based adapters, notably
               the Netgear FA311, Netgear FA312, and various SiS
               built-in controllers such as the SiS900.  On the SiS
               controllers, the ethernet address is not detected prop-
               erly; specify it with an ea= attribute.

          rtl8139
               The Realtek 8139.

          82543gc
               The Intel RS-82543GC gigabit ethernet controller, as
               found on the Intel PRO/1000[FT] server adapter.  The
               older non-[FT] cards based on the 82542 (LSI L2A1157)

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

               chip are not supported, although support would probably
               be easy to add.

          smc91cxx
               SMC 91cXX chip-based PCMCIA adapters, notably the SMC
               EtherEZ card.

          sink A /dev/null for ethernet packets - the interface dis-
               cards sent packets and never receives any.  This is
               used to provide a test bed for some experimental ether-
               net bridging software.

        usbX=type=uhci port=xxx irq=xxx
          This specifies the settings for a USB UHCI controller.  Like
          the ethernet controllers, USB controllers are autodetected
          after scanning for the ones listed in plan9.ini. Thus, most
          systems will not need a usbX line.  Also like the ethernet
          controllers, USB autoprobing can be disabled by specifying
          the line *nousbprobe=.

        scsiX=value
          This defines a SCSI interface which cannot be automatically
          detected by the kernel.

          Known types are

          aha1542
               The Adaptec 154x series of controllers (and clones).
               Almost completely configurable, only the
                    port=0x300
               option need be given.

          NCR/Symbios/LSI Logic 53c8xx-based adapters and Mylex Multi-
          Master (Buslogic BT-*) adapters are automatically detected
          and need no entries.

          By default, the NCR 53c8xx driver searches for up to 32 con-
          trollers.  This can be changed by setting the variable
          *maxsd53c8xx.

          By default the Mylex driver resets SCSI cards by using both
          the hard reset and SCSI bus reset flags in the driver inter-
          face.  If a variable *noscsireset is defined, the SCSI bus
          reset flag is omitted.

        Uarts
          Plan 9 automatically configures COM1 and COM2, if found, as
          eia0 (port 0x3F8, IRQ4) and eia1 (port 0x2F8, IRQ3) respec-
          tively.  These devices can be disabled by adding a line:
              eiaX=disabled
          This is typically done in order to reuse the IRQ for another
          device.

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

          The system used to support various serial concentrators,
          including the TTC 8 serial line card and various models in
          the Star Gate Avanstar series of intelligent serial boards.
          These are no longer supported; the much simpler Perle PCI-
          Fast4, PCI-Fast8, and PCI-Fast16 controllers have taken
          their places.  These latter cards are automatically detected
          and need no configuration lines.

          The line serial=type=com can be used to specify settings for
          a PCMCIA modem.

        mouseport=value
          This specifies where the mouse is attached.  Value can be

          ps2  the PS2 mouse/keyboard port.  The BIOS setup procedure
               should be used to configure the machine appropriately.

          ps2intellimouse
               an Intellimouse on the PS2 port.

          0    for COM1

          1    for COM2

        modemport=value
          Picks the UART line to call out on.  This is used when con-
          necting to a file server over an async line.  Value is the
          number of the port.

        pccard0=disabled
          Disable probing for and automatic configuration of PC card
          controllers.

        pcmciaX=type=XXX irq=value
          If the default IRQ for the PCMCIA is correct, this entry can
          be omitted.  The value of type is ignored.

        pcmcia0=disabled
          Disable probing for and automatic configuration of PCMCIA
          controllers.

        console=value params
          This is used to specify the console device.  The default
          value is cga; a number 0 or 1 specifies COM1 or COM2 respec-
          tively.  A serial console is initially configured with the
          eia(3) configuration string b9600 l8 pn s1, specifying 9600
          baud, 8 bit bytes, no parity, and one stop bit.  If params
          is given, it will be used to further configure the uart.
          Notice that there is no = sign in the params syntax.  For
          example,
              console=0 b19200 po
          would use COM1 at 19,200 baud with odd parity.

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

        bootfile=value
          This is used to direct the actions of 9load(10.8) by naming
          the device and file from which to load the kernel.

        partition=value
          This defines the partition table 9load(10.8) will examine to
          find disk partitioning information.  By default, a partition
          table in a Plan 9 partition is consulted; if no such table
          is found, an old-Plan 9 partition table on the next-to-last
          or last sector of the disk is consulted.  A value of new
          consults only the first table, old only the second.

        *maxmem=value
          This defines the maximum physical address that the system
          will scan when sizing memory.  By default the operating sys-
          tem will scan up to 768 megabytes, but setting *maxmem will
          limit the scan.  If the system has more than 768 megabytes,
          you must set *maxmem for the kernel to find it.  *maxmem
          must be less than 1.75 gigabytes.

        *kernelpercent=value
          This defines what percentage of available memory is reserved
          for the kernel allocation pool.  The remainder is left for
          user processes.  The default value is 30 on CPU servers, 60
          on terminals with less than 16MB of memory, and 40 on termi-
          nals with memories of 16MB or more.  Terminals use more ker-
          nel memory because draw(3) maintains its graphic images in
          kernel memory.  This deprecated option is rarely necessary
          in newer kernels.

        *nomce=value
          If machine check exceptions are supported by the processor,
          then they are enabled by default.  Setting this variable to
          1 causes them to be disabled even when available.

        *nomp=
          A multiprocessor machine will enable all processors by
          default.  Setting *nomp restricts the kernel to starting
          only one processor and using the traditional interrupt con-
          troller.

        *ncpu=value
          Setting *ncpu restricts the kernel to starting at most value
          processors.

        *pcimaxbno=value
          This puts a limit on the maximum bus number probed on a PCI
          bus (default 255).  For example, a value of 1 should suffice
          on a 'standard' motherboard with an AGP slot.  This, and
          *pcimaxdno below are rarely used and only on troublesome or
          suspect hardware.

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

        *pcimaxdno=value
          This puts a limit on the maximum device number probed on a
          PCI bus (default 31).

        *nopcirouting=
          Disable pci routing during boot.  May solve interrupt rout-
          ing problems on certain machines.

        ioexclude=value
          Specifies a list of ranges I/O ports to exclude from use by
          drivers.  Ranges are inclusive on both ends and separated by
          commas.  For example:
              ioexclude=0x330-0x337,0x430-0x43F

        apm0=
          This enables the ``advanced power management'' interface as
          described in apm(3). The main feature of the interface is
          the ability to watch battery life.  It is not on by default
          because it causes problems on some laptops.

        monitor=value
        vgasize=value
          These are used not by the kernel but by system initialisa-
          tion.

        *dpms=value
          This is used to specify the screen blanking behavior of the
          MGA4xx video driver.  Values are standby, suspend, and off.
          The first two specify differing levels of power saving; the
          third turns the monitor off completely.

        nvr=value
          This is used by a file server kernel to locate a file hold-
          ing information to configure the file system.  The file can-
          not live on a SCSI disk.  The default is fd!0!plan9.nvr
          (sic), unless bootfile is set, in which case it is plan9.nvr
          on the same disk as bootfile.  The syntax is either
          fd!unit!name or hd!unit!name where unit is the numeric unit
          id.  This variant syntax is a vestige of the file server
          kernel's origins.

        audioX=value
          This defines a sound interface.

          Known types are

          sb16 Sound Blaster 16.

          ess1688
               A Sound Blaster clone.

          The DMA channel may be any of 5, 6, or 7.  The defaults are

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

               port=0x220 irq=7 dma=5

        fs=a.b.c.d
        auth=a.b.c.d
          These specify the IP address of the file and authentication
          server to use when mounting a network-provided root file
          system.  They are used only if the addresses cannot be
          determined via DHCP.

     Multiple Configurations
          A plan9.ini file may contain multiple configurations, each
          within a block beginning with a line
               [tag]
          A special block with the tag menu gives a list of blocks
          from which the user may interactively select the contents of
          plan9.ini.  There may also be multiple blocks with the tag
          common which will be included in all selections; if any
          lines appear in plan9.ini before the first block, they are
          treated as a common block.

          Within the menu block the following configuration lines are
          allowed:

        menuitem=tag[, description]
          The block identified by tag will appear in the presented
          menu.  The menu entry will consist of the tag unless the
          optional description is given.

        menudefault=tag[, timeout]
          Identifies a default block to be given in the menu selection
          prompt.  If the optional timeout is given (in seconds), the
          default block will be selected if there is no user input
          within the timeout period.

        menuconsole=value[, baud]
          Selects a serial console upon which to present the menu as
          no console or baud configuration information will have been
          processed yet (the plan9.ini contents are still to be
          decided...).

          In response to the menu being printed, the user is prompted
          to select a menu item from the list.  If the numeric
          response is followed by a p, the selected configuration is
          printed and the menu presented again.

          The line
               menuitem=tag
          is prefixed to the selected configuration as an aid to
          user-level initialization scripts.

     EXAMPLES
          A representative plan9.ini:

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

               % cat /n/c:/plan9.ini
               ether0=type=3C509
               mouseport=ps2
               modemport=1
               serial0=type=generic port=0x3E8 irq=5
               monitor=445x
               vgasize=1600x1200x8
               %

          Minimum CONFIG.SYS and AUTOEXEC.BAT files to use COM2 as a
          console:

               % cat /n/c:/config.sys
               SHELL=COMMAND.COM COM2 /P
               % cat /n/c:/autoexec.bat
               @ECHO OFF
               PROMPT $p$g
               PATH C:\DOS;C:\BIN
               mode com2:96,n,8,1,p
               SET TEMP=C:\TMP
               %

          Simple plan9.ini with multiple configurations:

               [menu]
               menuitem=vga, Plan 9 with VGA
               menuitem=novga, Plan 9 no automatic VGA
               menudefault=vga

               [vga]
               monitor=multisync135
               vgasize=1024x768x8

               [novga]

               [common]
               ether0=type=i82557
               audio0=type=sb16 port=0x220 irq=5 dma=1

          With this, the following menu will be presented on boot:

               Plan 9 Startup Menu:
               ====================
                   1. Plan 9 with VGA
                   2. Plan 9 no automatic VGA
               Selection[default==1]:

          Selecting item 1 generates the following plan9.ini to be
          used by the remainder of the bootstrap process:

               menuitem=vga
               monitor=multisync135

     PLAN9.INI(10.6)                                   PLAN9.INI(10.6)

               vgasize=1024x768x8
               ether0=type=i82557
               audio0=type=sb16 port=0x220 irq=5 dma=1

          and selecting item 2:

               menuitem=novga
               ether0=type=i82557
               audio0=type=sb16 port=0x220 irq=5 dma=1

     SEE ALSO
          root(3), 9load(10.8)

     BUGS
          Being able to set the console device to other than a display
          is marginally useful on file servers; MS-DOS and the pro-
          grams which run under it are so tightly bound to the display
          that it is necessary to have a display if any setup or
          reconfiguration programs need to be run.  Also, the delay
          before any messages appear at boot time is disconcerting, as
          any error messages from the BIOS are lost.

          This idea is at best an interesting experiment that needs
          another iteration.