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
Page 1 Plan 9 (printed 12/20/25)
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.
Page 2 Plan 9 (printed 12/20/25)
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
Page 3 Plan 9 (printed 12/20/25)
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)
Page 4 Plan 9 (printed 12/20/25)
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.
Page 5 Plan 9 (printed 12/20/25)
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.
Page 6 Plan 9 (printed 12/20/25)
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.
Page 7 Plan 9 (printed 12/20/25)
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
Page 8 Plan 9 (printed 12/20/25)
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:
Page 9 Plan 9 (printed 12/20/25)
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
Page 10 Plan 9 (printed 12/20/25)
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.
Page 11 Plan 9 (printed 12/20/25)