Remove PHK's existing documentation about the boot process (out of date)
and refer the reader to boot(8) and loader(8). Reviewed by: phk
This commit is contained in:
parent
52fb07cf5a
commit
403d96e991
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=6305
1 changed files with 3 additions and 226 deletions
|
@ -1,7 +1,7 @@
|
|||
<!--
|
||||
The FreeBSD Documentation Project
|
||||
|
||||
$FreeBSD: doc/en_US.ISO_8859-1/books/handbook/internals/chapter.sgml,v 1.13 1999/09/06 06:52:58 peter Exp $
|
||||
$FreeBSD: doc/en_US.ISO_8859-1/books/handbook/internals/chapter.sgml,v 1.14 1999/11/07 01:54:47 chris Exp $
|
||||
-->
|
||||
|
||||
<chapter id="internals">
|
||||
|
@ -10,231 +10,8 @@
|
|||
<sect1 id="booting">
|
||||
<title>The FreeBSD Booting Process</title>
|
||||
|
||||
<para><emphasis>Contributed by &a.phk;. v1.1, April
|
||||
26th.</emphasis></para>
|
||||
|
||||
<para>Booting FreeBSD is essentially a three step process: load the
|
||||
kernel, determine the root filesystem and initialize user-land things.
|
||||
This leads to some interesting possibilities shown below.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Loading a kernel</title>
|
||||
|
||||
<para>We presently have three basic mechanisms for loading the kernel as
|
||||
described below: they all pass some information to the kernel to help
|
||||
the kernel decide what to do next.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Biosboot</term>
|
||||
|
||||
<listitem>
|
||||
<para>Biosboot is our “bootblocks”. It consists of
|
||||
two files which will be installed in the first 8Kbytes of the
|
||||
floppy or hard-disk slice to be booted from.</para>
|
||||
|
||||
<para>Biosboot can load a kernel from a FreeBSD filesystem.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Dosboot</term>
|
||||
|
||||
<listitem>
|
||||
<para>Dosboot was written by DI. Christian Gusenbauer, and is
|
||||
unfortunately at this time one of the few pieces of code that
|
||||
will not compile under FreeBSD itself because it is written for
|
||||
Microsoft compilers.</para>
|
||||
|
||||
<para>Dosboot will boot the kernel from a MS-DOS file or from a
|
||||
FreeBSD filesystem partition on the disk. It attempts to
|
||||
negotiate with the various and strange kinds of memory manglers
|
||||
that lurk in high memory on MS/DOS systems and usually wins them
|
||||
for its case.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Netboot</term>
|
||||
|
||||
<listitem>
|
||||
<para>Netboot will try to find a supported Ethernet card, and use
|
||||
BOOTP, TFTP and NFS to find a kernel file to boot.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Determine the root filesystem</title>
|
||||
|
||||
<para>Once the kernel is loaded and the boot-code jumps to it, the
|
||||
kernel will initialize itself, trying to determine what hardware is
|
||||
present and so on; it then needs to find a root filesystem.</para>
|
||||
|
||||
<para>Presently we support the following types of root
|
||||
filesystems:</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>UFS</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is the most normal type of root filesystem. It can
|
||||
reside on a floppy or on hard disk.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>MSDOS</term>
|
||||
|
||||
<listitem>
|
||||
<para>While this is technically possible, it is not particular
|
||||
useful because of the <acronym>FAT</acronym> filesystem's
|
||||
inability to deal with links, device nodes and other such
|
||||
“UNIXisms”.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>MFS</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is actually a UFS filesystem which has been compiled
|
||||
into the kernel. That means that the kernel does not really
|
||||
need any hard disks, floppies or other hardware to
|
||||
function.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>CD9660</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is for using a CD-ROM as root filesystem.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>NFS</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is for using a fileserver as root filesystem, basically
|
||||
making it a diskless machine.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Initialize user-land things</title>
|
||||
|
||||
<para>To get the user-land going, the kernel, when it has finished
|
||||
initialization, will create a process with <literal>pid == 1</literal>
|
||||
and execute a program on the root filesystem; this program is normally
|
||||
<filename>/sbin/init</filename>.</para>
|
||||
|
||||
<para>You can substitute any program for <command>/sbin/init</command>,
|
||||
as long as you keep in mind that:</para>
|
||||
|
||||
<para>there is no stdin/out/err unless you open it yourself. If you
|
||||
exit, the machine panics. Signal handling is special for <literal>pid
|
||||
== 1</literal>.</para>
|
||||
|
||||
<para>An example of this is the <command>/stand/sysinstall</command>
|
||||
program on the installation floppy.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Interesting combinations</title>
|
||||
|
||||
<para>Boot a kernel with a MFS in it with a special
|
||||
<filename>/sbin/init</filename> which...</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>A — Using DOS</term>
|
||||
|
||||
<listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>mounts your <filename>C:</filename> as
|
||||
<filename>/C:</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Attaches <filename>C:/freebsd.fs</filename> on
|
||||
<filename>/dev/vn0</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>mounts <filename>/dev/vn0</filename> as
|
||||
<filename>/rootfs</filename></para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>makes symlinks
|
||||
<filename>/rootfs/bin</filename> ->
|
||||
<filename>/bin</filename>
|
||||
<filename>/rootfs/etc</filename> ->
|
||||
<filename>/etc</filename>
|
||||
<filename>/rootfs/sbin</filename> ->
|
||||
<filename>/sbin</filename> (etc...)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Now you are running FreeBSD without repartitioning your hard
|
||||
disk...</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>B — Using NFS</term>
|
||||
|
||||
<listitem>
|
||||
<para>NFS mounts your <filename>server:~you/FreeBSD</filename> as
|
||||
<filename>/nfs</filename>, chroots to <filename>/nfs</filename>
|
||||
and executes <filename>/sbin/init</filename> there</para>
|
||||
|
||||
<para>Now you are running FreeBSD diskless, even though you do not
|
||||
control the NFS server...</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>C — Start an X-server</term>
|
||||
|
||||
<listitem>
|
||||
<para>Now you have an X-terminal, which is better than that dingy
|
||||
X-under-windows-so-slow-you-can-see-what-it-does thing that your
|
||||
boss insist is better than forking out money on hardware.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>D — Using a tape</term>
|
||||
|
||||
<listitem>
|
||||
<para>Takes a copy of <filename>/dev/rwd0</filename> and writes it
|
||||
to a remote tape station or fileserver.</para>
|
||||
|
||||
<para>Now you finally get that backup you should have made a year
|
||||
ago...</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>E — Acts as a firewall/web-server/what do I
|
||||
know...</term>
|
||||
|
||||
<listitem>
|
||||
<para>This is particularly interesting since you can boot from a
|
||||
write- protected floppy, but still write to your root
|
||||
filesystem...</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
<para>The FreeBSD booting process is described in the &man.boot.8; and
|
||||
&man.loader.8; manual pages.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="memoryuse">
|
||||
|
|
Loading…
Reference in a new issue