Move init section into Boot Process as the Last Stage.

Format boot options as a table.
Expand on single-user mode section.
More commits to come.

Sponsored by:	iXsystems
This commit is contained in:
Dru Lavigne 2014-04-22 15:49:54 +00:00
parent 0abc1317e7
commit 8f8820e88a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44626

View file

@ -345,7 +345,7 @@ boot:</screen>
specified options or kernel name. Providing a kernel
name on the command-line is only applicable after an
<command>unload</command> has been issued.
Otherwise the previously-loaded kernel will be
Otherwise, the previously-loaded kernel will be
used.</entry>
</row>
@ -432,25 +432,16 @@ boot:</screen>
</tbody>
</tgroup>
</table>
</sect2>
<sect2 xml:id="boot-loader-examples">
<title>Loader Examples</title>
<para>Here are some practical examples of loader usage:</para>
<itemizedlist>
<listitem>
<para>To boot the usual kernel in single-user
<para>Here are some practical examples of
loader usage. To boot the usual kernel in single-user
mode<indexterm><primary>single-user
mode</primary></indexterm>:</para>
<screen><userinput>boot -s</userinput></screen>
</listitem>
<listitem>
<para>To unload the usual kernel and modules, and then
load the previous or another kernel:</para>
<para>To unload the usual kernel and modules and then
load the previous or another, specified kernel:</para>
<screen><userinput>unload</userinput>
<userinput>load <replaceable>kernel.old</replaceable></userinput></screen>
@ -463,94 +454,183 @@ boot:</screen>
system upgrade or before configuring a custom
kernel.</para>
<note>
<para>Use the following to load the usual modules with
another kernel:</para>
<screen><userinput>unload</userinput>
<userinput>set kernel="<replaceable>kernel.old</replaceable>"</userinput>
<userinput>boot-conf</userinput></screen></note>
</listitem>
<userinput>boot-conf</userinput></screen>
<listitem>
<para>To load an automated kernel configuration
script:</para>
<screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
</listitem>
</itemizedlist>
</sect2>
<sect2 xml:id="boot-kernel">
<title>Kernel Interaction During Boot</title>
<indexterm>
<primary>kernel</primary>
<secondary>boot interaction</secondary>
</indexterm>
</sect2>
<para>Once the kernel is loaded by either the default loader or
by boot2, which bypasses the loader, it examines any boot
flags and adjusts its behavior as necessary.</para>
<sect2 xml:id="boot-init">
<title>Last Stage</title>
<indexterm>
<primary>&man.init.8;</primary>
</indexterm>
<para>Once the kernel is loaded by either <application>loader</application> or
by <application>boot2</application>, which bypasses
<application>loader</application>, it examines any boot
flags and adjusts its behavior as necessary. <xref
linkend="boot-kernel"/> lists the commonly used boot flags.
Refer to &man.boot.8; for more information on the other
boot flags.</para>
<indexterm>
<primary>kernel</primary>
<secondary>bootflags</secondary>
</indexterm>
<para>Here are the more common boot flags:</para>
<table xml:id="boot-kernel" frame="none" pgwide="1">
<title>Kernel Interaction During Boot</title>
<variablelist xml:id="boot-kernel-bootflags-list">
<varlistentry>
<term><option>-a</option></term>
<tgroup cols="2">
<thead>
<row>
<entry>Option</entry>
<entry>Description</entry>
</row>
</thead>
<listitem>
<para>During kernel initialization, ask for the device
to mount as the root file system.</para>
</listitem>
</varlistentry>
<tbody>
<row>
<entry><option>-a</option></entry>
<entry>During kernel initialization, ask for the device
to mount as the root file system.</entry>
</row>
<varlistentry>
<term><option>-C</option></term>
<row>
<entry><option>-C</option></entry>
<entry>Boot the root file system from a <acronym>CDROM</acronym>.</entry>
</row>
<listitem>
<para>Boot from CDROM.</para>
</listitem>
</varlistentry>
<row>
<entry><option>-s</option></entry>
<entry>Boot into single-user mode.</entry>
</row>
<varlistentry>
<term><option>-c</option></term>
<row>
<entry><option>-v</option></entry>
<entry>Be more verbose during kernel startup.</entry>
</row>
</tbody>
</tgroup>
</table>
<listitem>
<para>Run UserConfig, the boot-time kernel
configurator.</para>
</listitem>
</varlistentry>
<para>Once the kernel has finished booting, it passes control to
the user process &man.init.8;, which is located at
<filename>/sbin/init</filename>, or the program path specified
in the <envar>init_path</envar> variable in
<command>loader</command>. This is the last stage of the boot
process.</para>
<varlistentry>
<term><option>-s</option></term>
<para>The boot sequence makes sure that the file systems available
on the system are consistent. If a <acronym>UFS</acronym> file
system is not, and <command>fsck</command>
cannot fix the inconsistencies,
<application>init</application> drops the system into single-user mode so that the
system administrator can resolve the problem directly. Otherwise,
the system boots into multi-user mode.</para>
<listitem>
<para>Boot into single-user mode.</para>
</listitem>
</varlistentry>
<sect3 xml:id="boot-singleuser">
<title>Single-User Mode</title>
<varlistentry>
<term><option>-v</option></term>
<indexterm><primary>single-user mode</primary></indexterm>
<indexterm><primary>console</primary></indexterm>
<listitem>
<para>Be more verbose during kernel startup.</para>
</listitem>
</varlistentry>
</variablelist>
<para>A user can specify this mode by
booting with <option>-s</option>, or by
setting the <envar>boot_ single</envar> variable in
<application>loader</application>. It can also be reached by
running <command>shutdown now</command> from
multi-user mode. Single-user mode begins with this message:</para>
<note>
<para>Refer to &man.boot.8; for more information on the other
boot flags.</para>
</note>
<programlisting>Enter full pathname of shell or RETURN for /bin/sh:</programlisting>
<para>If the user presses <keycap>Enter</keycap>, the system
will enter the default Bourne shell. To specify a different
shell, input the full path to the shell.</para>
<para>Single-user mode is usually used to repair a system that will not
boot due to an inconsistent file system or an error in a boot
configuration file. It can also be used to reset the
<systemitem class="username">root</systemitem> password when
it is unknown. These actions are possible as the single-user
mode prompt gives full, local access to the system and its
configuration files. There is no networking in this mode.</para>
<para>While single-user mode is useful for repairing a system,
it poses a security risk unless the system is in a physically
secure location. By default, any user who can gain physical
access to a system will have full control of that system after
booting into single-user mode.</para>
<para>If the system <literal>console</literal> is changed to
<literal>insecure</literal> in <filename>/etc/ttys</filename>,
the system will first prompt for the <systemitem
class="username">root</systemitem> password before
initiating single-user mode. This adds a measure of security
while removing the ability to reset the <systemitem
class="username">root</systemitem> password when it is
unknown.</para>
<example xml:id="boot-insecure-console">
<title>Configuring an Insecure Console in
<filename>/etc/ttys</filename></title>
<programlisting># name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off <replaceable>insecure</replaceable></programlisting>
</example>
<para>An <literal>insecure</literal> console means that
physical security to the console is considered to be
insecure, so only someone who knows the <systemitem
class="username">root</systemitem> password may use
single-user mode.</para>
</sect3>
<sect3 xml:id="boot-multiuser">
<title>Multi-User Mode</title>
<indexterm><primary>multi-user mode</primary></indexterm>
<para>If <application>init</application> finds the file systems to be in order, or
once the user has finished their commands in single-user mode
and has typed <command>exit</command> to leave single-user mode,
the system enters
multi-user mode, in which it starts the resource configuration
of the system.</para>
<indexterm><primary>rc files</primary></indexterm>
<para>The resource configuration system reads in configuration
defaults from <filename>/etc/defaults/rc.conf</filename> and
system-specific details from
<filename>/etc/rc.conf</filename>. It then proceeds to mount
the system file systems listed in
<filename>/etc/fstab</filename>. It starts up networking
services, miscellaneous system daemons, then the startup
scripts of locally installed packages.</para>
<para>To learn more about the resource configuration system,
refer to &man.rc.8; and examine the scripts located in
<filename>/etc/rc.d</filename>.</para>
</sect3>
</sect2>
</sect1>
<!--
<sect2 id="boot-kernel-userconfig">
<title>UserConfig: the Boot-time Kernel Configurator</title>
@ -809,95 +889,6 @@ bitmap_name="<replaceable>/boot/splash.bin</replaceable>"</programlisting>
&man.kenv.1;, &man.loader.conf.5;, and &man.loader.8;.</para>
</sect1>
<sect1 xml:id="boot-init">
<title>Init: Process Control Initialization</title>
<indexterm>
<primary>&man.init.8;</primary>
</indexterm>
<para>Once the kernel has finished booting, it passes control to
the user process &man.init.8;, which is located at
<filename>/sbin/init</filename>, or the program path specified
in the <envar>init_path</envar> variable in
<command>loader</command>.</para>
<para>The boot sequence makes sure that the file systems available
on the system are consistent. If they are not, and &man.fsck.8;
cannot fix the inconsistencies of a UFS file system,
&man.init.8; drops the system into single-user mode so that the
system administrator can resolve the problem directly.</para>
<sect2 xml:id="boot-singleuser">
<title>Single-User Mode</title>
<indexterm><primary>single-user mode</primary></indexterm>
<indexterm><primary>console</primary></indexterm>
<para>This mode can be reached through the automatic reboot
sequence, the user booting with <option>-s</option>, or by
setting the <envar>boot_ single</envar> variable in
&man.loader.8;.</para>
<para>It can also be reached by calling &man.shutdown.8; from
multi-user mode (<xref linkend="boot-multiuser"/>) without
including <option>-r</option> or <option>-h</option>.</para>
<para>If the system <literal>console</literal> is set to
<literal>insecure</literal> in <filename>/etc/ttys</filename>,
the system will prompt for the <systemitem
class="username">root</systemitem> password before
initiating single-user mode.</para>
<example xml:id="boot-insecure-console">
<title>An Insecure Console in
<filename>/etc/ttys</filename></title>
<programlisting># name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off insecure</programlisting>
</example>
<note>
<para>An <literal>insecure</literal> console means that
physical security to the console is considered to be
insecure, so only someone who knows the <systemitem
class="username">root</systemitem> password may use
single-user mode. Thus, to add this measure of security,
choose <literal>insecure</literal>, instead of the default
of <literal>secure</literal>.</para>
</note>
</sect2>
<sect2 xml:id="boot-multiuser">
<title>Multi-User Mode</title>
<indexterm><primary>multi-user mode</primary></indexterm>
<para>If &man.init.8; finds the file systems to be in order, or
once the user has finished their commands in single-user mode
(<xref linkend="boot-singleuser"/>), the system enters
multi-user mode, in which it starts the resource configuration
of the system.</para>
<indexterm><primary>rc files</primary></indexterm>
<para>The resource configuration system reads in configuration
defaults from <filename>/etc/defaults/rc.conf</filename>, and
system-specific details from
<filename>/etc/rc.conf</filename>, and then proceeds to mount
the system file systems listed in
<filename>/etc/fstab</filename>. It starts up networking
services, miscellaneous system daemons, then the startup
scripts of locally installed packages.</para>
<para>To learn more about the resource configuration system,
refer to &man.rc.8; and examine the scripts themselves.</para>
</sect2>
</sect1>
<sect1 xml:id="boot-shutdown">
<title>Shutdown Sequence</title>