Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ init(M) — OpenDesktop 1.0.0y

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

disable(C)

enable(C)

login(M)

sh(C)

stty(C)

who(C)

getty(M)

shutdown(M)

sulogin(ADM)

termio(HW)

kill(S)

gettydefs(F)

inittab(F)

utmp(F)


     INIT(M)                                    UNIX System V



     Name
          init, telinit - process control initialization


     Syntax
          /etc/init [0123456SsQqabc]

          /bin/telinit [0123456SsQqabc]


     Description
          init is a general process spawner.  Its primary role  is  to
          create   processes  from  information  stored  in  the  file
          /etc/inittab [see inittab(F)].

          At any given time, the system is in one  of  eight  possible
          run  levels.  A run level is a software configuration of the
          system under which only a selected group of processes exist.
          The  processes  spawned by init for each of these run levels
          is defined in /etc/inittab.  init can be in one of eight run
          levels,  0-6  and S or s (run levels S and s are identical).
          The run level changes when a privileged user runs /etc/init.
          This  user-spawned  init  sends  appropriate  signals to the
          original init spawned  by  the  operating  system  when  the
          system was booted, telling it which run level to change to.

          If  the   file   /etc/default/boot   contains   the   string
          MAPKEY=YES,  init invokes the mapkey program (see mapkey(M))
          to  map  the  console  keyboard.   If  the  call  to  mapkey
          succeeds,  the  console  is set to 8-bits no parity.  If the
          call  fails,  and  the   string   SERIAL8=YES   appears   in
          /etc/default/boot,  a  serial  console device is assumed and
          set to 8-bits no parity.

          The following are the arguments to init:

               0      shut the machine down so it is  safe  to  remove
                      the  power.  Have the machine remove power if it
                      can.  This state can be executed only  from  the
                      console.

               1      put the system in single-user mode.  Unmount all
                      file  systems  except  root.  All user processes
                      are  killed  except  those  connected   to   the
                      console.   This  state can be executed only from
                      the console.

               2      put the system in multiuser mode.  All multiuser
                      environment  terminal  processes and daemons are
                      spawned.  This state is commonly referred to  as
                      the multiuser state.

               3      start the  remote  file  sharing  processes  and
                      daemons.   Mount and advertise remote resources.
                      Run level 3 extends multiuser mode and is  known
                      as the remote-file-sharing state.

               4      is available to be  defined  as  an  alternative
                      multiuser  environment configuration.  It is not
                      necessary for system operation  and  is  usually
                      not used.

               5      Stop the UNIX system  and  go  to  the  firmware
                      monitor.

               6      Stop the UNIX system and  reboot  to  the  state
                      defined    by    the    initdefault   entry   in
                      /etc/inittab.

               a,b,c  process only those /etc/inittab  entries  having
                      the  a, b or c run level set.  These are pseudo-
                      states, which may  be  defined  to  run  certain
                      commands, but which do not cause the current run
                      level to change.

               Q,q    re-examine /etc/inittab.

               S,s    enter single-user mode.  When this  occurs,  the
                      terminal which executed this command becomes the
                      system console (see Notes for  more  information
                      about  console  device assignment).  This is the
                      only  run  level  that   doesn't   require   the
                      existence  of  a properly formatted /etc/inittab
                      file.  If this file  does  not  exist,  then  by
                      default  the  only legal run level that init can
                      enter is the single-user mode.  When the  system
                      enters  S  or s, all mounted file systems remain
                      mounted and only processes spawned by  init  are
                      killed.

          When a UNIX system is booted, init is  invoked  and  the  following
          occurs.   init  first looks in etc/default/boot to determine
          if autoboot on  panic  is  desired.   Then,  init  looks  in
          /etc/inittab for the initdefault entry [see inittab(F)].  If
          there is one, init uses the  run  level  specified  in  that
          entry  as  the  initial  run level to enter.  If there is no
          initdefault entry in /etc/inittab, init  requests  that  the
          user  enter a run level from the virtual system console.  If
          an S or s is entered, init goes to  the  single-user  state.
          In  the  single-user  state, the virtual console terminal is
          assigned to the user's terminal and is  opened  for  reading
          and  writing.   The sulogin command, which requires the user
          to enter the root password, is  invoked  and  a  message  is
          generated  on  the physical console saying where the virtual
          console has been relocated.  Use either init or  telinit  to
          signal  init  to  change  the run level of the system.  Note
          that if the shell is terminated (via an  end-of-file),  init
          will  only  re-initialize  to  the  single-user state if the
          /etc/inittab file does not exist.

          If a 0 through 6 is entered, init enters  the  corresponding
          run level.  Note that, on the 80386 computer, the run levels
          0, 1, 5, and 6 are reserved states for shutting  the  system
          down;  the  run  levels  2, 3, and 4 are available as normal
          operating states.

          On your computer, the run-levels 0 and 1 are reserved states
          for shutting the system down, and run-levels 2, 3, and 4 are
          available as normal operating states.

          If this is the first time  since  power  up  that  init  has
          entered a run level other than single-user state, init first
          scans  /etc/inittab  for  boot  and  bootwait  entries  [see
          inittab(F)].   These  entries are performed before any other
          processing of /etc/inittab takes place, providing  that  the
          run  level  entered matches that of the entry.  In this way,
          any special initialization of the operating system, such  as
          mounting  filesystems,  can  take  place  before  users  are
          allowed onto the system.  init then scans  /etc/inittab  and
          executes all other entries that are to be processed for that
          run level.

          In a multiuser environment, /etc/inittab is set up  so  that
          init  will create a getty process for each terminal that the
          administrator sets up to respawn.

          To spawn each process in /etc/inittab, init reads each entry
          and  for  each  entry  that  should be respawned, it forks a
          child process.  After it has spawned all  of  the  processes
          specified  by  /etc/inittab,  init  waits  for  one  of  its
          descendant processes to die, a powerfail signal, or a signal
          from  another init or telinit process to change the system's
          run level.  When one of these conditions  occurs,  init  re-
          examines   /etc/inittab.    New  entries  can  be  added  to
          /etc/inittab at any time; however, init still waits for  one
          of  the  above three conditions to occur before re-examining
          /etc/inittab.  To get  around  this,  an  init Q  or  init q
          command wakes init to re-examine /etc/inittab immediately.

          When init comes up at boot  time  and  whenever  the  system
          changes  from  the  single-user  state to another run state,
          init sets the ioctl(S) states  of  the  virtual  console  to
          those  modes saved in the file /etc/ioctl.syscon.  This file
          is  written  by  init  whenever  the  single-user  state  is
          entered.

          When a run level change request  is  made,  init  sends  the
          warning signal (SIGTERM) to all processes that are undefined
          in the target  run  level.   init  waits  5  seconds  before
          forcibly  terminating  these  processes  via the kill signal
          (SIGKILL).

          The shell running on each terminal will terminate  when  the
          user types an end-of-file or hangs up.  When init receives a
          signal telling it that a process it  spawned  has  died,  it
          records  the  fact  and  the reason it died in /etc/utmp and
          /etc/wtmp if it exists  [see  who(C)].   A  history  of  the
          processes spawned is kept in /etc/wtmp.

          If init  receives  a  powerfail  signal  (SIGPWR)  it  scans
          /etc/inittab  for  special entries of the type powerfail and
          powerwait.  These entries are invoked  (if  the  run  levels
          permit)  before any further processing takes place.  In this
          way init can perform various cleanup and recording functions
          during  the powerdown of the operating system.  Note that in
          the  single-user  states,  S  and  s,  only  powerfail   and
          powerwait entries are executed.  telinit, which is linked to
          /etc/init, is used to direct the actions of init.  It  takes
          a  one-character  argument  and  signals  init  to  take the
          appropriate action.


     Files
          /etc/default/boot
          /etc/inittab
          /etc/utmp
          /etc/wtmp
          /etc/ioctl.syscon
          /dev/console
          /dev/contty


     See Also
          disable(C), enable(C),  login(M),  sh(C),  stty(C),  who(C),
          getty(M),  shutdown(M),  sulogin(ADM),  termio(HW), kill(S),
          gettydefs(F), inittab(F), utmp(F)


     Diagnostics
          If  init  finds  that  it  is  respawning  an   entry   from
          /etc/inittab more than 10 times in 2 minutes, it will assume
          that there is an error in the command string in  the  entry,
          and  generate  an  error  message on the system console.  It
          will then refuse  to  respawn  this  entry  until  either  5
          minutes  has  elapsed  or  it receives a signal from a user-
          spawned init (telinit).  This prevents init from  eating  up
          system resources when someone makes a typographical error in
          the inittab file or a program is removed that is  referenced
          in /etc/inittab.

          When attempting to boot  the  system,  failure  of  init  to
          prompt for a new run level may be because the virtual system
          console is linked to a device other than the physical system
          console.


     Notes
          init and telinit can be run only by someone  who  is  super-
          user.

          The S or s state must not be used  indiscriminately  in  the
          /etc/inittab  file.   A  good  rule to follow when modifying
          this file is to avoid adding this state to  any  line  other
          than the initdefault.

          The assignment of the console device may seem  confusing  at
          first.   Whenever  the system is rebooted, the first boot up
          messages will displayed on  the  ``normal''  system  console
          (tty01),  then  the  prompt  for  going  multiuser  will  be
          displayed on the the tty from which init S was last invoked,
          which  could  be  any tty on the system.  The system console
          device (/dev/syscon) remains linked to the  tty  from  which
          the  last  init  S is invoked. Rebooting the system does NOT
          reset this to tty01.

          The change to /etc/gettydefs described in the Notes  section
          of  the  gettydefs(F)  manual  page will permit terminals to
          pass 8 bits to the system  as  long  as  the  system  is  in
          multiuser state (run level greater than 1).  When the system
          changes to single-user state, the getty is  killed  and  the
          terminal  attributes are lost.  To permit a terminal to pass
          8 bits to the system in single-user state, after you are  in
          single-user state, type:

               stty -istrip cs8

          The /etc/TIMEZONE file must exist.


     Standards Conformance
          init is conformant with:

          AT&T SVID Issue 2, Select Code 307-127.


     (printed 8/23/89)                                  INIT(M)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026