173 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
	
		
			6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
<!-- 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.14 1997-10-19 13:32:04 jraynard Exp $
 | 
						|
 | 
						|
 | 
						|
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//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 process: load the kernel,
 | 
						|
        determine the root filesystem and initialize user-land things. This
 | 
						|
        leads to some interesting possibilities as shown below...
 | 
						|
      </abstract>
 | 
						|
 | 
						|
    <toc>
 | 
						|
-->
 | 
						|
 | 
						|
    <sect><heading>The FreeBSD Booting Process<label id="booting"></heading>
 | 
						|
 | 
						|
       <p><em>Contributed by &a.phk;. v1.1, April 26th.</em>
 | 
						|
    
 | 
						|
        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.
 | 
						|
 | 
						|
    <sect1><heading>Loading a kernel</heading>
 | 
						|
      <p>
 | 
						|
        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.
 | 
						|
 | 
						|
	<descrip>
 | 
						|
      <tag>Biosboot</tag>
 | 
						|
 | 
						|
          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.
 | 
						|
 | 
						|
      <tag>Dosboot</tag>
 | 
						|
 | 
						|
          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.
 | 
						|
 | 
						|
          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.
 | 
						|
 | 
						|
      <tag>Netboot</tag>
 | 
						|
 | 
						|
          Netboot will try to find a supported Ethernet card, and use
 | 
						|
          BOOTP, TFTP and NFS to find a kernel file to boot.
 | 
						|
</descrip>
 | 
						|
 | 
						|
 | 
						|
    <sect1><heading>Determine the root filesystem</heading>
 | 
						|
      <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; it then needs to find a root filesystem.
 | 
						|
 | 
						|
        Presently we support the following types of root filesystems:
 | 
						|
 | 
						|
<descrip>
 | 
						|
      <tag>UFS</tag>
 | 
						|
 | 
						|
          This is the most normal type of root filesystem. It can reside on
 | 
						|
          a floppy or on hard disk.
 | 
						|
 | 
						|
      <tag>MSDOS</tag>
 | 
						|
 | 
						|
          While this is technically possible, it is not particular useful
 | 
						|
          because of the ``FAT'' filesystem's inability to deal with links,
 | 
						|
          device nodes and other such ``UNIXisms''.
 | 
						|
 | 
						|
      <tag>MFS</tag>
 | 
						|
 | 
						|
          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.
 | 
						|
 | 
						|
      <tag>CD9660</tag>
 | 
						|
 | 
						|
          This is for using a CD-ROM as root filesystem.
 | 
						|
 | 
						|
      <tag>NFS</tag>
 | 
						|
 | 
						|
          This is for using a fileserver as root filesystem, basically
 | 
						|
          making it a diskless machine.
 | 
						|
</descrip>
 | 
						|
 | 
						|
 | 
						|
    <sect1><heading>Initialize user-land things</heading>
 | 
						|
      <p>
 | 
						|
        To get the user-land going, the kernel, when it has finished
 | 
						|
        initialization, will create a process with ``<tt/pid == 1/'' and execute
 | 
						|
        a program on the root filesystem; 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/''.
 | 
						|
 | 
						|
	An example of this is the ``<tt>/stand/sysinstall</tt>''
 | 
						|
	program on the installation floppy.
 | 
						|
 | 
						|
 | 
						|
    <sect1><heading>Interesting combinations</heading>
 | 
						|
      <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>
 | 
						|
                (etc...)<newline>
 | 
						|
            </itemize>
 | 
						|
            
 | 
						|
            Now you are running 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 are running FreeBSD diskless, even though you do not control
 | 
						|
            the NFS server...
 | 
						|
 | 
						|
          <tag/C -- Start an X-server/
 | 
						|
 | 
						|
            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.
 | 
						|
 | 
						|
          <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 get that backup you should have made a year
 | 
						|
            ago...
 | 
						|
 | 
						|
          <tag>E -- Acts as a firewall/web-server/what do I know...</tag>
 | 
						|
 | 
						|
            This is particularly interesting since you can boot from a write-
 | 
						|
            protected floppy, but still write to your root filesystem...
 | 
						|
        </descrip>
 | 
						|
 | 
						|
 | 
						|
 |