freebsd-dev/share/FAQ/DISKSPACE.FAQ
Poul-Henning Kamp f0385dbd1f This file is the documentation for the fdisk/disklabel part of sysinstall,
and will be available from the boot.flp with just one key-stroke.  Somebody
will want to purge any danishisms from it before is is let loose...
1994-11-05 05:54:21 +00:00

195 lines
7.8 KiB
Plaintext

How to assign disk-space to FreeBSD.
1. What is all this about
--------------------------
After a general introduction, you will find explanations on what you need
to do to assign space for FreeBSD on your disk(s). The program documented
herein is the "sysinstall" program which lives on the install-disks.
1.1 What is the problem
------------------------
The problem is that disks are big. So big that people don't want to use them
in one piece. With the latest disks being in the 9.0 Gbyte range (which for
comparision is some six thousand floppydisks of the 1.4 Mb type) you cannot
blame them. It has always been this way, and most computers have some way
of "slicing" the disks into more manageble chunks.
1.2 A history-lesson
---------------------
MS-DOS, when hard-disk support was slammed on back in the late eighties,
didn't have this. What it had was a way to install Xenix and MS-DOS
on the same disk (MicroSoft were in the UNIX-business once, remember ?).
In the first sector on the disk, was a piece of "boot-code" and a table
with four entries. Each of those entries pointed at a slice of the disk,
and one of them was marked "active". The machine would boot by reading
the first sector into RAM, and jump to it. The small piece of boot-code
would look at the table and decide which OS was to be booted by looking
for the "active" flag, load the first sector of that slice of the disk
and jump to it.
Later of course, they realized that disks could be bigger than the 32Mb
the FAT-12 "filesystem" could handle, so they added a kludge: They had
two MSDOS slices, a "Primary" and a "Secondary". The primary could still
only be 32Mb, but the Secondary had no size limit. And the trick was, it
had another MBR in it, so now suddenly 5 slices could be availabel to
MS-DOS, later the made the Secondary MBR recursive, and thereby effectively
avoided any number limit. Of course you can still only have the 26 slices
in MSDOS because they use "drive-letters".
1.3 What FreeBSD does
----------------------
FreeBSD has, like any other UNIX, a concept of "partitions". There is no
difference between a slice and a partition as such, but we use the two
words to distinguish between the two different levels of slicing.
The result is that we have a two-tier structure on the disk:
+-----------+
| MBR-table |
+-----------+ +---------+
| Slice 1 | -----> | MSDOS |
+-----------+ +---------+
| Slice 2 |
+-----------+ +-------------------+
| Slice 3 | -----> | FreeBSD-disklabel |
+-----------+ +-------------------+ +-----------------+
| Slice 4 | | Partition A | -----> | Root-filesystem |
+-----------+ +-------------------+ +-----------------+
| Partition B | ---
+-------------------+ \ +----------------+
| Partition C | --> | swap-partition |
+-------------------+ +----------------+
...
Here is the rule-set that FreeBSD uses:
A: FreeBSD always has a MBR-slice with type 0xa5. This means that there
should always be a MBR-record, even in the case where FreeBSD occupies
the entire disk.
B: The FreeBSD-slice contains the FreeBSD-disklabel in the second sector.
C: The 'C' partition in the FreeBSD-disklabel corresponds to the entire
FreeBSD-slice.
D: The 'D' partition corresponds to the entire physical disk.
E: Should a disk not have a FreeBSD-slice (because there simply is no
FreeBSD on it anywhere), then the MBR-slices are mapped into partitions
'E' to 'H' of a artificially created FreeBSD-disklabel.
Therefore, to get FreeBSD onto your disk, you need to do the following:
1. Make a MBR-slice for FreeBSD (FDISK)
2. Partition the diskspace in the MBR-slice into partitions (DISKLABEL)
3. Assign mount-points to the partitions. (DISKLABEL)
2. The main-screen
-------------------
The main-screen shows you the current status, It shows you which disks
FreeBSD has found, how big they are and how much of it is assigned to
FreeBSD in a FreeBSD-MBR-slice. It also shows the partitions which have
had a mountpoint assigned to them.
(H)elp -- shows you this file.
(F)disk -- enters the Fdisk editor, where you can change the MBR-record.
This is what you want to use to assign some part of the disk to FreeBSD.
(D)isklabel -- enters the Disklabel editor, here you can change how the
FreeBSD slice is used.
(Q)uit -- will continue the installation process.
3. FDISK - how to make an MBR-slice
-------------------------------------
There is some rules to follow everywhere, and the MBR is a potential mine-
field. There is no way to really make sure that you have a valid MBR. It
is very complicated to write a validation check for it, because there are
no real rules.
Even if you don't plan to have MSDOS on this disk, make a MSDOS slice
using the MSDOS's FDISK.COM program. The reason for this is that if you
do it that way, you are 100% sure that FreeBSD will use the same number
of heads, sectors and cylinders as MSDOS would use. If you don't plan
to have MSDOS on the disk, just (D)elete the slice in the FreeBSD's
(F)disk editor.
From the main-screen press 'F' to enter the MBR editor. You have five
commands available:
(H)elp -- Will launch you into this file.
(D)elete -- Will delete a slice entirely.
(E)dit -- Will allow you to edit a slice. It will ask how many megabytes
you want to assign to this slice, and will suggest the maximum possible
as default. It might say zero, even though there is disk-space available,
then you need to delete and recreate the other partitions to get the
puzzle solved. It will then ask you what type to give the slice, and
the default here is 0xa5, which is a FreeBSD slice. You can enter any
other number here too, which can be useful as a placeholder. Finally
it will ask you about the "boot-flag", 0x80 means "boot from this" and
anything else means "don't".
If you specified a FreeBSD slice, any existing slices witht the 0xa5
type will be reset to 0x00 "unused". FreeBSD only supports one slice
per disk for FreeBSD.
(R)eread -- This is your "undo" function. It will read the data of the
disk again.
(W)rite -- When you are satisfied with the data, this function will write
the new MBR to the disk.
(Q)uit -- Go back to the main-screen.
4. Disklabel - How to divide the FreeBSD-slice.
------------------------------------------------
(H)elp -- Will launch you into this file.
(S)ize -- Will resize a partition for you, it will suggest as default the
maximum amount of diskspace it can find. This algorithm isn't too smart
so it might say zero, even though there is diskspace available. If it
does, delete and resize the other partitions.
(M)ountpoint -- Here you assign where the filesystem in a partition is to
be mounted. 'b' partitions will always be made into "swap" partitions.
(D)elete -- Will delete a partition.
(R)eread -- Is a undo function. It will reread the current disklabel from
the kernel.
(W)rite -- This will write the disklabel to the disk. You must always write
before you quit, otherwise your changes will be lost.
(Q)uit -- Exit back to the main-screen.
5. Some hints on diskspace needed
----------------------------------
5.1 Swapspace
--------------
Always assign at least as much diskspace to swap as you have RAM in the
machine. If you expect to run X11 (XFree86) on the machine, twice that
amount.
5.2 Filesystems
----------------
Mountpoint Filesystem-size
-------------------------------
/var 10Mb
/usr 50Mb
/ 16Mb
/usr/src 120Mb If you want to have the sources online
/usr/obj 100Mb If you want to compile all of them at one time
/usr/X11R6 50Mb If you load the entire XFree86 binary kit.
$Id$