743 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			743 lines
		
	
	
	
		
			28 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
<!-- $FreeBSD: doc/en_US.ISO_8859-1/articles/multi-os/article.sgml,v 1.13 2000/07/26 18:24:49 jim Exp $ -->
 | 
						|
<!DOCTYPE ARTICLE PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN">
 | 
						|
<article>
 | 
						|
  <articleinfo>
 | 
						|
    <title>Installing and Using FreeBSD With Other Operating Systems</title>
 | 
						|
 | 
						|
    <authorgroup>
 | 
						|
      <author>
 | 
						|
	<firstname>Jay</firstname>
 | 
						|
 | 
						|
	<surname>Richmond</surname>
 | 
						|
 | 
						|
	<affiliation>
 | 
						|
	  <address>
 | 
						|
	    <email>jayrich@sysc.com</email>
 | 
						|
	  </address>
 | 
						|
	</affiliation>
 | 
						|
      </author>
 | 
						|
    </authorgroup>
 | 
						|
 | 
						|
    <pubdate>6 August 1996</pubdate>
 | 
						|
 | 
						|
    <abstract>
 | 
						|
      <para>This document discusses how to make FreeBSD coexist nicely
 | 
						|
	with other popular operating systems such as Linux, MS-DOS,
 | 
						|
	OS/2, and Windows 95.  Special thanks to: Annelise Anderson
 | 
						|
	<email>andrsn@stanford.edu</email>, Randall Hopper
 | 
						|
	<email>rhh@ct.picker.com</email>, and Jordan K. Hubbard
 | 
						|
	<email>jkh@time.cdrom.com</email></para>
 | 
						|
    </abstract>
 | 
						|
  </articleinfo>
 | 
						|
 | 
						|
  <sect1>
 | 
						|
    <title>Overview</title>
 | 
						|
 | 
						|
    <para>Most people can't fit these operating systems together
 | 
						|
      comfortably without having a larger hard disk, so special
 | 
						|
      information on large EIDE drives is included.  Because there are
 | 
						|
      so many combinations of possible operating systems and hard disk
 | 
						|
      configurations, the <xref linkend="ch5"> section may be of the
 | 
						|
      most use to you.  It contains descriptions of specific working
 | 
						|
      computer setups that use multiple operating systems.</para>
 | 
						|
 | 
						|
    <para>This document assumes that you have already made room on
 | 
						|
      your hard disk for an additional operating system.  Any time you
 | 
						|
      repartition your hard drive, you run the risk of destroying the
 | 
						|
      data on the original partitions.  However, if your hard drive is
 | 
						|
      completely occupied by DOS, you might find the FIPS utility
 | 
						|
      (included on the FreeBSD CD-ROM in the
 | 
						|
      <filename>\TOOLS</filename> directory or via <ulink
 | 
						|
	URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/tools">ftp</ulink>)
 | 
						|
      useful.  It lets you repartition your hard disk without
 | 
						|
      destroying the data already on it.  There is also a commercial
 | 
						|
      program available called Partition Magic, which lets you size
 | 
						|
      and delete partitions without consequence.</para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="ch2">
 | 
						|
    <title>Overview of Boot Managers</title>
 | 
						|
 | 
						|
    <para>These are just brief descriptions of some of the different
 | 
						|
      boot managers you may encounter.  Depending on your computer
 | 
						|
      setup, you may find it useful to use more than one of them on
 | 
						|
      the same system.</para>
 | 
						|
 | 
						|
    <variablelist>
 | 
						|
      <varlistentry>
 | 
						|
	<term>Boot Easy</term>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>This is the default boot manager used with FreeBSD.
 | 
						|
	    It has the ability to boot most anything, including BSD,
 | 
						|
	    OS/2 (HPFS), Windows 95 (FAT and FAT32), and Linux.
 | 
						|
	    Partitions are selected with the function keys.</para>
 | 
						|
	</listitem>
 | 
						|
      </varlistentry>
 | 
						|
 | 
						|
      <varlistentry>
 | 
						|
	<term>OS/2 Boot Manager</term>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>This will boot FAT, HPFS, FFS (FreeBSD), and EXT2
 | 
						|
	    (Linux).  It will also boot FAT32 partitions.  Partitions
 | 
						|
	    are selected using arrow keys.  The OS/2 Boot Manager is
 | 
						|
	    the only one to use its own separate partition, unlike the
 | 
						|
	    others which use the master boot record (MBR).  Therefore,
 | 
						|
	    it must be installed below the 1024th cylinder to avoid
 | 
						|
	    booting problems.  It can boot Linux using LILO when it is
 | 
						|
	    part of the boot sector, not the MBR.  Go to <ulink
 | 
						|
	      URL="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX.html">Linux
 | 
						|
	      HOWTOs</ulink> on the World Wide Web for more
 | 
						|
	    information on booting Linux with OS/2's boot
 | 
						|
	    manager.</para>
 | 
						|
	</listitem>
 | 
						|
      </varlistentry>
 | 
						|
 | 
						|
      <varlistentry>
 | 
						|
	<term>OS-BS</term>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>This is an alternative to Boot Easy.  It gives you more
 | 
						|
	    control over the booting process, with the ability to set
 | 
						|
	    the default partition to boot and the booting timeout.
 | 
						|
	    The beta version of this programs allows you to boot by
 | 
						|
	    selecting the OS with your arrow keys.  It is included on
 | 
						|
	    the FreeBSD CD in the <filename>\TOOLS</filename>
 | 
						|
	    directory, and via <ulink
 | 
						|
	      URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/tools">ftp</ulink>.</para>
 | 
						|
	</listitem>
 | 
						|
      </varlistentry>
 | 
						|
 | 
						|
      <varlistentry>
 | 
						|
	<term>LILO, or LInux LOader</term>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>This is a limited boot manager.  It will boot FreeBSD,
 | 
						|
	    though some customization work is required in the LILO
 | 
						|
	    configuration file.</para>
 | 
						|
	</listitem>
 | 
						|
      </varlistentry>
 | 
						|
    </variablelist>
 | 
						|
 | 
						|
    <note id="fat32">
 | 
						|
      <title>About FAT32</title>
 | 
						|
 | 
						|
      <para>FAT32 is the replacement to the FAT filesystem included in
 | 
						|
	Microsoft's OEM SR2 Beta release, which is expected to be
 | 
						|
	utilitized on computers pre-loaded with Windows 95 towards the
 | 
						|
	end of 1996.  It converts the normal FAT file system and
 | 
						|
	allows you to use smaller cluster sizes for larger hard
 | 
						|
	drives.  FAT32 also modifies the traditional FAT boot sector
 | 
						|
	and allocation table, making it incompatible with some boot
 | 
						|
	managers.</para>
 | 
						|
    </note>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="ch3">
 | 
						|
    <title>A Typical Installation</title>
 | 
						|
 | 
						|
    <para>Let's say I have two large EIDE hard drives, and I want to
 | 
						|
      install FreeBSD, Linux, and Windows 95 on them.</para>
 | 
						|
 | 
						|
    <para>Here's how I might do it using these hard disks:</para>
 | 
						|
 | 
						|
    <itemizedlist>
 | 
						|
      <listitem>
 | 
						|
	<para><filename>/dev/wd0</filename> (first physical hard disk)</para>
 | 
						|
      </listitem>
 | 
						|
 | 
						|
      <listitem>
 | 
						|
	<para><filename>/dev/wd1</filename> (second hard disk)</para>
 | 
						|
      </listitem>
 | 
						|
    </itemizedlist>
 | 
						|
 | 
						|
    <para>Both disks have 1416 cylinders.</para>
 | 
						|
 | 
						|
    <procedure>
 | 
						|
      <step>
 | 
						|
	<para>I boot from a MS-DOS or Windows 95 boot disk that
 | 
						|
	  contains the <filename>FDISK.EXE</filename> utility and make a small
 | 
						|
	  50 meg primary partition (35-40 for Windows 95, plus a
 | 
						|
	  little breathing room) on the first disk.  Also create a
 | 
						|
	  larger partition on the second hard disk for my Windows
 | 
						|
	  applications and data.</para>
 | 
						|
	</step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>I reboot and install Windows 95 (easier said than done)
 | 
						|
	  on the <filename>C:</filename> partition.</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>The next thing I do is install Linux.  I'm not sure
 | 
						|
	  about all the distributions of Linux, but slackware includes
 | 
						|
	  LILO (see <xref linkend="ch2">).  When I am partitioning out
 | 
						|
	  my hard disk with Linux <command>fdisk</command>, I would
 | 
						|
	  put all of Linux on the first drive (maybe 300 megs for a
 | 
						|
	  nice root partition and some swap space).</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>After I install Linux, and are prompted about installing
 | 
						|
	  LILO, make SURE that I install it on the boot sector of my
 | 
						|
	  root Linux partition, not in the MBR (master boot
 | 
						|
	  record).</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>The remaining hard disk space can go to FreeBSD.  I also
 | 
						|
	  make sure that my FreeBSD root slice does not go beyond the
 | 
						|
	  1024th cylinder.  (The 1024th cylinder is 528 megs into the
 | 
						|
	  disk with our hypothetical 720MB disks).  I will use the
 | 
						|
	  rest of the hard drive (about 270 megs) for the
 | 
						|
	  <filename>/usr</filename> and <filename>/</filename> slices if I wish.  The
 | 
						|
	  rest of the second hard disk (size depends on the amount of
 | 
						|
	  my Windows application/data partition that I created in step
 | 
						|
	  1 can go to the <filename>/usr/src</filename> slice and swap
 | 
						|
	  space.</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>When viewed with the Windows 95 <command>fdisk</command>
 | 
						|
	  utility, my hard drives should now look something like this:
 | 
						|
 | 
						|
	  <screen>
 | 
						|
---------------------------------------------------------------------
 | 
						|
 | 
						|
                  Display Partition Information
 | 
						|
 | 
						|
Current fixed disk drive: 1
 | 
						|
 | 
						|
Partition  Status  Type  Volume_Label  Mbytes  System  Usage
 | 
						|
C: 1          A   PRI DOS                50    FAT**     7%
 | 
						|
   2          A   Non-DOS (Linux)       300             43%
 | 
						|
 | 
						|
Total disk space is  696 Mbytes (1 Mbyte = 1048576 bytes)
 | 
						|
 | 
						|
Press Esc to continue
 | 
						|
 | 
						|
---------------------------------------------------------------------
 | 
						|
 | 
						|
                  Display Partition Information
 | 
						|
 | 
						|
Current fixed disk drive: 2
 | 
						|
 | 
						|
Partition  Status  Type  Volume_Label  Mbytes  System  Usage
 | 
						|
D: 1          A   PRI DOS                420   FAT**    60%
 | 
						|
 | 
						|
Total disk space is  696 Mbytes (1 Mbyte = 1048576 bytes)
 | 
						|
 | 
						|
Press Esc to continue
 | 
						|
 | 
						|
---------------------------------------------------------------------
 | 
						|
	  </screen>
 | 
						|
	  ** May say FAT16 or FAT32 if you are using the OEM SR2
 | 
						|
	  update.  See <xref linkend="ch2">).</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>Install FreeBSD.  I make sure to boot with my first hard
 | 
						|
	  disk set at <quote>NORMAL</quote> in the BIOS.  If it is not,
 | 
						|
	  I'll have the enter my true disk geometry at boot time (to
 | 
						|
	  get this, boot Windows 95 and consult Microsoft Diagnostics
 | 
						|
	  (<filename>MSD.EXE</filename>), or check your BIOS) with the
 | 
						|
	  parameter <literal>hd0=1416,16,63</literal> where
 | 
						|
	  <replaceable>1416</replaceable> is the number of cylinders on my hard
 | 
						|
	  disk, <replaceable>16</replaceable> is the number of heads per track,
 | 
						|
	  and <replaceable>63</replaceable> is the number of sectors per track on
 | 
						|
	  the drive.</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>When partitioning out the hard disk, I make sure to
 | 
						|
	  install Boot Easy on the first disk.  I don't worry about
 | 
						|
	  the second disk, nothing is booting off of it.</para>
 | 
						|
      </step>
 | 
						|
 | 
						|
      <step>
 | 
						|
	<para>When I reboot, Boot Easy should recognize my three
 | 
						|
	  bootable partitions as DOS (Windows 95), Linux, and BSD
 | 
						|
	  (FreeBSD).</para>
 | 
						|
      </step>
 | 
						|
    </procedure>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="ch4">
 | 
						|
    <title>Special Considerations</title>
 | 
						|
 | 
						|
    <para>Most operating systems are very picky about where and how
 | 
						|
      they are placed on the hard disk.  Windows 95 and DOS need to be
 | 
						|
      on the first primary partitiin on the first hard disk.  OS/2 is
 | 
						|
      the exception.  It can be installed on the first or second disk
 | 
						|
      in a primary or extended partition.  If you are not sure, keep
 | 
						|
      the beginning of the bootable partitions below the 1024th
 | 
						|
      cylinder.</para>
 | 
						|
 | 
						|
    <para>If you install Windows 95 on an existing BSD system, it will
 | 
						|
      <quote>destroy</quote> the MBR, and you will have to reinstall your
 | 
						|
      previous boot manager.  Boot Easy can be reinstalled by using
 | 
						|
      the BOOTINST.EXE utility included in the \TOOLS directory on the
 | 
						|
      CD-ROM, and via <ulink
 | 
						|
	URL="ftp://ftp.FreeBSD.org/pub/FreeBSD/tools">ftp</ulink>.
 | 
						|
      You can also re-start the installation process and go to the
 | 
						|
      partition editor.  From there, mark the FreeBSD partition as
 | 
						|
      bootable, select Boot Manager, and then type W to (W)rite out
 | 
						|
      the information to the MBR.  You can now reboot, and Boot Easy
 | 
						|
      should then recognize Windows 95 as DOS.</para>
 | 
						|
 | 
						|
    <para>Please keep in mind that OS/2 can read FAT and HPFS
 | 
						|
      partitions, but not FFS (FreeBSD) or EXT2 (Linux) partitions.
 | 
						|
      Likewise, Windows 95 can only read and write to FAT and FAT32
 | 
						|
      (see <xref linkend="ch2">) partitions.  FreeBSD can read most
 | 
						|
      file systems, but currently cannot read HPFS partitions.  Linux
 | 
						|
      can read HPFS partitions, but can't write to them.  Recent
 | 
						|
      versions of the Linux kernel (2.x) can read and write to Windows
 | 
						|
      95 VFAT partitions (VFAT is what gives Windows 95 long file
 | 
						|
      names - it's pretty much the same as FAT).  Linux can read and
 | 
						|
      write to most file systems.  Got that?  I hope so.</para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="ch5">
 | 
						|
    <title>Examples</title>
 | 
						|
 | 
						|
    <para><emphasis>(section needs work, please send your example to
 | 
						|
	<email>jayrich@sysc.com</email>)</emphasis>.</para>
 | 
						|
 | 
						|
    <para>FreeBSD+Win95:  If you installed FreeBSD after Windows 95,
 | 
						|
      you should see <literal>DOS</literal> on the Boot Easy menu.  This is
 | 
						|
      Windows 95.  If you installed Windows 95 after FreeBSD, read
 | 
						|
      <xref linkend="ch4"> above.  As long as your hard disk does not
 | 
						|
      have 1024 cylinders you should not have a problem booting.  If
 | 
						|
      one of your partitions goes beyond the 1024th cylinder however,
 | 
						|
      and you get messages like <errorname>invalid system disk</errorname>
 | 
						|
      under DOS (Windows 95) and FreeBSD will not boot, try looking
 | 
						|
      for a setting in your BIOS called <quote>> 1024 cylinder
 | 
						|
	support</quote> or <quote>NORMAL/LBA</quote> mode.  DOS may need LBA
 | 
						|
      (Logical Block Addressing) in order to boot correctly.  If the
 | 
						|
      idea of switching BIOS settings every time you boot up doesn't
 | 
						|
      appeal to you, you can boot FreeBSD through DOS via the
 | 
						|
      <filename>FBSDBOOT.EXE</filename> utility on the CD (It should find your
 | 
						|
      FreeBSD partition and boot it.)</para>
 | 
						|
 | 
						|
    <para>FreeBSD+OS/2+Win95:  Nothing new here.  OS/2's boot manger
 | 
						|
      can boot all of these operating systems, so that shouldn't be a
 | 
						|
      problem.</para>
 | 
						|
 | 
						|
    <para>FreeBSD+Linux: You can also use Boot Easy to boot both
 | 
						|
      operating systems.</para>
 | 
						|
 | 
						|
    <para>FreeBSD+Linux+Win95:  (see <xref linkend="ch3">)</para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="sources">
 | 
						|
    <title>Other Sources of Help</title>
 | 
						|
 | 
						|
    <para>There are many <ulink
 | 
						|
	URL="http://www.linuxresources.com/LDP/HOWTO/HOWTO-INDEX.html">Linux
 | 
						|
	HOW-TOs</ulink> that deal with multiple operating systems on
 | 
						|
      the same hard disk.</para>
 | 
						|
 | 
						|
    <para>The <ulink
 | 
						|
	URL="http://www.linuxresources.com/LDP/HOWTO/mini/Linux+DOS+Win95+OS2.html">Linux+DOS+Win95+OS2
 | 
						|
	mini-HOWTO</ulink> offers help on configuring the OS/2 boot
 | 
						|
      manager, and the <ulink
 | 
						|
	URL="http://www.linuxresources.com/LDP/HOWTO/mini/Linux+FreeBSD.html">Linux+FreeBSD
 | 
						|
	mini-HOWTO</ulink> might be interesting as well.  The <ulink
 | 
						|
	URL="http://www.in.net/~jkatz/win95/Linux-HOWTO.html">Linux-HOWTO</ulink>
 | 
						|
      is also helpful.</para>
 | 
						|
 | 
						|
    <para>The <ulink
 | 
						|
	URL="http://www.dorsai.org/~dcl/publications/NTLDR_Hacking">NT
 | 
						|
	Loader Hacking Guide</ulink> provides good information on
 | 
						|
      multibooting Windows NT, '95, and DOS with other operating
 | 
						|
      systems.</para>
 | 
						|
 | 
						|
    <para>And Hale Landis's "How It Works" document pack contains some
 | 
						|
      good info on all sorts of disk geometry and booting related
 | 
						|
      topics.  You can find it at
 | 
						|
      <ulink
 | 
						|
	URL="ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip">ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip</ulink>.</para>
 | 
						|
 | 
						|
    <para>Finally, don't overlook FreeBSD's kernel documentation on
 | 
						|
      the booting procedure, available in the kernel source
 | 
						|
      distribution (it unpacks to <ulink
 | 
						|
	URL="file:/usr/src/sys/i386/boot/biosboot/README.386BSD">file:/usr/src/sys/i386/boot/biosboot/README.386BSD</ulink>.</para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1>
 | 
						|
    <title>Technical Details</title>
 | 
						|
 | 
						|
    <para><emphasis>(Contributed by Randall Hopper,
 | 
						|
	<email>rhh@ct.picker.com</email>)</emphasis></para>
 | 
						|
 | 
						|
    <para>This section attempts to give you enough basic information
 | 
						|
      about your hard disks and the disk booting process so that you
 | 
						|
      can troubleshoot most problems you might encounter when getting
 | 
						|
      set up to boot several operating systems.  It starts in pretty
 | 
						|
      basic terms, so you may want to skim down in this section until
 | 
						|
      it begins to look unfamiliar and then start reading.</para>
 | 
						|
 | 
						|
    <sect2>
 | 
						|
      <title>Disk Primer</title>
 | 
						|
 | 
						|
      <para>Three fundamental terms are used to describe the location
 | 
						|
	of data on your hard disk: Cylinders, Heads, and Sectors.
 | 
						|
	It's not particularly important to know what these terms
 | 
						|
	relate to except to know that, together, they identify where
 | 
						|
	data is physically on your disk.</para>
 | 
						|
 | 
						|
      <para>Your disk has a particular number of cylinders, number of
 | 
						|
	heads, and number of sectors per cylinder-head (a
 | 
						|
	cylinder-head also known nown as a track).  Collectively this
 | 
						|
	information defines the "physical disk geometry" for your hard
 | 
						|
	disk.  There are typically 512 bytes per sector, and 63
 | 
						|
	sectors per track, with the number of cylinders and heads
 | 
						|
	varying widely from disk to disk.  Thus you can figure the
 | 
						|
	number of bytes of data that'll fit on your own disk by
 | 
						|
	calculating:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <para>(# of cylinders) × (# heads) × (63
 | 
						|
	    sectors/track) × (512 bytes/sect)</para>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
      <para>For example, on my 1.6 Gig Western Digital AC31600 EIDE hard
 | 
						|
	disk,that's:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <para>(3148 cyl) × (16 heads) × (63
 | 
						|
	    sectors/track) × (512 bytes/sect)</para>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
      <para>which is 1,624,670,208 bytes, or around 1.6 Gig.</para>
 | 
						|
 | 
						|
      <para>You can find out the physical disk geometry (number of
 | 
						|
	cylinders, heads, and sectors/track counts) for your hard
 | 
						|
	disks using ATAID or other programs off the net.  Your hard
 | 
						|
	disk probably came with this information as well.  Be careful
 | 
						|
	though: if you're using BIOS LBA (see <xref
 | 
						|
	  linkend="limits">), you can't use just any program to get
 | 
						|
	the physical geometry.  This is because many programs (e.g.
 | 
						|
	<filename>MSD.EXE</filename> or FreeBSD fdisk) don't identify the
 | 
						|
	physical disk geometry; they instead report the
 | 
						|
	<firstterm>translated geometry</firstterm> (virtual numbers from using
 | 
						|
	LBA).  Stay tuned for what that means.</para>
 | 
						|
 | 
						|
      <para>One other useful thing about these terms.  Given 3
 | 
						|
	numbers—a cylinder number, a head number, and a
 | 
						|
	sector-within-track number—you identify a specific
 | 
						|
	absolute sector (a 512 byte block of data) on your disk.
 | 
						|
	Cylinders and Heads are numbered up from 0, and Sectors are
 | 
						|
	numbered up from 1.</para>
 | 
						|
 | 
						|
      <para>For those that are interested in more technical details,
 | 
						|
	information on disk geometry, boot sectors, BIOSes, etc. can
 | 
						|
	be found all over the net.  Query Lycos, Yahoo, etc. for
 | 
						|
	<literal>boot sector</literal> or <literal>master boot record</literal>.
 | 
						|
	Among the useful info you'll find are Hale Landis's
 | 
						|
	<citetitle>How It Works</citetitle> document pack.  See the <xref
 | 
						|
	  linkend="sources"> section for a few pointers to this
 | 
						|
	pack.</para>
 | 
						|
 | 
						|
      <para>Ok, enough terminology.  We're talking about booting
 | 
						|
	here.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2 id="booting">
 | 
						|
      <title>The Booting Process</title>
 | 
						|
 | 
						|
      <para>On the first sector of your disk (Cyl 0, Head 0, Sector 1)
 | 
						|
	lives the Master Boot Record (MBR).  It contains a map of your
 | 
						|
	disk.  It identifies up to 4 <firstterm>partitions</firstterm>, each of
 | 
						|
	which is a contiguous chunk of that disk.  FreeBSD calls
 | 
						|
	partitions <firstterm>slices</firstterm> to avoid confusion with it's
 | 
						|
	own partitions, but we won't do that here.  Each partition can
 | 
						|
	contain its own operating system.</para>
 | 
						|
 | 
						|
      <para>Each partition entry in the MBR has a <firstterm>Partition
 | 
						|
	  ID</firstterm>, a <firstterm>Start Cylinder/Head/Sector</firstterm>, and an
 | 
						|
	<firstterm>End Cylinder/Head/Sector</firstterm>.  The Partition ID
 | 
						|
	tells what type of partition it is (what OS) and the Start/End
 | 
						|
	tells where it is.  <xref linkend="tbl-pid"> lists a
 | 
						|
	smattering of some common Partition IDs.</para>
 | 
						|
 | 
						|
      <table id="tbl-pid">
 | 
						|
	<title>Partition IDs</title>
 | 
						|
 | 
						|
	<tgroup cols="2">
 | 
						|
	  <thead>
 | 
						|
	    <row>
 | 
						|
	      <entry>ID (hex)</entry>
 | 
						|
	      <entry>Description</entry>
 | 
						|
	    </row>
 | 
						|
	  </thead>
 | 
						|
 | 
						|
	  <tbody>
 | 
						|
	    <row>
 | 
						|
	      <entry>01</entry>
 | 
						|
	      <entry>Primary DOS12 (12-bit FAT)</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>04</entry>
 | 
						|
	      <entry>Primary DOS16 (16-bit FAT)</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>05</entry>
 | 
						|
	      <entry>Extended DOS</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>06</entry>
 | 
						|
	      <entry>Primary big DOS (> 32MB)</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>0A</entry>
 | 
						|
	      <entry>OS/2</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>83</entry>
 | 
						|
	      <entry>Linux (EXT2FS)</entry>
 | 
						|
	    </row>
 | 
						|
 | 
						|
	    <row>
 | 
						|
	      <entry>A5</entry>
 | 
						|
	      <entry>FreeBSD, NetBSD, 386BSD (UFS)</entry>
 | 
						|
	    </row>
 | 
						|
	  </tbody>
 | 
						|
	</tgroup>
 | 
						|
      </table>
 | 
						|
 | 
						|
      <para>Note that not all partitions are bootable (e.g. Extended
 | 
						|
	DOS).  Some are—some aren't.  What makes a partition
 | 
						|
	bootable is the configuration of the <firstterm>Partition Boot
 | 
						|
	  Sector</firstterm> that exists at the beginning of each
 | 
						|
	partition.</para>
 | 
						|
 | 
						|
      <para>When you configure your favorite boot manager, it looks up
 | 
						|
	the entries in the MBR partition tables of all your hard disks
 | 
						|
	and lets you name the entries in that list.  Then when you
 | 
						|
	boot, the boot manager is invoked by special code in the
 | 
						|
	Master Boot Sector of the first probed hard disk on your
 | 
						|
	system.  It looks at the MBR partition table entry
 | 
						|
	corresponding to the partition choice you made, uses the Start
 | 
						|
	Cylinder/Head/Sector information for that partition, loads up
 | 
						|
	the Partition Boot Sector for that partition, and gives it
 | 
						|
	control.  That Boot Sector for the partition itself contains
 | 
						|
	enough information to start loading the operating system on
 | 
						|
	that partition.</para>
 | 
						|
 | 
						|
      <para>One thing we just brushed past that's important to know.
 | 
						|
	All of your hard disks have MBRs.  However, the one that's
 | 
						|
	important is the one on the disk that's first probed by the
 | 
						|
	BIOS.  If you have only IDE hard disks, its the first IDE disk
 | 
						|
	(e.g. primary disk on first controller).  Similarly for SCSI
 | 
						|
	only systems.  If you have both IDE and SCSI hard disks
 | 
						|
	though, the IDE disk is typically probed first by the BIOS, so
 | 
						|
	the first IDE disk is the first probed disk.  The boot manager
 | 
						|
	you will install will be hooked into the MBR on this first
 | 
						|
	probed hard disk that we've just described.</para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
    <sect2 id="limits">
 | 
						|
      <title>Booting Limitations and Warnings</title>
 | 
						|
 | 
						|
      <para>Now the interesting stuff that you need to watch out
 | 
						|
	for.</para>
 | 
						|
 | 
						|
      <sect3>
 | 
						|
	<title>The dreaded 1024 cylinder limit and how BIOS LBA helps</title>
 | 
						|
 | 
						|
	<para>The first part of the booting process is all done
 | 
						|
	  through the BIOS, (if that's a new term to you, the BIOS is
 | 
						|
	  a software chip on your system motherboard which provides
 | 
						|
	  startup code for your computer).  As such, this first part
 | 
						|
	  of the process is subject to the limitations of the BIOS
 | 
						|
	  interface.</para>
 | 
						|
 | 
						|
	<para>The BIOS interface used to read the hard disk during
 | 
						|
	  this period (INT 13H, Subfunction 2) allocates 10 bits to
 | 
						|
	  the Cylinder Number, 8 bits to the Head Number, and 6 bits
 | 
						|
	  to the Sector Number.  This restricts users of this
 | 
						|
	  interface (i.e. boot managers hooked into your disk's MBR as
 | 
						|
	  well as OS loaders hooked into the Boot Sectors) to the
 | 
						|
	  following limits:</para>
 | 
						|
 | 
						|
      <itemizedlist>
 | 
						|
	<listitem>
 | 
						|
	  <para>1024 cylinders, max</para>
 | 
						|
	</listitem>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>256 heads, max</para>
 | 
						|
	</listitem>
 | 
						|
 | 
						|
	<listitem>
 | 
						|
	  <para>64 sectors/track, max (actually 63, <literal>0</literal>
 | 
						|
	    isn't available)</para>
 | 
						|
	</listitem>
 | 
						|
      </itemizedlist>
 | 
						|
 | 
						|
	<para>Now big hard disks have lots of cylinders but not a lot
 | 
						|
	  of heads, so invariably with big hard disks the number of
 | 
						|
	  cylinders is greater than 1024.  Given this and the BIOS
 | 
						|
	  interface as is, you can't boot off just anywhere on your
 | 
						|
	  hard disk.  The boot code (the boot manager and the OS
 | 
						|
	  loader hooked into all bootable partitions' Boot Sectors)
 | 
						|
	  has to reside below cylinder 1024.  In fact, if your hard
 | 
						|
	  disk is typical and has 16 heads, this equates to:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <para>1024 cyl/disk × 16 heads/disk × 63
 | 
						|
	    sect/(cyl-head) × 512 bytes/sector</para>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
	<para>which is around the often-mentioned 528MB limit.</para>
 | 
						|
 | 
						|
	<para>This is where BIOS LBA (Logical Block Addressing) comes
 | 
						|
	  in.  BIOS LBA gives the user of the BIOS API calls access to
 | 
						|
	  physical cylinders above 1024 though the BIOS interfaces by
 | 
						|
	  redefining a cylinder.  That is, it remaps your cylinders
 | 
						|
	  and heads, making it appear through the BIOS as though the
 | 
						|
	  disk has fewer cylinders and more heads than it actually
 | 
						|
	  does.  In other words, it takes advantage of the fact that
 | 
						|
	  hard disks have relatively few heads and lots of cylinders
 | 
						|
	  by shifting the balance between number of cylinders and
 | 
						|
	  number of heads so that both numbers lie below the
 | 
						|
	  above-mentioned limits (1024 cylinders, 256 heads).</para>
 | 
						|
 | 
						|
	<para>With BIOS LBA, the hard disk size limitation is
 | 
						|
	  virtually removed (well, pushed up to 8 Gigabytes anyway).
 | 
						|
	  If you have an LBA BIOS, you can put FreeBSD or any OS
 | 
						|
	  anywhere you want and not hit the 1024 cylinder
 | 
						|
	  limit.</para>
 | 
						|
 | 
						|
	<para>To use my 1.6 Gig Western Digital as an example again,
 | 
						|
	  it's physical geometry is:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <para>(3148 cyl, 16 heads, 63 sectors/track, 512
 | 
						|
	    bytes/sector)</para>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
	<para>However, my BIOS LBA remaps this to:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <para>(787 cyl, 64 heads, 63 sectors/track, 512
 | 
						|
	    bytes/sector)</para>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
	<para>giving the same effective size disk, but with cylinder
 | 
						|
	  and head counts within the BIOS API's range (Incidentally, I
 | 
						|
	  have both Linux and FreeBSD existing on one of my hard disks
 | 
						|
	  above the 1024th physical cylinder, and both operating
 | 
						|
	  systems boot fine, thanks to BIOS LBA).</para>
 | 
						|
      </sect3>
 | 
						|
 | 
						|
      <sect3>
 | 
						|
	<title>Boot Managers and Disk Allocation</title>
 | 
						|
 | 
						|
	<para>Another gotcha to watch out when installing boot
 | 
						|
	  managers is allocating space for your boot manager.  It's
 | 
						|
	  best to be aware of this issue up front to save yourself
 | 
						|
	  from having to reinstall one or more of your OSs.</para>
 | 
						|
 | 
						|
	<para>If you followed the discussion in <xref
 | 
						|
	    linkend="booting"> about the Master Boot Sector (where the
 | 
						|
	  MBR is), Partition Boot Sectors, and the booting process,
 | 
						|
	  you may have been wondering just exactly where on your hard
 | 
						|
	  disk that nifty boot manager is going to live.  Well, some
 | 
						|
	  boot managers are small enough to fit entirely within the
 | 
						|
	  Master Boot Sector (Cylinder 0, Head 0, Sector 0) along with
 | 
						|
	  the partition table.  Others need a bit more room and
 | 
						|
	  actually extend a few sectors past the Master Boot Sector in
 | 
						|
	  the Cylinder 0 Head 0 track, since that's typically
 | 
						|
	  free…typically.</para>
 | 
						|
 | 
						|
	<para>That's the catch.  Some operating systems (FreeBSD
 | 
						|
	  included) let you start their partitions right after the
 | 
						|
	  Master Boot Sector at Cylinder 0, Head 0, Sector 2 if you
 | 
						|
	  want.  In fact, if you give FreeBSD's sysinstall a disk with
 | 
						|
	  an empty chunk up front or the whole disk empty, that's
 | 
						|
	  where it'll start the FreeBSD partition by default (at least
 | 
						|
	  it did when I fell into this trap).  Then when you go to
 | 
						|
	  install your boot manager, if it's one that occupies a few
 | 
						|
	  extra sectors after the MBR, it'll overwrite the front of
 | 
						|
	  the first partition's data.  In the case of FreeBSD, this
 | 
						|
	  overwrites the disk label, and renders your FreeBSD
 | 
						|
	  partition unbootable.</para>
 | 
						|
 | 
						|
	<para>The easy way to avoid this problem (and leave yourself
 | 
						|
	  the flexibility to try different boot managers later) is
 | 
						|
	  just to always leave the first full track on your disk
 | 
						|
	  unallocated when you partition your disk.  That is, leave
 | 
						|
	  the space from Cylinder 0, Head 0, Sector 2 through Cylinder
 | 
						|
	  0, Head 0, Sector 63 unallocated, and start your first
 | 
						|
	  partition at Cylinder 0, Head 1, Sector 1.  For what it's
 | 
						|
	  worth, when you create a DOS partition at the front of your
 | 
						|
	  disk, DOS leaves this space open by default (this is why
 | 
						|
	  some boot managers assume it's free).  So creating a DOS
 | 
						|
	  partition up at the front of your disk avoids this problem
 | 
						|
	  altogether.  I like to do this myself, creating 1 Meg DOS
 | 
						|
	  partition up front, because it also avoids my primary DOS
 | 
						|
	  drive letters shifting later when I repartition.</para>
 | 
						|
 | 
						|
	<para>For reference, the following boot managers use the
 | 
						|
	  Master Boot Sector to store their code and data:</para>
 | 
						|
 | 
						|
	<itemizedlist>
 | 
						|
	  <listitem>
 | 
						|
	    <para>OS-BS 1.35</para>
 | 
						|
	  </listitem>
 | 
						|
 | 
						|
	  <listitem>
 | 
						|
	    <para>Boot Easy</para>
 | 
						|
	  </listitem>
 | 
						|
 | 
						|
	  <listitem>
 | 
						|
	    <para>LILO</para>
 | 
						|
	  </listitem>
 | 
						|
	</itemizedlist>
 | 
						|
 | 
						|
	<para>These boot managers use a few additional sectors after
 | 
						|
	  the Master Boot Sector:</para>
 | 
						|
 | 
						|
	<itemizedlist>
 | 
						|
	  <listitem>
 | 
						|
	    <para>OS-BS 2.0 Beta 8 (sectors 2-5)</para>
 | 
						|
	  </listitem>
 | 
						|
 | 
						|
	  <listitem>
 | 
						|
	    <para>OS/2's boot manager</para>
 | 
						|
	  </listitem>
 | 
						|
	</itemizedlist>
 | 
						|
      </sect3>
 | 
						|
 | 
						|
      <sect3>
 | 
						|
	<title>What if your machine won't boot?</title>
 | 
						|
 | 
						|
	<para>At some point when installing boot managers, you might
 | 
						|
	  leave the MBR in a state such that your machine won't boot.
 | 
						|
	  This is unlikely, but possible when re-FDISKing underneath
 | 
						|
	  an already-installed boot manager.</para>
 | 
						|
 | 
						|
	<para>If you have a bootable DOS partition on your disk, you
 | 
						|
	  can boot off a DOS floppy, and run:</para>
 | 
						|
 | 
						|
	<informalexample>
 | 
						|
	  <screen>A:\> <userinput>FDISK /MBR</>
 | 
						|
	  </screen>
 | 
						|
	</informalexample>
 | 
						|
 | 
						|
	<para>to put the original, simple DOS boot code back into the
 | 
						|
	  system.  You can then boot DOS (and DOS only) off the hard
 | 
						|
	  drive.  Alternatively, just re-run your boot manager
 | 
						|
	  installation program off a bootable floppy.</para>
 | 
						|
      </sect3>
 | 
						|
    </sect2>
 | 
						|
  </sect1>
 | 
						|
</article>
 |