NAME
boot - from power on to the login prompt
DESCRIPTION
At power on the machine reads the first sector of the boot
device into memory and executes it. This bootstrap code
loads /boot/boot, the MINIX 3 Boot Monitor. The monitor
loads the kernel binaries from /boot/image, or the newest
file in /boot/image if it is a directory.
The MINIX 3 system is now running, the different tasks ini-
tialize themselves and control is transferred to the last
one, init.
Init is the grandparent of all MINIX 3 processes, it is
responsible for starting login processes on each terminal,
but first it runs /etc/rc.
/etc/rc checks the state of the system and starts daemons.
First it sets the keyboard translation to the mapping in
/etc/keymap if present, followed by a call to readclock(8)
to set MINIX 3 time from the hardware clock. Next the file
systems are checked if necessary and the /usr file system is
mounted.
The system is now ready for multiuser startup, /etc/rc calls
/usr/etc/rc that cleans out /tmp, /usr/tmp, and resets or
cycles log files by running /usr/etc/daily, starts the
update(8) and cron(8) daemons, and initializes the network
services. /etc/rc finally runs /usr/local/etc to initialize
the system in a site or host dependent way.
Init reads /etc/ttytab and starts a getty(8) for each
enabled terminal line to allow a user to log in.
OPTIONS
bootopts=-s
The value of the boot variable bootopts is passed to
/etc/rc. If it contains -s then the system will run a
single user shell before continuing with multiuser
startup. (Note that one normally uses boot -s instead
of setting bootopts.)
bootopts=-a
This flag tells that /etc/fstab must be ignored. The
system asks for a device to use as /usr instead. This
will also be done if the root device is not as men-
tioned in /etc/fstab.
bootopts=-f
Force a file system check, even if the system was shut
down properly. (Do this once in a while to be sure
about the state of the file systems.)
servers=program[,program...]
Names the special servers that must be started in
/usr/etc/rc. The setting servers=inet will start the
TCP/IP server.
BOOT ENVIRONMENT
Many features of the drivers inside the kernel are con-
trolled by settings in the boot environmenti, like bootopts
above does for /etc/rc. The values of these variables are
usually colon or comma separated numbers configuring the
driver. DPETH0 = 300:10 tells the DP ethernet driver to use
I/O address 0x300, interrupt request 10, and the default
memory address (0xD0000, values may be omitted) for the
first ethernet board. (Note that IRQ 2 is redirected to IRQ
9 on AT's and PS/2's, so use 9 if a device is jumpered for
2.)
Variables that are special to both the monitor and the ker-
nel are described in monitor(8). This section lists extra
variables or variable settings:
cn = at | bios | esdi | xt | aha1540 | dosfile | fatfile
Choose the driver that is to be used as controller n,
in order: IBM/AT (classic AT or newer IDE), BIOS (any
disk), ESDI (some PS/2s), IBM/XT, Adaptec 154x, MINIX 3
under DOS "file as disk", FAT file system "file as
disk". By default at is used on AT bus systems, bios
on PS/2s and XTs, and dosfile when running under DOS.
Most drivers are present in the kernel as distributed,
but may be taken out by modifying
/usr/include/minix/config.h. See controller(4). (An
XT should always use the BIOS driver, not the XT
driver, because BIOS calls are cheap on an XT. The XT
driver can be used on AT machines with an old XT con-
troller.)
DPETHn = on | off
Turn an ethernet board on or off. The driver is by
default in "sink" mode for all boards. The sink mode
allows one to use the driver without an ethernet board
installed. The driver will play /dev/null for that
device, i.e. nothing comes in, and anything send out is
dropped on the floor. If the board is turned on then
the driver will use it to send out packets, if it is
turned off then the driver will fail for that board.
DPETHn = I/O-addr:irq:mem_addr:mem_size (WD80x3)
DPETHn = I/O-addr:irq:0 (NE2000)
DPETHn = I/O-addr:irq:flags (3c503)
Set the I/O address (hex), IRQ (decimal), memory
address (hex), memory size (hex), or flags (hex) of the
n-th ethernet board and turn it on. By default they
are configured as 280:3:D0000 and 300:5:C8000 with the
memory size set to 2000, 4000, or 8000 depending on the
type of board found. For the Western Digital cards the
IRQ must be what the board expects, but the memory
address is programmed into the board by the driver.
The SMC EtherEZ board, a WD8013 successor, has only 8K
memory. This confuses the driver, so you need to
explicitly specify the board size as being 2000. The
memory address and size have no meaning for the Novell
ethernet boards, but the address may be explicitly set
to zero to indicate that the board is a Novell ethernet
board. For the 3Com 3c503 the third parameter are
flags, with the low bit indicates that the on-board
tranceiver must be used if 0 (thin ethernet), or that
an external tranceiver is used on the AUI port if set
to 1. The IRQ is software settable, and must be speci-
fied as 2 (XT), 3, 4, 5, or 9 (AT). The memory address
is set on the board by jumpers. The driver does not
support I/O mode for the 3c503. (Note the little
differences between board types. For the 8003/8013 and
NE1000/NE2000 the IRQ is fixed and the memory address
variable, for the 3c503 the IRQ is variable and the
memory address is fixed, but need not be specified.
Messy.)
DPETHn_EA = e0:e1:e2:e3:e4:e5
Set the ethernet address of the n-th ethernet board.
The address is normally obtained from the ethernet
board, so only in exceptional circumstances is this
setting ever needed. (Use the address of the main
server if you want a career change.)
AHA0 = I/O-addr:bus-on:bus-off:tr-speed
Configure the Adaptec 154xA SCSI host adapter to use
the given I/O address (hex), Bus-on time (decimal),
Bus-off time (decimal) and transfer speed (hex). The
default is 330:15:1:00. The default transfer speed is
always 5.0 Mb/s (code 00) ignoring the jumper settings.
aha1540-dn = sleep-time:target,lun
Program SCSI disk n to have the given target and logi-
cal unit number. The target and lun of a tape or other
SCSI device may be changed by setting the aha1540-dn
variable that would be used had it been a disk. So
tape device c0t7 can be set to target 4, lun 1 with
aha1540-d7=:4,1. (The sleep-time parameter is present
but ignored to be compatible with Minix-vmd.)
dosfile-dn = file
Tells the DOS virtual disk driver for disk n to use a
given file as a disk. The file is a DOS file name that
the boot monitor must be able to open.
fatfile-dn = driver:minor:file
Tells the FAT virtual disk driver for disk n to use a
given file as a disk. The driver parameter is the name
of driver that handles the disk, and minor is the dev-
ice number of the partition where the file is found.
See controller(4) for names and numbers. The file
argument is the path to the file from the root direc-
tory down. The driver named must also be tied to a
controller with a cn variable, so that the FAT file
driver can find it. A handy way to find the proper
minor number is to run ls -l on the device where the
file is found. As a example, we assume the most common
situation of a disk file on the first partition of the
first drive on an ATA (IDE) controller:
c0 = fatfile
c1 = at
fatfile-d0 = at:1:/minix/minix.mnx
TZ = GMT0
This sets the time zone the hardware clock is running
in. Readclock uses this to correctly obtain the time
of the clock. The timezone of the system is set in
/etc/profile. This boot variable is normally not set,
only a few UNIX die-hards who don't care about the time
Windows sees and don't want to change the clock twice a
year for daylight savings use this option. (Set Win-
dows time to the time zone of Casablanca to match.)
TCP/IP CONFIGURATION
To use TCP/IP you need to run the inet server, and unless
you are running standalone you have to enable the ethernet
driver. See the servers and DPETHn boot variables above.
The driver supports these ethernet cards: Western Digital
8003, Western Digital 8013, SMC Elite Ultra 16, Novell
NE1000 and NE2000, 3Com Etherlink II (3c503). Many newer
variants of the WD8013, now under the SMC brand, may also
work. A common PCI reimplementation of the NE2000 using the
Realtek 80 chipset is also supported. Make sure it's just a
10 mbit device and that it has a chip marked "RTL 8029".
You are likely to use TCP/IP in one of three situations:
Standalone with no connection to a network.
In a small network with no support from a "big" host.
Connected to a large network with address and name
servers.
In each situation you need a different set of configuration
files.
Standalone
All you need is a name and an IP address. Suppose the name
is "flotsam" and the IP address is 192.168.0.1 from the
private IP space, then this is put in /etc/hosts:
192.168.0.1 flotsam
And this in /etc/dhcp.conf:
host 192.168.0.0/24 {};
interface ip0 flotsam;
Small Network
A network requires an ethernet driver. You need to enable
one in <minix/config.h> and you need to tell inet that it
should use that driver by making /etc/inet.conf look like
this:
eth0 DP8390 0 { default; };
The second word (DP8390) must the name of the ethernet
driver you've enabled. It can also be seen among the
drivers in the output of ps ax. See also inet(8).
In a small network there may not be a DHCP server for MINIX
3 to obtain its IP address and name from, so you need
specify the ethernet address of your machine and host names
of all machines in the hosts and DHCP configuration files.
Suppose your machine is to be named "flotsam", and another
machine in the network is named "jetsam", and let's use net-
work 192.168.0.0/24 again. The file /etc/hosts now looks
like this:
192.168.0.1 flotsam
192.168.0.2 jetsam
And /etc/dhcp.conf like this:
host 192.168.0.0/24 {};
client 0:1:1b:a:68:ce flotsam;
Use hostaddr -e to find out what the ethernet address of
your network card is. (The address above is an example.)
A host needs to have all hostnames used on your little net-
work in its host file. In the DHCP configuration you only
need the client entry of the system itself, but it may be
useful to add all client entries to make them all the same.
If one of the machines is always on when any of the others
is, then you can let it be a DHCP server. The other
machines don't need a hosts or DHCP file anymore. If flot-
sam is the server then its /etc/dhcp.conf looks like this:
host 192.168.0.0/24 {
DNSserver flotsam;
};
client 0:1:1b:a:68:ce flotsam { option server; };
client 0:0:c0:3a:12:10 jetsam;
Large Network
In a network with a central network administration your
machine's IP address and name are given by the DHCP server.
You don't need any configuration files. If you want your
machine to do more, like being a router or something, then
see inet(8) on setting up more than one network interface.
Simpler configuration tools
The dhcpd and nonamed daemons are complex little programs
that try to obtain information about their surroundings
automatically to tell the machine what its place in the net-
work is. It should come as no surprise that there are
simpler utilities to configure a machine. On a memory
starved machine it may even be wise to configure a machine
statically to get rid of the daemons. The first daemon,
dhcpd, can be replaced by:
ifconfig -h host-IP-address -n netmask
add_route -g gateway-IP-address
to set the IP address and netmask of the machine. Note that
you can only do this if the machine has a static IP address,
or chaos will follow. Remove /usr/adm/dhcp.cache if the
DHCP daemon has run before.
The name daemon, nonamed, can be replaced by an entry in
/etc/resolv.conf that specifies an external name daemon:
nameserver nameserver-IP-address
The ifconfig and add_route calls can be placed in the file
/etc/rc.net. Check /usr/etc/rc to see how /etc/rc.net can
be used to override running the normal series of network
deamons. Note that /etc/rc.net is sourced, so you can use
the same variables and functions that /usr/etc/rc uses.
These changes undo all the efforts to make MINIX 3 TCP/IP
autoconfigurable. Make very sure that all the IP addresses
are correct, and that the IP address of your machine is
unique. (Mistakenly using the address of a main server will
make all other machines look at your machine, and will make
all the users of all other machines look at you.)
FILES
/boot MINIX 3 Boot Monitor.
/minix Kernel image, or directory containing
them.
/etc/rc Basic system initialization.
/usr/etc/rc Complete system initialization.
/etc/rc.net Specialized network initialization.
/usr/local/etc/rc Per site initialization.
/etc/hosts Name to IP address mapping.
/etc/dhcp.conf Network initialization.
/etc/resolv.conf Name resolver configuration.
SEE ALSO
monitor(8), init(8), inet(8), loadkeys(8), readclock(8),
fsck(1), fstab(5), update(8), cron(8), ttytab(5), getty(8),
hostaddr(1), ifconfig(8), dhcpd(8), nonamed(8), tcpd(8),
hosts(5), ethers(5), resolv.conf(5), inet(8).
DIAGNOSTICS
Checking File Systems.
If the system has crashed then fsck is called for the
root and /usr file systems. It is wise to reboot if
the root file system must be fixed.
Finish the name of device to mount as /usr: /dev/
The prompt for the -a option, or if the name of the
/usr file system has not been set in /etc/fstab. You
can type a device name, say fd0.
Unable to obtain an IP address after 10 seconds.
TCP/IP misconfiguration. The DHCP daemon may have
failed because the ethernet address of the machine is
not known to the DHCP server, the DHCP configuration is
not filled in properly, or the DHCP server can not be
reached. Either talk to your Network Administrator, or
make a dhcp.conf and a hosts file.
1.2.3.4 login:
If you see an IP address instead of a host name then
the system failed to translate the IP address. Either
talk to your Network Administrator to have the reverse
address translation tables fixed, or make a hosts file.
NOTES
The 10.0.0.0/8, 172.16.0.0/12, and 192.168.0.0/16 networks
can be used for private networks. (This so-called CIDR
notation names an IP address and the number of bits in the
network number. So 172.16.0.0/12 includes all addresses
from 172.16.0.0 to 172.31.255.255.) RFC-1597 will tell you
why private networks are good, and RFC-1627 why they are
bad.
BUGS
Indefinite hangs are possible if I/O addresses or IRQ's are
wrong. A driver may babble about addresses and IRQ's, but
that does not mean that what it says is true, it may just be
configured that way. It is very difficult to find peri-
pherals on a PC automatically, and MINIX 3 doesn't even try.
AUTHOR
Kees J. Bot <kjb@cs.vu.nl>