We'll take a good look at disk-oriented aspects of Gentoo Linux and Linux in general, including Linux filesystems, partitions and block devices. Then, once you're familiar with the ins and outs of disks and filesystems, you'll be guided through the process of setting up partitions and filesystems for your Gentoo Linux installation.
To begin, we'll introduce
The block devices above represent an abstract interface to the disk. User programs can use these block devices to interact with your disk without worrying about whether your drives are IDE, SCSI or something else. The program can simply address the storage on the disk as a bunch of contiguous, randomly-accessible 512-byte blocks.
Although it is theoretically possible to use a full disk to house your Linux
system, this is almost never done in practice. Instead, full disk block devices
are split up in smaller, more manageable block devices. On most systems,
these are called
If you are not interested in drawing up a partitioning scheme for your system, you can use the partitioning scheme we use throughout this book:
| Partition | Filesystem | Size | Description |
|---|---|---|---|
If you are interested in knowing how big a partition should be, or even how
many partitions you need, read on. Otherwise continue now with
The number of partitions is highly dependent on your environment. For instance,
if you have lots of users, you will most likely want to have your
As you can see, it very much depends on what you want to achieve. Separate partitions or volumes have the following advantages:
However, multiple partitions have one big disadvantage: if not configured properly, you might result in having a system with lots of free space on one partition and none on another.
At this point, create your partitions using
# mac-fdisk /dev/hda
First delete the partitions you have cleared previously to make room for your
Linux partitions. Use
Second, create an
Now create a swap partition by pressing
To create the root partition, enter
To finish up, write the partition to the disk using
Now that your partitions are created, you can now continue with
The following parts explain how to create the example partition layout described previously, namely:
| Partition | Description |
|---|---|
Change your partition layout according to your own will.
# fdisk /dev/sda
Once in
Command (m for help):
Type
Command (m for help): p Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 12 53266+ 83 Linux /dev/hdb2 13 233 981571+ 82 Linux swap /dev/hdb3 234 674 1958701+ 83 Linux /dev/hdb4 675 6761 27035410+ 5 Extended /dev/hdb5 675 2874 9771268+ 83 Linux /dev/hdb6 2875 2919 199836 83 Linux /dev/hdb7 2920 3008 395262 83 Linux /dev/hdb8 3009 6761 16668918 83 Linux Command (m for help):
This particular disk is configured to house seven Linux filesystems (each with a corresponding partition listed as "Linux") as well as a swap partition (listed as "Linux swap").
We will first remove all existing partitions from the disk. Type
Command (m for help): d Partition number (1-4): 1
The partition has been scheduled for deletion. It will no longer show up
if you type
Now, assuming that you do indeed want to wipe out all the partitions on
your system, repeatedly type
Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System Command (m for help):
Now that the in-memory partition table is empty, we're ready to create the partitions. We will use a default partitioning scheme as discussed previously. Of course, don't follow these instructions to the letter if you don't want the same partitioning scheme!
We first create a small PReP boot partition. Type
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6761, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-6761, default
6761): +8M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 41
Changed system type of partition 1 to 41 (PPC PReP Boot)
Command (m for help):
Now, when you type
Command (m for help): p Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 3 13293 41 PPC PReP Boot Command (m for help):
Let's now create the swap partition. To do this, type
Command (m for help): p Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 3 13293 41 PPC PReP Boot /dev/hdb2 4 117 506331 82 Linux swap Command (m for help):
Finally, let's create the root partition. To do this, type
Command (m for help): p Disk /dev/sda: 30.7 GB, 30750031872 bytes 141 heads, 63 sectors/track, 6761 cylinders Units = cylinders of 8883 * 512 = 4548096 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 3 13293 41 PPC PReP Boot /dev/hdb2 4 117 506331 82 Linux swap /dev/hdb3 118 6761 29509326 83 Linux Command (m for help):
To save the partition layout and exit
Command (m for help): w
Now that your partitions are created, you can now continue with
ext2 is the tried and true Linux filesystem but doesn't have metadata journaling, which means that routine ext2 filesystem checks at startup time can be quite time-consuming. There is now quite a selection of newer-generation journaled filesystems that can be checked for consistency very quickly and are thus generally preferred over their non-journaled counterparts. Journaled filesystems prevent long delays when you boot your system and your filesystem happens to be in an inconsistent state.
ext3 is the journaled version of the ext2 filesystem, providing metadata journaling for fast recovery in addition to other enhanced journaling modes like full data and ordered data journaling. ext3 is a very good and reliable filesystem. It has an additional hashed b-tree indexing option that enables high performance in almost all situations. In short, ext3 is an excellent filesystem.
ReiserFS is a B*-tree based filesystem that has very good overall performance and greatly outperforms both ext2 and ext3 when dealing with small files (files less than 4k), often by a factor of 10x-15x. ReiserFS also scales extremely well and has metadata journaling. As of kernel 2.4.18+, ReiserFS is solid and usable as both general-purpose filesystem and for extreme cases such as the creation of large filesystems, the use of many small files, very large files and directories containing tens of thousands of files.
XFS is a filesystem with metadata journaling that is fully supported under Gentoo Linux's xfs-sources kernel. It comes with a robust feature-set and is optimized for scalability. We only recommend using this filesystem on Linux systems with high-end SCSI and/or fibre channel storage and a uninterruptible power supply. Because XFS aggressively caches in-transit data in RAM, improperly designed programs (those that don't take proper precautions when writing files to disk and there are quite a few of them) can lose a good deal of data if the system goes down unexpectedly.
JFS is IBM's high-performance journaling filesystem. It has recently become production-ready and there hasn't been a sufficient track record to comment positively nor negatively on its general stability at this point.
To create a filesystem on a partition or volume, there are tools available for each possible filesystem:
| Filesystem | Creation Command |
|---|---|
For instance, to have the root partition (
# mke2fs -j /dev/sda4
Now create the filesystems on your newly created partitions (or logical volumes).
# mkswap /dev/sda3
To activate the swap partition, use
# swapon /dev/sda3
Create and activate the swap now.
Now that your partitions are initialized and are housing a filesystem, it is
time to mount those partitions. Use the
# mkdir /mnt/gentoo # mount /dev/sda4 /mnt/gentoo
Finally we have to create the
# mkdir /mnt/gentoo/dev # mount -o bind /dev /mnt/gentoo/dev
We will also have to mount the proc filesystem (a virtual interface with the
kernel) on
Continue with