Move out of the obsolete FAQ directory into the handbook.
This commit is contained in:
parent
df12b6b463
commit
34f7aa730d
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=4
1 changed files with 165 additions and 0 deletions
165
handbook/booting.sgml
Normal file
165
handbook/booting.sgml
Normal file
|
@ -0,0 +1,165 @@
|
|||
<!-- 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.
|
||||
|
||||
$Id: booting.sgml,v 1.1 1995-04-28 19:48:56 jfieber Exp $
|
||||
-->
|
||||
<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN">
|
||||
|
||||
<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>
|
||||
|
||||
<sect>Loading a kernel
|
||||
<p>
|
||||
We presently have three basic mechanisms for loading the kernel:
|
||||
<enum>
|
||||
<item>biosboot
|
||||
<item>dosboot
|
||||
<item>netboot
|
||||
</enum>
|
||||
Each will be described in detail below. They all pass some
|
||||
information to the kernel to help the kernel decide what to do
|
||||
next.
|
||||
|
||||
<sect1>Biosboot
|
||||
<p>
|
||||
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.
|
||||
|
||||
<sect1>Dosboot
|
||||
<p>
|
||||
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.
|
||||
|
||||
<sect1>Netboot
|
||||
<p>
|
||||
Netboot will try to find a supported ethernet card, and use
|
||||
BOOTP, TFTP and NFS to find a kernel file to boot.
|
||||
|
||||
<sect>Determine the root filesystem
|
||||
<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:
|
||||
<itemize>
|
||||
<item>UFS
|
||||
<item>MSDOS
|
||||
<item>MFS
|
||||
<item>CD9660
|
||||
<item>NFS
|
||||
</itemize>
|
||||
|
||||
<sect1>UFS
|
||||
<p>
|
||||
This is the most normal type of root filesystem. It can reside on
|
||||
a floppy or on harddisk.
|
||||
|
||||
<sect1>MSDOS
|
||||
<p>
|
||||
While this is technically possible, it isn't particular useful,
|
||||
because of ``FAT'' filesystems inability to make links, device
|
||||
nodes and such ``UNIXisms''.
|
||||
|
||||
<sect1>MFS
|
||||
<p>
|
||||
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.
|
||||
|
||||
<sect1>CD9660
|
||||
<p>
|
||||
This is for using a CD-ROM as root filesystem.
|
||||
|
||||
<sect1>NFS
|
||||
<p>
|
||||
This is for using a fileserver as root filesystem, basically
|
||||
making it a diskless machine.
|
||||
|
||||
<sect>Initialize user-land things
|
||||
<p>
|
||||
To get the user-land going, when the kernel has finished
|
||||
initialization, it will create a with ``<tt/pid == 1/'' and execute
|
||||
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,
|
||||
the machine panics signal handling is special for ``<tt/pid ==
|
||||
1/''.
|
||||
|
||||
|
||||
<sect>Interesting combinations
|
||||
<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>
|
||||
...<newline>
|
||||
</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>
|
||||
</article>
|
||||
|
||||
|
Loading…
Reference in a new issue