# boot(8)

    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, 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,
         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 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 mentioned 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 controlled 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  kernel  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 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 controller.)

         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 specified 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  logical  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 device 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 directory 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 Windows 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 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  network
         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  network  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 flotsam 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 network 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 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 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  peripherals on a PC automatically, and Minix doesn't
         even try.

    AUTHOR
         Kees J. Bot <kjb@cs.vu.nl>