1995-04-28 19:48:56 +00:00
|
|
|
<!-- This is a SGML version of the text on FreeBSD boot procedures
|
|
|
|
made by Poul-Henning Kamp <phk@FreeBSD.ORG>
|
|
|
|
|
|
|
|
This conversion has been made by Ollivier Robert.
|
|
|
|
|
1995-10-22 00:42:14 +00:00
|
|
|
$Id: booting.sgml,v 1.7 1995/10/07 04:31:15 jfieber Exp $
|
1995-05-10 11:34:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
|
1995-04-28 19:48:56 +00:00
|
|
|
|
|
|
|
<article>
|
|
|
|
|
|
|
|
<title>Boot overview</title>
|
|
|
|
<author>Poul-Henning Kamp, <tt/<phk@login.dknet.dk>/</author>
|
|
|
|
<date>v1.1, April 26th</date>
|
|
|
|
<abstract>
|
|
|
|
Booting FreeBSD is essentially a three step: Load the kernel,
|
|
|
|
determine the root filesystem and initialize user-land things. This
|
|
|
|
leads to some interesting possibilities as shown below...
|
|
|
|
</abstract>
|
|
|
|
|
|
|
|
<toc>
|
1995-05-10 11:34:07 +00:00
|
|
|
-->
|
|
|
|
|
1995-09-25 04:53:33 +00:00
|
|
|
<sect><heading>The FreeBSD Booting Process<label id="booting"></heading>
|
1995-05-10 11:34:07 +00:00
|
|
|
|
|
|
|
<p><em>Contributed by &a.phk;. v1.1, April 26th.</em>
|
|
|
|
|
|
|
|
Booting FreeBSD is essentially a three step: Load the kernel,
|
|
|
|
determine the root filesystem and initialize user-land things. This
|
|
|
|
leads to some interesting possibilities shown below.
|
1995-04-28 19:48:56 +00:00
|
|
|
|
1995-09-25 04:53:33 +00:00
|
|
|
<sect1><heading>Loading a kernel</heading>
|
1995-04-28 19:48:56 +00:00
|
|
|
<p>
|
1995-08-29 01:42:52 +00:00
|
|
|
We presently have three basic mechanisms for loading the
|
|
|
|
kernel as described below:
|
|
|
|
They all pass some
|
1995-04-28 19:48:56 +00:00
|
|
|
information to the kernel to help the kernel decide what to do
|
|
|
|
next.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<descrip>
|
|
|
|
<tag>Biosboot</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
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.
|
|
|
|
|
|
|
|
Biosboot can load a kernel from a FreeBSD filesystem.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>Dosboot</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
Dosboot was written by DI. Christian Gusenbauer, and is
|
|
|
|
unfortunately at this time one of the few pieces of code that
|
|
|
|
isn't compilable under FreeBSD itself because it is written for
|
|
|
|
MicroSoft compilers.
|
|
|
|
|
|
|
|
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 it's
|
|
|
|
case.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>Netboot</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
Netboot will try to find a supported ethernet card, and use
|
|
|
|
BOOTP, TFTP and NFS to find a kernel file to boot.
|
1995-08-29 01:42:52 +00:00
|
|
|
</descrip>
|
1995-04-28 19:48:56 +00:00
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
|
1995-09-25 04:53:33 +00:00
|
|
|
<sect1><heading>Determine the root filesystem</heading>
|
1995-04-28 19:48:56 +00:00
|
|
|
<p>
|
|
|
|
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, and then it needs to find a root filesystem.
|
|
|
|
|
|
|
|
Presently we support the following types of rootfilesystems:
|
1995-08-29 01:42:52 +00:00
|
|
|
|
|
|
|
<descrip>
|
|
|
|
<tag>UFS</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
This is the most normal type of root filesystem. It can reside on
|
|
|
|
a floppy or on harddisk.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>MSDOS</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
While this is technically possible, it isn't particular useful,
|
|
|
|
because of ``FAT'' filesystems inability to make links, device
|
|
|
|
nodes and such ``UNIXisms''.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>MFS</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
This is actually a UFS filesystem which has been compiled into
|
|
|
|
the kernel. That means that the kernel does not really need any
|
|
|
|
disks/floppies or other HW to function.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>CD9660</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
This is for using a CD-ROM as root filesystem.
|
|
|
|
|
1995-08-29 01:42:52 +00:00
|
|
|
<tag>NFS</tag>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
This is for using a fileserver as root filesystem, basically
|
|
|
|
making it a diskless machine.
|
1995-08-29 01:42:52 +00:00
|
|
|
</descrip>
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
|
1995-09-25 04:53:33 +00:00
|
|
|
<sect1><heading>Initialize user-land things</heading>
|
1995-04-28 19:48:56 +00:00
|
|
|
<p>
|
|
|
|
To get the user-land going, when the kernel has finished
|
1995-10-22 00:42:14 +00:00
|
|
|
initialization, it will create a process with ``<tt/pid == 1/'' and execute
|
1995-04-28 19:48:56 +00:00
|
|
|
a program on the rootfilesystem, this program is normally
|
|
|
|
``<tt>/sbin/init</tt>''.
|
|
|
|
|
|
|
|
You can substitute any program for /sbin/init, as long as you keep
|
|
|
|
in mind that:
|
|
|
|
|
|
|
|
there is no stdin/out/err unless you open it yourself, if you exit,
|
1995-10-22 00:42:14 +00:00
|
|
|
the machine panics, signal handling is special for ``<tt/pid ==
|
1995-04-28 19:48:56 +00:00
|
|
|
1/''.
|
|
|
|
|
1995-10-22 00:42:14 +00:00
|
|
|
An example of this is the ``<tt>/stand/sysinstall</tt>''
|
|
|
|
program on the installation floppy.
|
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
|
1995-09-25 04:53:33 +00:00
|
|
|
<sect1><heading>Interesting combinations</heading>
|
1995-04-28 19:48:56 +00:00
|
|
|
<p>
|
|
|
|
Boot a kernel with a MFS in it with a special <tt>/sbin/init</tt>
|
|
|
|
which...
|
|
|
|
<descrip>
|
|
|
|
<tag/A -- Using DOS/
|
|
|
|
<itemize>
|
|
|
|
<item>mounts your <tt/C:/ as <tt>/C:</tt>
|
|
|
|
<item>Attaches <tt>C:/freebsd.fs</tt> on <tt>/dev/vn0</tt>
|
|
|
|
<item>mounts <tt>/dev/vn0</tt> as <tt>/rootfs</tt>
|
|
|
|
<item>makes symlinks<newline>
|
|
|
|
<tt>/rootfs/bin -> /bin</tt><newline>
|
|
|
|
<tt>/rootfs/etc -> /etc</tt><newline>
|
|
|
|
<tt>/rootfs/sbin -> /sbin</tt><newline>
|
1995-10-07 04:32:03 +00:00
|
|
|
(etc...)<newline>
|
1995-04-28 19:48:56 +00:00
|
|
|
</itemize>
|
|
|
|
|
|
|
|
Now you run FreeBSD without repartitioning your hard disk...
|
|
|
|
|
|
|
|
<tag/B -- Using NFS/
|
|
|
|
|
|
|
|
NFS mounts your <tt>server:˜you/FreeBSD</tt> as
|
|
|
|
<tt>/nfs</tt>, chroots to <tt>/nfs</tt> and executes
|
|
|
|
<tt>/sbin/init</tt> there
|
|
|
|
|
|
|
|
Now you run FreeBSD diskless, even though you don't control
|
|
|
|
the NFS server...
|
|
|
|
|
|
|
|
<tag/C -- Start an X-server/
|
|
|
|
|
|
|
|
Now you have an Xterminal, 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 our money on HW.
|
|
|
|
|
|
|
|
<tag/D -- Using a tape/
|
|
|
|
Takes a copy of <tt>/dev/rwd0</tt> and writes it to a remote tape
|
|
|
|
station or fileserver.
|
|
|
|
|
|
|
|
Now you finally got that backup you should have made a year
|
|
|
|
ago...
|
|
|
|
|
|
|
|
<tag>E -- Acts as a firewall/web-server/what do I know...</tag>
|
|
|
|
|
|
|
|
This is particular interesting since you can boot from a write-
|
|
|
|
protected floppy, but still write to your root filesystem...
|
|
|
|
</descrip>
|
1995-05-10 11:34:07 +00:00
|
|
|
|
1995-04-28 19:48:56 +00:00
|
|
|
|
|
|
|
|