Another tutorial converted to Docbook.
This commit is contained in:
parent
33d1a3cbfd
commit
47a93628dd
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=1342
11 changed files with 2057 additions and 458 deletions
en/tutorials
en_US.ISO8859-1/articles/multi-os
en_US.ISO_8859-1
|
@ -1,5 +1,5 @@
|
|||
DOCS= index.sgml
|
||||
SUBDIR= devel disklessx fonts mh newuser
|
||||
DOCSUBDIR= ddwg multios ppp
|
||||
SUBDIR= devel disklessx fonts mh multios newuser
|
||||
DOCSUBDIR= ddwg ppp
|
||||
|
||||
.include "../web.mk"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||
<!ENTITY base CDATA "..">
|
||||
<!ENTITY date "$Date: 1997-03-19 07:28:32 $">
|
||||
<!ENTITY date "$Date: 1997-03-23 16:27:40 $">
|
||||
<!ENTITY title "FreeBSD Tutorials">
|
||||
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
||||
]>
|
||||
|
@ -29,9 +29,7 @@
|
|||
(<a href="ppp/ppp.ps">postscript</a>,
|
||||
<a href="ppp/ppp-html.tar.gz">gzipd tar file</a>)</li>
|
||||
|
||||
<li><a href="multios/multios.html">Using FreeBSD with other operating systems</a>
|
||||
(<a href="multios/multios.ps">postscript</a>,
|
||||
<a href="multios/multios-html.tar.gz">gzipd tar file</a>)</li>
|
||||
<li><a href="multios/multios.html">Using FreeBSD with other operating systems</a></li>
|
||||
|
||||
<li><a href="fonts/fonts.html">Fonts and FreeBSD</a></li>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
DOC= multios
|
||||
SRCS= multios.sgml
|
||||
DOCS= multios.docb
|
||||
INDEXLINK= multios.html
|
||||
|
||||
.include <bsd.sgml.mk>
|
||||
.include "../../web.mk"
|
||||
|
||||
|
|
680
en/tutorials/multios/multios.docb
Normal file
680
en/tutorials/multios/multios.docb
Normal file
|
@ -0,0 +1,680 @@
|
|||
<!-- $Id: multios.docb,v 1.1 1997-03-23 16:27:47 jfieber Exp $ -->
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Installing and Using FreeBSD With Other Operating Systems</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jay</firstname>
|
||||
<surname>Richmond</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jayrich@in.net</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>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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.ssc.com/linux/howto.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. 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 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd0</> (first physical hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd1</> (second hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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</> 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:</> 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</> and <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</> slice and swap
|
||||
space.</para></step>
|
||||
|
||||
<step><para>When viewed with the Windows 95 <command>fdisk</> 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</> 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</>),
|
||||
or check your BIOS) with the parameter <literal>hd0=1416,16,63</>
|
||||
where <replaceable>1416</> is the number of cylinders on my hard
|
||||
disk, <replaceable>16</> is the number of heads per track, and
|
||||
<replaceable>63</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch5">
|
||||
<title>Examples</title>
|
||||
|
||||
<para><emphasis>(section needs work, please send your example to
|
||||
<email>jayrich@in.net</email>)</emphasis>.</para>
|
||||
|
||||
<para>FreeBSD+Win95: If you installed FreeBSD after Windows 95, you
|
||||
should see <literal>DOS</> 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</> under DOS (Windows 95)
|
||||
and FreeBSD will not boot, try looking for a setting in your BIOS
|
||||
called <quote>> 1024 cylinder support</> or <quote>NORMAL/LBA</>
|
||||
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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="sources">
|
||||
<title>Other Sources of Help</title>
|
||||
|
||||
<para>There are many <ulink
|
||||
URL="http://www.ssc.com/linux/howto.html">Linux HOW-TOs</ulink> that
|
||||
deal with multiple operating systems on the same hard disk.</para>
|
||||
|
||||
<para>The <ulink
|
||||
URL="http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS">Linux+OS/2+DOS
|
||||
Mini-HOWTO</ulink> offers help on configuring the OS/2 boot
|
||||
manager. 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. Here are a few
|
||||
links that might help you find it: <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>,
|
||||
<ulink URL="http://www.cs.yorku.ca/People/frank/docs/">http://www.cs.yorku.ca/People/frank/docs/</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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
|
||||
<sect1>
|
||||
<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: <informalexample><para>(# of cylinders) × (#
|
||||
heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</></informalexample> For example, on my 1.6 Gig Western
|
||||
Digital AC31600 EIDE hard disk,that's: <informalexample><para>(3148
|
||||
cyl) × (16 heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</para></informalexample></para>
|
||||
|
||||
<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</> or FreeBSD fdisk) don't identify the
|
||||
physical disk geometry; they instead report the
|
||||
<firstterm>translated geometry</> (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</> or <literal>master boot record</>. Among the useful info
|
||||
you'll find are Hale Landis's <citetitle>How It Works</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 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</>, each of which is a
|
||||
contiguous chunk of that disk. FreeBSD calls partitions
|
||||
<firstterm>slices</> 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</>, a <firstterm>Start Cylinder/Head/Sector</>, and an
|
||||
<firstterm>End Cylinder/Head/Sector</>. 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</>
|
||||
<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</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="limits">
|
||||
<title>Booting Limitations and Warnings</title>
|
||||
|
||||
<para>Now the interesting stuff that you need to watch out for.</para>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
<listitem><para>1024 cylinders, max</para></listitem>
|
||||
<listitem><para>256 heads , max</para></listitem>
|
||||
<listitem><para>64 cylinders, max (actually 63, <literal>0</> isn't
|
||||
available)</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>1024 cyl/disk × 16 heads/disk × 63 sect/(cyl-head)
|
||||
× 512 bytes/sector</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>However, my BIOS LBA remaps this to:
|
||||
<informalexample>
|
||||
<para>( 787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 1.35</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Boot Easy</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>LILO</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>These boot managers use a few additional sectors after the
|
||||
Master Boot Sector:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 2.0 Beta 8 (sectors 2-5)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>OS/2's boot manager</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<informalexample>
|
||||
<screen>A:\> <userinput>FDISK /MBR</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,437 +0,0 @@
|
|||
<!-- $Id: multios.sgml,v 1.2 1996-10-06 20:17:16 jfieber Exp $ -->
|
||||
<!-- LinuxDoc file was created by LyX 0.8 (C) 1995 by Matthias Ettrich -->
|
||||
<!-- Export filter v0.5 by Pascal Andre -->
|
||||
|
||||
<!doctype linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
|
||||
|
||||
<article>
|
||||
|
||||
<title>Installing and Using FreeBSD With Other Operating Systems
|
||||
<author><url name="Jay Richmond (jayrich@in.net)" url=
|
||||
"http://www.in.net/~jayrich/doc/mailme.html">
|
||||
<date>08/06/96
|
||||
<abstract>This document discusses how to make FreeBSD coexist nicely with
|
||||
other popular operating systems such as <BF>Linux</BF>, <BF>MS-DOS</BF>,
|
||||
<BF>OS/2</BF>, and <BF>Windows 95</BF>. Special thanks to: Annelise
|
||||
Anderson <htmlurl url="andrsn@stanford.edu" name="<andrsn@stanford.edu>"> Randall Hopper
|
||||
<htmlurl url="rhh@ct.picker.com" name="<rhh@ct.picker.com>">and Jordan K.
|
||||
Hubbard <htmlurl url="jkh@time.cdrom.com" name="<jkh@time.cdrom.com>">
|
||||
</abstract>
|
||||
<toc>
|
||||
|
||||
<sect>Overview
|
||||
|
||||
<p>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 <ref name="examples section" id="5"> may be of the most use to you. It contains descriptions of specific working computer setups that use multiple operating systems.
|
||||
<p>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 \TOOLS directory or via ftp at <htmlurl
|
||||
url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools" name="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools">) 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.
|
||||
|
||||
<sect>Overview of Boot Managers
|
||||
|
||||
<label id="2"><p>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.
|
||||
<p>Boot Easy: 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.
|
||||
<p>OS/2 Boot Manager: 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
|
||||
<htmlurl url="http://www.ssc.com/linux/howto.html" name="http://www.ssc.com/linux/howto.html"> on the World Wide Web for more information on booting Linux with OS/2's boot manager.
|
||||
<p>OS-BS: 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 \TOOLS directory, and via ftp at <htmlurl url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools" name="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools">
|
||||
<p>LILO, or LInux LOader: This is a limited boot manager. Will boot
|
||||
FreeBSD, though some customization work is required in the LILO configuration file.
|
||||
<p>** FAT32 is the replacement to the FAT filesystem included in
|
||||
Microsoft's OEM SR2 Beta release, which is expected to 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.
|
||||
|
||||
<sect>A Typical Installation
|
||||
|
||||
<label id="3"><P>Let's say I have two large EIDE hard drives, and I want to install FreeBSD, Linux, and Windows 95 on them.
|
||||
<P>Here's how I might do it using these hard disks:
|
||||
<enum>
|
||||
<item>/dev/wd0 (first physical hard disk)
|
||||
<item>/dev/wd1 (second hard disk)
|
||||
</enum>
|
||||
<P>Both disks have 1416 cylinders.
|
||||
<P>1. I boot from a MS-DOS or Windows 95 boot disk that contains the
|
||||
FDISK.EXE 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.
|
||||
<P>2. I reboot and install Windows 95 (easier said than done) :) on the
|
||||
"C:" partition.
|
||||
<P>3. The next thing I do is install Linux. I'm not sure about all the
|
||||
distributions of Linux, but slackware includes LILO (see <ref name="section 2" id="2">). When I am partitioning out my hard disk with Linux "fdisk," I would put all of Linux on
|
||||
the first drive (maybe 300 megs for a nice root partition and some
|
||||
swap space).
|
||||
<P>4. 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).
|
||||
<P>5. 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 "/usr" and "/" 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 "/usr/src" slice and swap space.
|
||||
<P><VERB>
|
||||
---------------------------------------------------------------------
|
||||
When viewed with the Windows 95 "fdisk" utility, my hard drives
|
||||
should now look something like this:
|
||||
|
||||
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
|
||||
|
||||
** May say FAT16 or FAT32 if you are using the OEM SR2 update
|
||||
(see <ref name="section 2" id="2">).
|
||||
---------------------------------------------------------------------
|
||||
</VERB>
|
||||
<P>6. Install FreeBSD. I make sure to boot with my first hard disk
|
||||
set at "NORMAL" 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 (MSD.EXE), or check your BIOS) with
|
||||
the parameter "hd0=1416,16,63" where 1416 is the number of
|
||||
cylinders on my hard disk, 16 is the number of heads per track,
|
||||
and 63 is the number of sectors per track on the drive.
|
||||
<P>7. 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.
|
||||
<P>8. When I reboot, "Boot Easy" should recognize my three
|
||||
bootable partitions as DOS (Windows 95), Linux, and BSD (FreeBSD).
|
||||
|
||||
<sect>Special Considerations
|
||||
|
||||
<label id="4"><P>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 partition 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.
|
||||
<P>If you install Windows 95 on an existing BSD system, it will "destroy"
|
||||
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 ftp at <htmlurl
|
||||
url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools"
|
||||
name="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.5-RELEASE/tools">. 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."
|
||||
<P>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 <ref name="section 2" id="2">) 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.
|
||||
|
||||
<sect>Examples
|
||||
|
||||
<label id="5"><P><EM>(section needs work, please send your example to <htmlurl
|
||||
url="mailto:jayrich@in.net" name="jayrich@in.net">)</EM>.
|
||||
<P>FreeBSD+Win95: If you installed FreeBSD after Windows 95, you
|
||||
should see 'DOS' on the "Boot Easy" menu. This is Windows 95.
|
||||
If you installed Windows 95 after FreeBSD, read <ref name="section 4" id="4"> 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 "invalid system
|
||||
disk" under DOS (Windows 95) and FreeBSD will not boot, try looking
|
||||
for a setting in your BIOS called "> 1024 cylinder support" or
|
||||
"NORMAL/LBA" 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 FBSDBOOT.EXE utility on the CD (It should find your FreeBSD
|
||||
partition and boot it.)
|
||||
<P>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.
|
||||
<P>FreeBSD+Linux: You can also use "Boot Easy" to boot both operating
|
||||
systems.
|
||||
<P>FreeBSD+Linux+Win95: (see <ref name="section 3" id="3">)
|
||||
|
||||
<label id="sources"><sect>Other Sources of Help
|
||||
|
||||
<P>There are many Linux HOW-TO's that deal with multiple operating
|
||||
systems on the same hard disk. They are available on the World
|
||||
Wide Web at <htmlurl url="http://www.ssc.com/linux/howto.html"
|
||||
name="http://www.ssc.com/linux/howto.html">.
|
||||
<P>The Linux+OS/2+DOS Mini-HOWTO offers help on configuring the
|
||||
OS/2 boot manager. It is also available on the WWW at:
|
||||
<htmlurl url="http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS"
|
||||
name="http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS">.
|
||||
And the <htmlurl url="http://www.in.net/~jkatz/win95/Linux-HOWTO.html" name="http://www.in.net/~jkatz/Linux-HOWTO.html"> is also helpful.
|
||||
<P>The NT Loader Hacking Guide provides good information on multibooting
|
||||
Windows NT, '95, and DOS with other operating systems. It's available at
|
||||
<htmlurl url="http://www.dorsai.org/~dcl/publications/NTLDR_Hacking"
|
||||
name="http://www.dorsai.org/~dcl/publications/NTLDR_Hacking">.
|
||||
<P>And Hale Landis's "How It Works" document pack contains some good info
|
||||
on all sorts of disk geometry and booting related topics. Here are a few
|
||||
links that might help you find it: <htmlurl
|
||||
url="ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip"
|
||||
name="ftp://fission.dt.wdc.com/pub/otherdocs/pc_systems/how_it_works/allhiw.zip">,
|
||||
<htmlurl url="http://www.cs.yorku.ca/People/frank/docs/"
|
||||
name="http://www.cs.yorku.ca/People/frank/docs/">.
|
||||
<P>Finally, don't overlook FreeBSD's kernel documentation on the booting
|
||||
procedure, available in the kernel source distribution (it unpacks to
|
||||
<htmlurl url="file:/usr/src/sys/i386/boot/biosboot/README.386BSD"
|
||||
name="file:/usr/src/sys/i386/boot/biosboot/README.386BSD">.
|
||||
|
||||
<sect>Technical Details
|
||||
|
||||
<P><EM>(Contributed by Randall Hopper <htmlurl
|
||||
url="rhh@ct.picker.com" name="<rhh@ct.picker.com>">)</EM>
|
||||
<P>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.
|
||||
|
||||
<sect1>Disk Primer
|
||||
|
||||
<P>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.
|
||||
<P>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:
|
||||
<VERB>
|
||||
(# of cylinders) * (# heads) * (63 sectors/track) * (512 bytes/sect)
|
||||
|
||||
</VERB>
|
||||
<P>For example, on my 1.6 Gig Western Digital AC31600 EIDE hard disk,that's:
|
||||
<VERB>
|
||||
(3148 cyl) * (16 heads) * (63 sectors/track) * (512 bytes/sect)
|
||||
|
||||
</VERB>
|
||||
<P>which is 1,624,670,208 bytes, or around 1.6 Gig.
|
||||
<P>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 <ref name="section 7.3" id="limits">), you
|
||||
can't use just any program to get the physical geometry. This is because
|
||||
many programs (e.g. MSD.EXE or FreeBSD fdisk) don't identify the physical
|
||||
disk geometry; they instead report the "translated geometry" (virtual
|
||||
numbers from using LBA). Stay tuned for what that means.
|
||||
<P>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.
|
||||
<P>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 "boot sector" or "master boot record".
|
||||
Among the useful info you'll find are Hale Landis's "How It Works"
|
||||
document pack. See the <ref name="Other Sources of Help" id="sources">
|
||||
section for a few pointers to this pack.
|
||||
|
||||
<P>Ok, enough terminology. We're talking about booting here.
|
||||
|
||||
<sect1><heading>The Booting Process<label id="booting"></heading>
|
||||
|
||||
<P>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 "partitions", each of which is a contiguous chunk
|
||||
of that disk. FreeBSD calls partitions "slices" to avoid confusion
|
||||
with it's own partitions, but we won't do that here. Each partition
|
||||
can contain its own operating system.
|
||||
<P>Each partition entry in the MBR has a "Partition ID", a "Start
|
||||
Cylinder/Head/Sector", and an "End Cylinder/Head/Sector". The
|
||||
Partition ID tells what type of partition it is (what OS) and the
|
||||
Start/End tells where it is. Here's a smattering of some common
|
||||
Partition IDs:
|
||||
<VERB>
|
||||
ID (hex) DESCRIPTION
|
||||
01 ...... Primary DOS12 (12-bit FAT)
|
||||
04 ...... Primary DOS16 (16-bit FAT)
|
||||
05 ...... Extended DOS
|
||||
06 ...... Primary big DOS (> 32MB)
|
||||
0A ...... OS/2
|
||||
83 ...... Linux (EXT2FS)
|
||||
A5 ...... FreeBSD, NetBSD, 386BSD (UFS)
|
||||
</VERB>
|
||||
<P>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 "Partition Boot Sector" that exists at the
|
||||
beginning of each partition.
|
||||
<P>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.
|
||||
<P>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.
|
||||
|
||||
|
||||
<sect1>Booting Limitations and Warnings
|
||||
|
||||
<label id="limits"><P>Now the interesting stuff that you need to watch out for.
|
||||
<P><BF>1. The dreaded 1024 cylinder limit and how BIOS LBA helps</BF>
|
||||
<P>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.
|
||||
<P>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:
|
||||
<VERB>
|
||||
1024 cylinders, max
|
||||
256 heads , max
|
||||
64 cylinders, max (actually 63 -- "0" isn't available)
|
||||
</VERB>
|
||||
<P>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:
|
||||
<VERB>
|
||||
1024 cyl/disk * 16 heads/disk * 63 sect/(cyl-head) * 512 bytes/sector
|
||||
</VERB>
|
||||
<P>which is around the often-mentioned 528MB limit.
|
||||
<P>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).
|
||||
|
||||
<P>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.
|
||||
|
||||
<P>To use my 1.6 Gig Western Digital as an example again, it's
|
||||
physical geometry is:
|
||||
<VERB>
|
||||
(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)
|
||||
</VERB>
|
||||
<P>However, my BIOS LBA remaps this to:
|
||||
<VERB>
|
||||
( 787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)
|
||||
</VERB>
|
||||
<P>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).
|
||||
<P><BF>2. Boot Managers and Disk Allocation</BF>
|
||||
<P>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.
|
||||
<P>If you followed the discussion in <ref name="section 7.2" id="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.
|
||||
<P>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.
|
||||
<P>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.
|
||||
<P>For reference, the following boot managers use the
|
||||
Master Boot Sector to store their code and data:
|
||||
<itemize>
|
||||
<item>OS-BS 1.35
|
||||
<item>Boot Easy
|
||||
<item>LILO
|
||||
</itemize>
|
||||
<P>These boot managers use a few additional sectors after the
|
||||
Master Boot Sector:
|
||||
<itemize>
|
||||
<item>OS-BS 2.0 Beta 8 (sectors 2-5)
|
||||
<item>OS/2's boot manager
|
||||
</itemize>
|
||||
<P><BF>3. What if your machine won't boot?</BF>
|
||||
<P>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.
|
||||
<P>If you have a bootable DOS partition on your disk, you can boot
|
||||
off a DOS floppy, and run:
|
||||
<VERB>
|
||||
FDISK /MBR
|
||||
</VERB>
|
||||
<P>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.
|
||||
|
||||
</article>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
DOC= multios
|
||||
SRCS= multios.sgml
|
||||
DOCS= multios.docb
|
||||
INDEXLINK= multios.html
|
||||
|
||||
.include <bsd.sgml.mk>
|
||||
.include "../../web.mk"
|
||||
|
||||
|
|
680
en_US.ISO8859-1/articles/multi-os/article.sgml
Normal file
680
en_US.ISO8859-1/articles/multi-os/article.sgml
Normal file
|
@ -0,0 +1,680 @@
|
|||
<!-- $Id: article.sgml,v 1.1 1997-03-23 16:27:47 jfieber Exp $ -->
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Installing and Using FreeBSD With Other Operating Systems</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jay</firstname>
|
||||
<surname>Richmond</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jayrich@in.net</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>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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.ssc.com/linux/howto.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. 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 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd0</> (first physical hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd1</> (second hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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</> 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:</> 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</> and <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</> slice and swap
|
||||
space.</para></step>
|
||||
|
||||
<step><para>When viewed with the Windows 95 <command>fdisk</> 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</> 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</>),
|
||||
or check your BIOS) with the parameter <literal>hd0=1416,16,63</>
|
||||
where <replaceable>1416</> is the number of cylinders on my hard
|
||||
disk, <replaceable>16</> is the number of heads per track, and
|
||||
<replaceable>63</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch5">
|
||||
<title>Examples</title>
|
||||
|
||||
<para><emphasis>(section needs work, please send your example to
|
||||
<email>jayrich@in.net</email>)</emphasis>.</para>
|
||||
|
||||
<para>FreeBSD+Win95: If you installed FreeBSD after Windows 95, you
|
||||
should see <literal>DOS</> 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</> under DOS (Windows 95)
|
||||
and FreeBSD will not boot, try looking for a setting in your BIOS
|
||||
called <quote>> 1024 cylinder support</> or <quote>NORMAL/LBA</>
|
||||
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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="sources">
|
||||
<title>Other Sources of Help</title>
|
||||
|
||||
<para>There are many <ulink
|
||||
URL="http://www.ssc.com/linux/howto.html">Linux HOW-TOs</ulink> that
|
||||
deal with multiple operating systems on the same hard disk.</para>
|
||||
|
||||
<para>The <ulink
|
||||
URL="http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS">Linux+OS/2+DOS
|
||||
Mini-HOWTO</ulink> offers help on configuring the OS/2 boot
|
||||
manager. 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. Here are a few
|
||||
links that might help you find it: <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>,
|
||||
<ulink URL="http://www.cs.yorku.ca/People/frank/docs/">http://www.cs.yorku.ca/People/frank/docs/</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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
|
||||
<sect1>
|
||||
<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: <informalexample><para>(# of cylinders) × (#
|
||||
heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</></informalexample> For example, on my 1.6 Gig Western
|
||||
Digital AC31600 EIDE hard disk,that's: <informalexample><para>(3148
|
||||
cyl) × (16 heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</para></informalexample></para>
|
||||
|
||||
<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</> or FreeBSD fdisk) don't identify the
|
||||
physical disk geometry; they instead report the
|
||||
<firstterm>translated geometry</> (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</> or <literal>master boot record</>. Among the useful info
|
||||
you'll find are Hale Landis's <citetitle>How It Works</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 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</>, each of which is a
|
||||
contiguous chunk of that disk. FreeBSD calls partitions
|
||||
<firstterm>slices</> 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</>, a <firstterm>Start Cylinder/Head/Sector</>, and an
|
||||
<firstterm>End Cylinder/Head/Sector</>. 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</>
|
||||
<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</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="limits">
|
||||
<title>Booting Limitations and Warnings</title>
|
||||
|
||||
<para>Now the interesting stuff that you need to watch out for.</para>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
<listitem><para>1024 cylinders, max</para></listitem>
|
||||
<listitem><para>256 heads , max</para></listitem>
|
||||
<listitem><para>64 cylinders, max (actually 63, <literal>0</> isn't
|
||||
available)</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>1024 cyl/disk × 16 heads/disk × 63 sect/(cyl-head)
|
||||
× 512 bytes/sector</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>However, my BIOS LBA remaps this to:
|
||||
<informalexample>
|
||||
<para>( 787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 1.35</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Boot Easy</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>LILO</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>These boot managers use a few additional sectors after the
|
||||
Master Boot Sector:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 2.0 Beta 8 (sectors 2-5)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>OS/2's boot manager</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<informalexample>
|
||||
<screen>A:\> <userinput>FDISK /MBR</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,5 +1,5 @@
|
|||
DOC= multios
|
||||
SRCS= multios.sgml
|
||||
DOCS= multios.docb
|
||||
INDEXLINK= multios.html
|
||||
|
||||
.include <bsd.sgml.mk>
|
||||
.include "../../web.mk"
|
||||
|
||||
|
|
680
en_US.ISO_8859-1/articles/multi-os/article.sgml
Normal file
680
en_US.ISO_8859-1/articles/multi-os/article.sgml
Normal file
|
@ -0,0 +1,680 @@
|
|||
<!-- $Id: article.sgml,v 1.1 1997-03-23 16:27:47 jfieber Exp $ -->
|
||||
<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN">
|
||||
<book>
|
||||
|
||||
<bookinfo>
|
||||
<bookbiblio>
|
||||
<title>Installing and Using FreeBSD With Other Operating Systems</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Jay</firstname>
|
||||
<surname>Richmond</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jayrich@in.net</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>
|
||||
|
||||
</bookbiblio>
|
||||
</bookinfo>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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.ssc.com/linux/howto.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. 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 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd0</> (first physical hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para><filename>/dev/wd1</> (second hard disk)</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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</> 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:</> 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</> and <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</> slice and swap
|
||||
space.</para></step>
|
||||
|
||||
<step><para>When viewed with the Windows 95 <command>fdisk</> 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</> 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</>),
|
||||
or check your BIOS) with the parameter <literal>hd0=1416,16,63</>
|
||||
where <replaceable>1416</> is the number of cylinders on my hard
|
||||
disk, <replaceable>16</> is the number of heads per track, and
|
||||
<replaceable>63</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter 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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="ch5">
|
||||
<title>Examples</title>
|
||||
|
||||
<para><emphasis>(section needs work, please send your example to
|
||||
<email>jayrich@in.net</email>)</emphasis>.</para>
|
||||
|
||||
<para>FreeBSD+Win95: If you installed FreeBSD after Windows 95, you
|
||||
should see <literal>DOS</> 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</> under DOS (Windows 95)
|
||||
and FreeBSD will not boot, try looking for a setting in your BIOS
|
||||
called <quote>> 1024 cylinder support</> or <quote>NORMAL/LBA</>
|
||||
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</> 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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="sources">
|
||||
<title>Other Sources of Help</title>
|
||||
|
||||
<para>There are many <ulink
|
||||
URL="http://www.ssc.com/linux/howto.html">Linux HOW-TOs</ulink> that
|
||||
deal with multiple operating systems on the same hard disk.</para>
|
||||
|
||||
<para>The <ulink
|
||||
URL="http://sunsite.unc.edu/mdw/HOWTO/mini/Linux+OS2+DOS">Linux+OS/2+DOS
|
||||
Mini-HOWTO</ulink> offers help on configuring the OS/2 boot
|
||||
manager. 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. Here are a few
|
||||
links that might help you find it: <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>,
|
||||
<ulink URL="http://www.cs.yorku.ca/People/frank/docs/">http://www.cs.yorku.ca/People/frank/docs/</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>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter>
|
||||
<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>
|
||||
|
||||
|
||||
<sect1>
|
||||
<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: <informalexample><para>(# of cylinders) × (#
|
||||
heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</></informalexample> For example, on my 1.6 Gig Western
|
||||
Digital AC31600 EIDE hard disk,that's: <informalexample><para>(3148
|
||||
cyl) × (16 heads) × (63 sectors/track) × (512
|
||||
bytes/sect)</para></informalexample></para>
|
||||
|
||||
<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</> or FreeBSD fdisk) don't identify the
|
||||
physical disk geometry; they instead report the
|
||||
<firstterm>translated geometry</> (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</> or <literal>master boot record</>. Among the useful info
|
||||
you'll find are Hale Landis's <citetitle>How It Works</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 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</>, each of which is a
|
||||
contiguous chunk of that disk. FreeBSD calls partitions
|
||||
<firstterm>slices</> 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</>, a <firstterm>Start Cylinder/Head/Sector</>, and an
|
||||
<firstterm>End Cylinder/Head/Sector</>. 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</>
|
||||
<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</> 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>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="limits">
|
||||
<title>Booting Limitations and Warnings</title>
|
||||
|
||||
<para>Now the interesting stuff that you need to watch out for.</para>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
<listitem><para>1024 cylinders, max</para></listitem>
|
||||
<listitem><para>256 heads , max</para></listitem>
|
||||
<listitem><para>64 cylinders, max (actually 63, <literal>0</> isn't
|
||||
available)</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>1024 cyl/disk × 16 heads/disk × 63 sect/(cyl-head)
|
||||
× 512 bytes/sector</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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:
|
||||
<informalexample>
|
||||
<para>(3148 cyl, 16 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>However, my BIOS LBA remaps this to:
|
||||
<informalexample>
|
||||
<para>( 787 cyl, 64 heads, 63 sectors/track, 512 bytes/sector)</para>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 1.35</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Boot Easy</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>LILO</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>These boot managers use a few additional sectors after the
|
||||
Master Boot Sector:
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>OS-BS 2.0 Beta 8 (sectors 2-5)</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>OS/2's boot manager</para>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<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:
|
||||
<informalexample>
|
||||
<screen>A:\> <userinput>FDISK /MBR</></screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<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>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
</chapter>
|
||||
</book>
|
|
@ -1,5 +1,5 @@
|
|||
DOCS= index.sgml
|
||||
SUBDIR= devel disklessx fonts mh newuser
|
||||
DOCSUBDIR= ddwg multios ppp
|
||||
SUBDIR= devel disklessx fonts mh multios newuser
|
||||
DOCSUBDIR= ddwg ppp
|
||||
|
||||
.include "../web.mk"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||
<!ENTITY base CDATA "..">
|
||||
<!ENTITY date "$Date: 1997-03-19 07:28:32 $">
|
||||
<!ENTITY date "$Date: 1997-03-23 16:27:40 $">
|
||||
<!ENTITY title "FreeBSD Tutorials">
|
||||
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
||||
]>
|
||||
|
@ -29,9 +29,7 @@
|
|||
(<a href="ppp/ppp.ps">postscript</a>,
|
||||
<a href="ppp/ppp-html.tar.gz">gzipd tar file</a>)</li>
|
||||
|
||||
<li><a href="multios/multios.html">Using FreeBSD with other operating systems</a>
|
||||
(<a href="multios/multios.ps">postscript</a>,
|
||||
<a href="multios/multios-html.tar.gz">gzipd tar file</a>)</li>
|
||||
<li><a href="multios/multios.html">Using FreeBSD with other operating systems</a></li>
|
||||
|
||||
<li><a href="fonts/fonts.html">Fonts and FreeBSD</a></li>
|
||||
|
||||
|
|
Loading…
Reference in a new issue