BOOT(8)

NAME
boot - from power on to the login prompt

DESCRIPTION
At power on the machine reads sector zero of the boot device into memory and executes it. This bootstrap code loads /boot, the Minix Boot Monitor. The monitor loads the kernel binaries from /minix, or the newest file in /minix if it is a directory.

The Minix system is now running, the different tasks initialize themselves and control is transferred to the last one, init.

Init is the grandparent of all Minix 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, then it reads the time zone from /etc/timeinfo followed by a call to readclock(8) to set Minix 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 starts the update(8) and cron(8) daemons, and initializes the network services. /etc/rc finally recovers crashed editor buffers and cleans out the tmp directories.

Init reads /etc/ttys and starts a getty(8) for each enabled terminal line to allow a user to log in.

BOOT ENVIRONMENT
Many features of the drivers inside the kernel are controlled by settings in the boot environment, 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 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.

The following variable settings are recognized by the kernel (monitor(8) names variables that are special to both the monitor and the kernel):

hd = at | bios | ps | esdi | xt
    Choose the driver that is to be used for the hard disk, in order: IBM/AT (classic AT or newer IDE), BIOS (generic driver), PS/2 (some PS/2 models), ESDI (other PS/2's), or IBM/XT. By default the first of these drivers that is available is used. Most drivers are present in the kernel as distributed, but may be taken out by modifying /usr/include/minix/config.h.

bus = at | ps | mca
    Set the machine type to AT, PS/2, or a PS/2 with an MCA bus. Ninety-nine out of hundred times the type can be determined by looking at the machine ID bytes. If it is guessed wrong then the machine will hang after the first few boot messages. You can set the bus variable to correct the situation.

DPETH0 = I/O-addr:irq:mem_addr
    Set the I/O address (hex), IRQ (decimal) and memory address (hex) of the ethernet board. By default it is configured as 280:3:D0000. (Note that the IRQ conflicts with the second serial line, so the serial line is turned off if the ethernet board is configured for IRQ 3.)

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.

sdn = target,lun
    Program SCSI disk sdn to have the given target and logical unit number. The target and lun of a tape or other SCSI device may be changed by setting the sdn variable that would be used had it been a disk. So tape device st7 can be set to target 4, lun 1 with sd35=4,1.

TCP/IP CONFIGURATION
To use TCP/IP you have to compile a kernel with networking enabled, and the proper board addresses configured, see the DPETH0 boot variable above. The driver supports only the Western Digital 8003 and Western Digital 8013 ethernet cards. Many newer variants of the WD8013, now under the SMC brand, also work.

You are likely to use TCP/IP in one of two situations:

    In a small network with no support from a "big" host. Connected to a large network with address and name servers.

  Small Network
In a network where the Minix machine can't obtain its IP address and name from a different host you need to run a RARP daemon. This daemon is started if you have an /etc/ethers file. You also need an /etc/hosts file that lists the IP address of your machine. In a private little network you can use the 192.9.200.* addresses, these addresses were used by SUN for machines without a registered network address. They are usually blocked at gateways. Suppose you have two machines in your network then /etc/ethers could look like this:

    0:0:c0:a:77:23    darask
    0:0:c0:a:68:ce    burask

Use hostaddr -e to find out what the six octet ethernet address of a host is. Use the address as printed: lowercase hex digits, no leading zeros. The /etc/hosts file shows their IP addresses:

    127.0.0.1    localhost
    192.9.200.1    darask
    192.9.200.2    burask

Warning! Do not add ethernet addresses of diskless workstations to your ethers file. A Sun for instance has the stupid habit of booting from the first RARP server that answers, probably your Minix machine...

  Large Network
In a network with a central network administration your machine's IP address and name are given by the RARP and name services of the special servers on the network. For a new machine you need to apply for an IP address and host name with your network administrator supplying the ethernet address of your machine. You don't need any configuration files now, the irdpd and nonamed daemons automatically find a router and a name server.

Note that no knowledge of the IP address or hostname of the Minix machine itself is necessary, it all comes from the RARP and name servers. A series of Minix machines can therefore set up identically. Even if you have no RARP or name servers you can still set them up identically if you list all the Minix hosts in the hosts and ethers files.

(The names "darask" and "burask" are names of cities from the Dutch translation of the novel "The Many-Colored Land" by Julian May. The author of this text likes names of hosts to be things that contain people, like cities and ships.)

FILES

/boot
    Minix Boot Monitor.

/minix
    Kernel image, or directory containing them.

/etc/rc
    First of the system initialization files.

/etc/hosts
    Name to IP address mapping.

/etc/ethers
    Name to ethernet address mapping.

SEE ALSO
monitor(8), init(8), inet(8), loadkeys(8), readclock(8), fsck(1), update(8), cron(8), ttys(5), getty(8), hostaddr(1), ifconfig(8), irdpd(8), nonamed(8), rarpd(8), hosts(5), ethers(5), set_net_default(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/
    If the name of the /usr file system has not been set in /etc/fstab. You can type a device name, say fd0.

hostaddr: unable to fetch IP address
    TCP/IP misconfiguration. The RARP may have failed because the ethernet address of the machine is not entered in either the remote or the local ethers file. Either talk to your Network Administrator, or make an ethers 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.

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 peripherals on a PC automatically, and Minix doesn't try to.

AUTHOR
Kees J. Bot (kjb@cs.vu.nl)