glenda.party
term% ls -F
term% pwd
$home/manuals/9front/8/boot
term% cat index.txt
BOOT(8)                     System Manager's Manual                    BOOT(8)



NAME
       boot, bootrc - connect to the root file server

SYNOPSIS
       /boot/boot [ -fkm ] [ -uusername ] [ method!device ] [ args ]

DESCRIPTION
       Boot is the first program run after a kernel has been loaded. It mounts
       bootfs.paq, a compressed filesystem contained in root(3), sets  up  the
       rc(1) environment and executes bootrc passing on its arguments.  Bootrc
       connects to the file server that will serve the root, performs any  au‐
       thentication needed to connect to that server, and executes the init(8)
       program. Both boot and bootrc are started by the kernel, never run  di‐
       rectly  by  the user.  See booting(8) for information about the process
       of loading the kernel (and boot) into memory.

       Once loaded, the kernel initializes its data  structures  and  devices.
       It sets the two environment variables /env/cputype and /env/terminal to
       describe the processor.  It then  binds  a  place-holder  file  server,
       root(3), onto / and crafts an initial process whose sole function is to
       exec(2) /boot/boot, a binary which is compiled into root(3).

       The command line passed depends on the information passed from boot ROM
       to  kernel.   Machines  that  boot directly from ROM (that is, most ma‐
       chines other than PCs) pass the boot line given to the ROM directly  to
       boot.

       On the PC, each line in the file plan9.ini(8) of the form name=value is
       passed to the boot program as an environment  variable  with  the  same
       name and value.  The command line is

              /boot/boot method!device

       After  boot passed its execution to bootrc, it must determine the file‐
       server to use and a method with which to connect to it.  Typically  de‐
       vice  will name a local disk partition or ethernet interface.  The com‐
       plete list of methods is given below.

       Bootrc must also set a user name to be used as the owner of devices and
       all console processes and an encryption key to be used when challenged.
       Bootrc will prompt for these.

       Method and device are prompted for first.  The prompt lists  all  valid
       methods, with the default in brackets, for example:

              bootargs is (tcp, il, local!device) [local!/dev/sdC0/fscache]

       A  newline picks the default. Entering !rc breaks into the rc(1) shell.
       Other possible responses are  method,  method!device  or  method!device
       args.

       The  other interactions depend on whether the system is a terminal or a
       CPU server.

   Terminal
       A terminal must have a username set.  If not specified with  the  user=
       plan9.ini(8)  parameter  or  the -u option, boot will prompt for one on
       the console:

              user:

       The user will also be prompted for a password to be used as an  encryp‐
       tion key on each attach(5):

              password:

       Once connected, boot mounts the root file system before / and makes the
       connection available as #s/boot for subsequent processes to mount  (see
       bind(2)).   Boot completes by exec(2)'ing /$cputype/init -t.  If the -m
       option is given it is also passed as an option to init.  If  the  envi‐
       ronment variable init is set (via plan9.ini(8)), it is used as an argu‐
       ment to exec(2) instead.

       If the bootfs.paq has been built with the cache  file  system,  cfs(4),
       the local disk partition /dev/sdXX/cache (where XX is a unit specifier)
       exists, and the root file system is from a remote server,  then  bootrc
       will  insert  a  user level cache process between the remote server and
       the local namespace that caches all remote accesses on the local parti‐
       tion.  The -f flag commands cfs(4) to reformat the cache partition.

   CPU Servers
       The  user  owning devices and console processes on CPU servers and that
       user's domain and encryption key are read from NVRAM  on  all  machines
       except   PCs.    PCs   keep  the  information  in  the  disk  partition
       /dev/sdXX/nvram.  If a -k option is given or if no  stored  information
       is found boot will prompt for all three items and store them.

              password:
              authid: bootes
              authdom: research.bell-labs.com

       The  key  is  used  for  mutual  authentication  of  the server and its
       clients.  The domain and id identify the owner of the key.

       Once connected, boot behaves as on the terminal except for  exec(2)'ing
       /$cputype/init -c.

   Booting Methods
       The  methods  available  to any system depend on what was compiled into
       the kernel.  The complete list of booting methods are listed below.

       tcp     connect via Ethernet using the TCP protocol.   The  device  and
               args  are  passed to ipconfig(8) when configuring the IP stack.
               The plan9.ini(8) variables fs and auth override the file server
               and  authentication  servers obtained (if any) from DHCP during
               ipconfig(8).

       il      the same as tcp but uses the IL  protocol  to  connect  to  the
               fileserver.

       local   connect  to the local file system.  The device is a disk parti‐
               tion file holding a file system.  Bootrc inspects the disk par‐
               tition  with  fstype(1)  to  determine the file system type and
               starts the appropriate server with args.

EXAMPLES
       On PCs, the  default  arguments  to  boot  are  constructed  using  the
       bootargs variable in plan9.ini(8).

       Start cwfs(4) in config mode:

              bootargs=local!/dev/sdC0/fscache -c

       Use  an  IP  stack on an alternate ethernet interface with a static ad‐
       dress and fixed file server and authentication server addresses.

              fs=192.168.0.2
              auth=192.168.0.3
              bootargs=tcp!-g 192.168.0.1 ether /net/ether1 \
                  192.168.0.50 255.255.255.0

       (The bootargs line is split only for presentation; it is  one  line  in
       the file.)

FILES
       #s/boot
       #//boot/boot
       #//boot/bootfs.paq

SOURCE
       /sys/src/9/boot

SEE ALSO
       root(3), dhcpd(8), init(8)

BUGS
       The use of bootargs in general is odd.

HISTORY
       Boot  first  appeared  in Plan 9 from Bell Labs. It was rewritten in rc
       for 9front (April, 2011).



                                                                       BOOT(8)