The ``Partition a Hard Disk'' menu item presents you with a list of disk drives you can partition, and runs a partitioning application. You must create at least one ``Linux native'' (type 83) disk partition, and you probably want at least one ``Linux swap'' (type 82) partition.
At a bare minimum, GNU/Linux needs one partition for itself. You can have a single partition containing the entire operating system, applications, and your personal files. Most people feel that a separate swap partition is also a necessity, although it's not strictly true. ``Swap'' is scratch space for an operating system, which allows the system to use disk storage as ``virtual memory''. By putting swap on a separate partition, Linux can make much more efficient use of it. It is possible to force Linux to use a regular file as swap, but it is not recommended.
Most people choose to give GNU/Linux more than the minimum number of partitions, however. There are two reasons you might want to break up the file system into a number of smaller partitions. The first is for safety. If something happens to corrupt the file system, generally only one partition is affected. Thus, you only have to replace (from the backups you've been carefully keeping) a portion of your system. At a bare minimum, you should consider creating what is commonly called a ``root partition''. This contains the most essential components of the system. If any other partitions get corrupted, you can still boot into GNU/Linux to fix the system. This can save you the trouble of having to reinstall the system from scratch.
The second reason is generally more important in a business setting, but it
really depends on your use of the machine. Suppose something runs out of
control and starts eating disk space. If the process causing the problem
happens to have root privileges (the system keeps a percentage of the disk away
from users), you could suddenly find yourself out of disk space. This is not
good as the OS needs to use real files (besides swap space) for many things.
It may not even be a problem of local origin. For example, getting spammed
with e-mail can easily fill a partition. By using more partitions, you protect
the system from many of these problems. Using mail as an example again, by
putting /var/mail
on its own partition, the bulk of the system
will work even if you get spammed.
The only real drawback to using more partitions is that it is often difficult to know in advance what your needs will be. If you make a partition too small then you will either have to reinstall the system or you will be constantly moving things around to make room in the undersized partition. On the other hand, if you make the partition too big, you will be wasting space that could be used elsewhere. Disk space is cheap nowadays, but why throw your money away?
ia64 EFI firmware supports two partition table (or disk label) formats, GPT and
MS-DOS. MS-DOS is the format typically used on i386 PCs, and is no longer
recommended for ia64 systems. The installer provides two partitioning
programs, cfdisk, and parted. The documentation for cfdisk can be found
here
, and the documentation for parted
here
. parted can manage both GPT and
MS-DOS tables, while cfdisk can only manage MS-DOS tables. It is very
important to note that if your disk has previously been partitioned with a GPT
table, and you now want to use MS-DOS tables, you must use parted to create the
new partition table. This is because the two tables use different areas of a
disk, and cfdisk does not know how to remove a GPT table.
An important difference between cfdisk and parted is the way they identify a partition ``type''. cfdisk uses a byte in the partition table (for example, 83 for a linux ext2 partition), while parted identifies a partition ``type'' by examining the data on that partition. This means that parted will not consider a partition to be a swap partition until you format it as such. Similarly, it wont consider a partition a linux ext2 partition until you create a file system on it. parted does allow you to create file systems and format swap space, and you should do that from within parted.
Unfortunately, parted is a command line driven program and so not as easy to use as cfdisk. Assuming that you want to erase your whole disk and create a GPT table and some partitions, then something similar to the following command sequence could be used:
mklabel gpt mkpartfs primary fat 0 50 mkpartfs primary linux-swap 51 1000 mkpartfs primary ext2 1001 3000 set 1 boot on print quit
That creates a new partition table, and three partitions to be used as an EFI boot partition, swap space, and a root file system. Finally it sets the boot flag on the EFI partition. Partitions are specified in Megabytes, with start and end offsets from the beginning of the disk. So, for example, above we created a 1999MB ext2 file system starting at offset 1001MB from the start of the disk. Note that formating swap space with parted can take a few minutes to complete, as it scans the partition for bad blocks.
Debian GNU/Linux adheres to the Filesystem Hierarchy Standard
for directory and file naming. This standard allows users and software
programs to predict the location of files and directories. The root level
directory is represented simply by the slash /
. At the root
level, all Debian systems include these directories:
bin Essential command binaries boot Static files of the boot loader dev Device files etc Host-specific system configuration home User home directories lib Essential shared libraries and kernel modules mnt Mount point for mounting a file system temporarily proc Virtual directory for system information root Home directory for the root user sbin Essential system binaries tmp Temporary files usr Secondary hierarchy var Variable data opt Add-on application software packages
The following is a list of important considerations regarding directories and partitions.
/
must always physically contain
/etc
, /bin
, /sbin
, /lib
and
/dev
, otherwise you won't be able to boot. Typically 100 MB is
needed for the root partition, but this may vary.
/usr
: all user programs (/usr/bin
), libraries
(/usr/lib
), documentation (/usr/share/doc
), etc., are
in this directory. This part of the file system needs most of the space. You
should provide at least 500 MB of disk space. If you want to install more
packages you should increase the amount of space you give this directory.
/home
: every user will put his data into a subdirectory of this
directory. The size of this depends on how many users will be using the system
and what files are to be stored in their directories. Depending on your
planned usage you should reserve about 100 MB for each user, but adapt this
value to your needs.
/var
: all variable data like news articles, e-mails, web sites,
APT's cache, etc. will be placed under this directory. The size of this
directory depends greatly on the usage of your computer, but for most people
will be dictated by the package management tool's overhead. If you are going
to do a full installation of just about everything Debian has to offer, all in
one session, setting aside 2 or 3 gigabytes of space for /var
should be sufficient. If you are going to install in pieces (that is to say,
install services and utilities, followed by text stuff, then X, ...), you can
get away with 300 - 500 megabytes of in /var
. If hard drive space
is at a premium and you don't plan on using APT, at least not for major
updates, you can get by with as little as 30 or 40 megabytes in
/var
.
/tmp
: if a program creates temporary data it will most likely go
in /tmp
. 20-50 MB should be usually enough.
For new users, personal Debian boxes, home systems, and other single-user
setups, a single /
partition (plus swap) is probably the easiest,
simplest way to go. It is possible to have problems with this idea, though,
with larger (20GB) disks. Based on limitations in how ext2 works, avoid any
single partition greater than 6GB or so.
For multi-user systems, it's best to put /usr
, /var
,
/tmp
, and /home
each on their own partitions separate
from the /
partition.
You might need a separate /usr/local
partition if you plan to
install many programs that are not part of the Debian distribution. If your
machine will be a mail server, you might need to make /var/mail
a
separate partition. Often, putting /tmp
on its own partition, for
instance 20 to 50MB, is a good idea. If you are setting up a server with lots
of user accounts, it's generally good to have a separate, large
/home
partition. In general, the partitioning situation varies
from computer to computer depending on its uses.
For very complex systems, you should see the Multi Disk
HOWTO
. This contains in-depth information, mostly of interest to
ISPs and people setting up servers.
With respect to the issue of swap partition size, there are many views. One rule of thumb which works well is to use as much swap as you have system memory. It also shouldn't be smaller than 16MB, in most cases. Of course, there are exceptions to these rules. If you are trying to solve 10000 simultaneous equations on a machine with 256MB of memory, you may need a gigabyte (or more) of swap.
On 32-bit architectures (i386, m68k, 32-bit SPARC, and PowerPC), the maximum size of a swap partition is 2GB (on Alpha and SPARC64, it's so large as to be virtually unlimited). This should be enough for nearly any installation. However, if your swap requirements are this high, you should probably try to spread the swap across different disks (also called ``spindles'') and, if possible, different SCSI or IDE channels. The kernel will balance swap usage between multiple swap partitions, giving better performance.
As an example, one of the authors' home machine has 32MB of RAM and a 1.7GB IDE
drive on /dev/hda
. There is a 500MB partition for another
operating system on /dev/hda1
(should have made it 200MB as it
never gets used). A 32MB swap partition is used on /dev/hda3
and
the rest (about 1.2GB on /dev/hda2
) is the Linux partition.
For more examples, see Partitioning
Strategies
. For an idea of the space taken by tasks you might be
interested in adding after your system installation is complete, check Disk Space Needed for Tasks,
Section 11.4.
ELILO, the ia64 boot loader, requires a partition containing a FAT file system. If you used GPT partition tables, then that partition should have the boot flag set; if you used MS-DOS partition tables, then that partition should be of type "EF". The partition must be big enough to hold the boot loader and any kernels or RAMdisks you may wish to boot. A minimum size would be about 16MB, but if you are likely to be doing development, or experimenting with different kernels, then 128MB might be a better size.
Linux disks and partition names may be different from other operating systems. You need to know the names that Linux uses when you create and mount partitions. Here's the basic naming scheme:
The partitions on each disk are represented by appending a decimal number to the disk name: ``sda1'' and ``sda2'' represent the first and second partitions of the first SCSI disk drive in your system.
Here is a real-life example. Let's assume you have a system with 2 SCSI disks, one at SCSI address 2 and the other at SCSI address 4. The first disk (at address 2) is then named ``sda'', and the second ``sdb''. If the ``sda'' drive has 3 partitions on it, these will be named ``sda1'', ``sda2'', and ``sda3''. The same applies to the ``sdb'' disk and its partitions.
Note that if you have two SCSI host bus adapters (i.e., controllers), the order of the drives can get confusing. The best solution in this case is to watch the boot messages, assuming you know the drive models and/or capacities.
Several varieties of partitioning programs have been adapted by Debian developers to work on various types of hard disks and computer architectures. Following is a list of the program(s) applicable for your architecture.
cfdisk
cfdisk manual page
.
Note that cfdisk
doesn't understand FreeBSD partitions at all,
and, again, device names may differ as a result.
One of these programs will be run by default when you select ``Partition a Hard
Disk''. If the one which is run by default isn't the one you want, quit the
partitioner, go to the shell (tty2) by pressing Alt
and F2 keys together, and manually type in the name of the program
you want to use (and arguments, if any). Then skip the ``Partition a Hard
Disk'' step in dbootstrap
and continue to the next step.
This will be the next step once you have created disk partitions. You have the choice of initializing and activating a new swap partition, activating a previously-initialized one, or doing without a swap partition. It's always permissible to re-initialize a swap partition, so select ``Initialize and Activate a Swap Partition'' unless you are sure you know what you are doing.
This menu choice will first present you with a dialog box reading ``Please select the partition to activate as a swap device.''. The default device presented should be the swap partition you've already set up; if so, just press Enter.
Next, there is a confirmation message, since initialization destroys any data previously on the partition. If all is well, select ``Yes''. The screen will flash as the initialization program runs.
A swap partition is strongly recommended, but you can do without one if you insist, and if your system has more than 12MB RAM. If you wish to do this, please select the ``Do Without a Swap Partition'' item from the menu.
At this point, the next menu item presented should be ``Initialize a Linux Partition''. If it isn't, it is because you haven't completed the disk partitioning process, or you haven't made one of the menu choices dealing with your swap partition.
You can initialize a Linux partition, or alternately you can mount a
previously-initialized one. Note that dbootstrap
will
not upgrade an old system without destroying it. If you're upgrading,
Debian can usually upgrade itself, and you won't need to use
dbootstrap
. For help on upgrading to Debian 3.0, see the upgrade
instructions
.
Thus, if you are using old disk partitions that are not empty, i.e., if you want to just throw away what is on them, you should initialize them (which erases all files). Moreover, you must initialize any partitions that you created in the disk partitioning step. About the only reason to mount a partition without initializing it at this point would be to mount a partition upon which you have already performed some part of the installation process using this same set of installation floppies.
Select ``Initialize a Linux Partition'' to initialize and mount the
/
disk partition. The first partition that you mount or
initialize will be the one mounted as /
(pronounced ``root'').
You will be asked whether to preserve ``Pre-2.2 Linux Kernel Compatibility?''. Saying ``No'' here means that you cannot run 2.0 or earlier Linux kernels on your system, since the file systems enable some features not supported in the 2.0 kernel. If you know you'll never need to run a 2.0 or earlier vintage kernel, then you can achieve some minor benefits by saying ``No'' here.
You will also be asked about whether to scan for bad blocks. The default here is to skip the bad block scan, since the scan can be time consuming, and modern disk drive controllers internally detect and deal with bad blocks. However, if you are at all unsure about the quality of your disk drive, or if you have a rather old system, you should probably do the bad block scan.
The next prompts are just confirmation steps. You will be asked to confirm
your action, since initializing is destructive to any data on the partition,
and you will be informed that the partition is being mounted as /
,
the root partition.[3]
Once you've mounted the /
partition, if you have additional file
systems that you wish to initialize and mount, you should use the ``Alternate''
menu item. This is for those who have created separate partitions for
/boot
, /var
, /usr
or others, which ought
to be initialized and mounted at this time.
An alternative to ``Initialize a Linux Partition'', Section 6.8 is the ``Mount a Previously-Initialized Partition'' step. Use this if you are resuming an installation that was broken off, or if you want to mount partitions that have already been initialized or have data on it which you wish to preserve.
If you are installing a diskless workstation, at this point, you want to NFS mount your root partition from the remote NFS server. Specify the path to the NFS server in standard NFS syntax, namely,
server-name-or-IP:server-share-path
. If you need to mount additional file systems as well, you can do that at this time.
If you have not already setup your network as described in ``Configure the Network'', Section 7.6, then selecting an NFS install will prompt you to do so.
dbootstrap
In some special situations, dbootstrap
might not know how to mount
your file systems (whether root or otherwise). It may be possible, if you're
an experienced GNU/Linux user, to simply go to tty2 by pressing
Alt and F2 keys together, and manually run the
commands you need to run in order to mount the partition in question.
If you are mounting a root partition for your new system, just mount it to
/target
, the go back to dbootstrap and continue (perhaps running
the ``View the Partition Table'' step to cause dbootstrap
to
re-compute where it is in the installation process.
For non-root partitions, you'll have to remember to manually modify your new
fstab
file so that when you reboot the partition will be mounted.
Wait for that file (/target/etc/fstab
) to be written by
dbootstrap
, of course, before editing it.
Installing Debian GNU/Linux 3.0 For IA-64
version 3.0.23, 16 May, 2002