Chapter 3. Installation and Initial Configuration
At this point, you should have your Linux distribution and have disk space set aside for Linux. In this chapter, we present a general overview of the installation process. Each distribution has its own installation instructions, but armed with the concepts presented here, you should be able to feel your way through any installation. Appendix A, lists sources of information for installation instructions and other help, if you're at a total loss.
Different Linux distributions store files in different locations, which can make it hard to describe how to administer Linux. For instance, the same files may be found on Red Hat, SuSE, and Debian systems, but they may be under the /etc directory on one system and the /sbin directory on another. Gradually, the vendors are standardizing the set of locations listed in a document called the Filesystem Hierarchy Standard, but in this book we'll just try to deal with lagging discrepancies by listing the locations of the most important files in the version of each major distribution that we checked.
3.1. Installing the Linux Software
As we have said, most of these steps are likely to be automated for you by the installation procedure (or at least integrated into it), depending on the distribution of Linux you are using. Please consult your distribution's documentation for specific instructions.
3.1.1. Booting Linux
The first step is to boot the Linux installation medium. In most cases, this is either a boot floppy, which contains a small Linux system, or a bootable CD-ROM. Upon booting the floppy or the CD-ROM, you are presented with an installation menu of some kind that leads you through the steps of installing the software. On other distributions, you are presented with a login prompt when booting this floppy. Here, you usually log in as root or install to begin the installation process.
The documentation that comes with your particular distribution will explain what is necessary to boot Linux from the installation medium.
Most distributions of Linux use a boot floppy that allows you to enter hardware parameters at a boot prompt to force hardware detection of various devices. For example, if your SCSI controller is not detected when booting the floppy, you will need to reboot and specify the hardware parameters (such as I/O address and IRQ) at the boot prompt. Likewise, IBM PS/1, older ThinkPad, and ValuePoint machines do not store drive geometry in the CMOS (the battery-backed up memory that stores vital information while your computer is turned off), so you must specify it at boot time.
The boot prompt is often displayed automatically when booting the boot floppy or CD-ROM. This is the case for the Red Hat distribution. With distributions that do not show the prompt by default, you need to hold down the Shift or Control key or press the Scroll Lock key while booting the floppy or CD-ROM if you want to enter something at the boot prompt. If successful, you should see the prompt:
and possibly other messages. What you are seeing here is a boot prompt presented by LILO (the LInux LOader), a program used to boot the Linux operating system and specify hardware-detection parameters at boot time. After you have installed Linux, you may wish to install LILO on your hard drive, which allows you to select between Linux and other operating systems (such as Windows) when the system is booted.
At this point you have several options. You can press the Enter key to simply boot Linux from the floppy with no special parameters. (You should try this first, and if installation seems to go well, you're all set. If all you have in terms of storage media is an IDE hard drive and CD-ROM, chances are high that you won't have to specify anything.) You can also wait until the installation proceeds. Because today's distributions set a timeout, the installation will only wait for a fixed time for you to enter something and then just continue booting. Thus, if you are unsure what to type, just type any key (like the space key), which will cancel the timeout and give you all the time you want.
If you cannot boot Linux properly without specifying parameters, you may have to specify hardware-detection parameters at this boot prompt, to force the system to properly identify the hardware installed in your system. But in general, the rule is: use the defaults first and see whether that works. Only if it doesn't, should you start to fiddle with the settings. Chances are you will never have to do this, however.
If you don't want to try any hardware-detection parameters now, just press Enter at the boot prompt. Watch the messages as the system boots. If you have an SCSI controller, for example, you should see a listing of the SCSI hosts detected. If you see the message:
SCSI: 0 hosts
your SCSI controller was not detected, and you will have to use the hardware detection procedure we'll describe in a moment.
Most new distributions often follow a different path of choosing hardware. They come with a minimal kernel on the boot disk and then load so-called kernel modules from either a second floppy disk or a CD-ROM. In this case, you will probably be dropped into some menu where you can select additional modules to be probed. Even specifying modules is largely automated: you just ask the installation program to probe for SCSI adapters and see whether yours is found. The same goes for Ethernet cards and other devices that are needed for the installation process. Devices that are not needed during the installation, such as sound boards, are unlikely to be detected at this point of the installation. You will probably be given the option to configure them later. Again, try to swim with the stream and just accept the defaults and see whether this works.
If the automated hardware detection procedures do not work for you (which normally is the case only if you have very old, very new, or very unusual hardware), you will have to help Linux a bit by forcing hardware detection.
To force hardware detection, you must enter the appropriate parameters at the boot prompt, using the following syntax:
There are many such parameters, some of which are listed later in this section. We don't expect you to understand what all these parameters mean or are used for; rather, you should be able to determine which of these hardware options corresponds to your own system. We are presenting a more comprehensive list here, in one place, as you may find them useful later on.
For example, if you have an AHA152x-based SCSI controller, and you know that under Windows you must configure the board for a particular I/O address and IRQ, you can use the corresponding option (aha152x=) here. In fact, many of these boot options are simply unnecessary for initial installation.
One other piece of advice: write down and remember the boot options you use to get your system running. After you have installed Linux, you'll need to use the same boot options in order for your hardware to be properly detected each time you boot. If you install the LILO loader on your hard drive, you can configure it to automatically use a certain set of boot options so that you won't have to type them each time.
Quite a few other options are available; the previous options are generally necessary for normal use of your system. (For example, we have left out the many parameters available for sound card drivers; we urge you to read the appropriate HOWTO documents if you have a life-threatening situation involving use of your sound card.)
For each of these, you must enter linux followed by the parameters you wish to use.
If you have questions about these boot-time options, read the Linux Bootprompt HOWTO, Linux SCSI HOWTO, and Linux CD-ROM HOWTO. These three documents should be available on any Linux FTP site (as well as most Linux CD-ROMs) and describe the LILO boot arguments in more detail.
3.1.2. Drives and Partitions Under Linux
Many distributions require you to create Linux partitions by hand using the fdisk program. Others may automatically create partitions for you. Either way, you should know the following information about Linux partitions and device names. (This information applies only to Intel and Alpha systems booted from AlphaBIOS; other systems, such PowerPC, SPARC, and m68k, do not have logical and extended partitions.)
Drives and partitions under Linux are given different names from their counterparts under other operating systems. Under Windows, floppy drives are referred to as A: and B:, while hard-drive partitions are named C:, D:, and so on. Under Linux, the naming convention is quite different.
Device drivers, found in the directory /dev, are used to communicate with devices on your system (such as hard drives, mice, and so on). For example, if you have a mouse on your system, you might access it through the driver /dev/mouse. Floppy drives, hard drives, and individual partitions are all given individual device drivers of their own. Don't worry about the device-driver interface for now; it is important only to understand how the various devices are named in order to use them. Section 6.3 in Chapter 6 talks more about devices.
Table 3-1 lists the names of these various device drivers where multiple names can be created with increasing numbers (0, 1, etc.). One or two are shown in the table as examples.
Table 3-1. Linux partition names
A few notes about this table: /dev/fd0 corresponds to the first floppy drive (A: under Windows), and /dev/fd1 corresponds to the second floppy (B:).
Also, SCSI hard drives are named differently from other drives. IDE, MFM, and RLL drives are accessed through the devices /dev/hda, /dev/hdb, and so on. The individual partitions on the drive /dev/hda are /dev/hda1, /dev/hda2, and so on. This also applies to ATAPI and IDE CD-ROM drives. However, SCSI drives are named /dev/sda, /dev/sdb, and so on, with partition names such as /dev/sda1 and /dev/sda2.
Most systems, of course, do not have four primary partitions. But the names /dev/hda1 through /dev/hda4 are still reserved for these partitions; they cannot be used to name logical partitions.
Here's an example. Let's say you have a single IDE hard drive, with three primary partitions. The first two are set aside for Windows, and the third is an extended partition that contains two logical partitions, both for use by Linux. The devices referring to these partitions would be:
3.1.3. Creating Linux Partitions
Here we are describing the basic text-mode usage of fdisk, which should be available with all distributions. Many distributions nowadays provide a more user-friendly interface to fdisk. While those are usually not as flexible as plain fdisk, they can help you make the right choices more easily. Whatever tool you use, this section is helpful for understanding the underlying concepts. The tools all do more or less the same things in the end; some simply have more sugar-coating than others. You can also make use of the information presented here for fixing or checking something that you suspect didn't go right with the graphical tool.
After booting the installation medium, run fdisk by typing:
where drive is the Linux device name of the drive to which you plan to add partitions (see Table 3-1). For instance, if you want to run fdisk on the first SCSI disk in your system, use the command:
# fdisk /dev/sda
/dev/hda (the first IDE drive) is the default if you don't specify one.
If you are creating Linux partitions on more than one drive, run fdisk once for each drive:
# fdisk /dev/hda Command (m for help):
Command (m for help): m Command action a toggle a bootable flag d delete a partition l list known partition types m print this menu n add a new partition p print the partition table q quit without saving changes t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help):
The n command is used to create a new partition. Most other options you won't need to worry about. To quit fdisk without saving any changes, use the q command. To quit fdisk and write the changes to the partition table to disk, use the w command. This is worth repeating: so long as you quit with q without writing, you can mess around as much as you want with fdisk without risking harm to your data. Only when you type w can you cause potential disaster to your data if you do something wrong.
The first thing you should do is display your current partition table and write the information down for later reference. Use the p command to see the information. It is a good idea to copy the information to your notebook after each change you have made to the partition table. If, for some reason, your partition table is damaged, you will not access any data on your hard disk any longer, even though the data itself is still there. But by using your notes, you might be able to restore the partition table and get your data back in many cases by running fdisk again and deleting and re-creating the partitions with the parameters you previously wrote down. Don't forget to save the restored partition table when you are done.
Here is an example of a printed partition table, where blocks, sectors, and cylinders are units into which a hard disk is organized:
Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M Command (m for help):
In this example, we have a single Windows partition on /dev/hda1, which is 61693 blocks (about 60 MB). This partition starts at cylinder number 1 and ends on cylinder 203. We have a total of 683 cylinders in this disk; so there are 480 cylinders left on which to create Linux partitions.
A block, under Linux, is 1024 bytes.
Command (m for help): n Command action e extended p primary partition (1-4) p
Here, fdisk is asking which type of the partition to create: extended or primary. In our example, we're creating only primary partitions, so we choose p:
Partition number (1-4):
fdisk will then ask for the number of the partition to create; because partition 1 is already used, our first Linux partition will be number 2:
Partition number (1-4): 2 First cylinder (204-683):
Now, we enter the starting cylinder number of the partition. Because cylinders 204 through 683 are unused, we'll use the first available one (numbered 204). There's no reason to leave empty space between partitions:
First cylinder (204-683): 204 Last cylinder or +size or +sizeM or +sizeK (204-683):
fdisk is asking for the size of the partition we want to create. We can either specify an ending cylinder number, or a size in bytes, kilobytes, or megabytes. Because we want our partition to be 80 MB in size, we specify +80M. When specifying a partition size in this way, fdisk will round the actual partition size to the nearest number of cylinders:
Last cylinder or +size or +sizeM or +sizeK (204-683): +80M
If you see a warning message such as this, it can be ignored. fdisk prints the warning because it's an older program and dates back before the time that Linux partitions were allowed to be larger than 64 MB.
Now we're ready to create our second Linux partition. For sake of demonstration, we'll create it with a size of 10 MB:
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (474-683): 474 Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
At last, we'll display the partition table. Again, write down all this information — especially the block sizes of your new partitions. You'll need to know the sizes of the partitions when creating filesystems. Also, verify that none of your partitions overlaps:
Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M /dev/hda2 204 204 473 82080 83 Linux native /dev/hda3 474 474 507 10336 83 Linux native
As you can see, /dev/hda2 is now a partition of size 82080 blocks (which corresponds to about 80 MB), and /dev/hda3 is 10336 blocks (about 10 MB).
Note that most distributions require you to use the t command in fdisk to change the type of the swap partition to "Linux swap," which is numbered 82. You can use the L command to print a list of known partition type codes, and then use the t command to set the type of the swap partition to that which corresponds to "Linux swap."
This way the installation software will be able to automatically find your swap partitions based on type. If the installation software doesn't seem to recognize your swap partition, you might want to rerun fdisk and use the t command on the partition in question.
In the previous example, the remaining cylinders on the disk (numbered 508 to 683) are unused. You may wish to leave unused space on the disk, in case you want to create additional partitions later.
Command (m for help): w #
Keep in mind that none of the changes you make while running fdisk takes effect until you give the w command, so you can toy with different configurations and save them when you're done. Also, if you want to quit fdisk at any time without saving the changes, use the q command. Remember that you shouldn't modify partitions for operating systems other than Linux with the Linux fdisk program.
You may not be able to boot Linux from a partition using cylinders numbered over 1023. Therefore, you should try to create your Linux root partition within the sub-1024 cylinder range, which is almost always possible (e.g., by creating a small root partition in the sub-1024 cylinder range). If, for some reason, you cannot or do not want to do this, you can simply boot Linux from floppy.
Some Linux distributions require you to reboot the system after running fdisk to allow the changes to the partition table to take effect before installing the software. Newer versions of fdisk automatically update the partition information in the kernel, so rebooting isn't necessary. To be on the safe side, after running fdisk you should reboot from the installation medium before proceeding.
3.1.4. Creating Swap Space
If you are planning to use a swap partition for virtual RAM, you're ready to prepare it. In Section 6.2 in Chapter 6, we discuss the preparation of a swap file, in case you don't want to use an individual partition.
Again, some distributions of Linux prepare the swap space for you automatically, or via an installation menu option.
Many distributions require you to create and activate swap space before installing the software. If you have a small amount of physical RAM, the installation procedure may not be successful unless you have some amount of swap space enabled.
The command used to prepare a swap partition is mkswap, and it takes the following form:
mkswap -c partition
where partition is the name of the swap partition. For example, if your swap partition is /dev/hda3, use the command:
# mkswap -c /dev/hda3
With older versions of mkswap, you had to specify the size of the partition, which was dangerous, as one typo could destroy your disk logically.
The -c option tells mkswap to check for bad blocks on the partition when creating the swap space. Bad blocks are spots on the magnetic medium that do not hold the data correctly. This occurs only rarely with today's hard disks, but if it does occur, and you do not know about it, it can cause you endless trouble. Always use the -c option to have mkswap check for bad blocks. It will exclude them from being used automatically.
If you are using multiple swap partitions, you need to execute the appropriate mkswap command for each partition.
After formatting the swap space, you need to enable it for use by the system. Usually, the system automatically enables swap space at boot time. However, because you have not yet installed the Linux software, you need to enable it by hand.
The command to enable swap space is swapon, and it takes the following form:
# swapon /dev/hda3
3.1.5. Creating the Filesystems
Before you can use your Linux partitions to store files, you must create filesystems on them. Creating a filesystem is analogous to formatting a partition under Windows or other operating systems. We discussed filesystems briefly in Section 2.2.3 in Chapter 2.
Several types of filesystems are available for Linux. Each filesystem type has its own format and set of characteristics (such as filename length, maximum file size, and so on). Linux also supports several "third-party" filesystem types, such as the Windows filesystem.
The most commonly used filesystem type is the Second Extended Filesystem, or ext2fs. The ext2fs is one of the most efficient and flexible filesystems; it allows filenames of up to 256 characters and filesystem sizes of up to 32 terabytes. In Section 6.1.1 in Chapter 6, we discuss the various filesystem types available for Linux. Initially, however, we suggest you use the ext2fs filesystem.
To create an ext2fs filesystem, use the command:
mke2fs -c partition
where partition is the name of the partition. For example, to create a filesystem on /dev/hda2, use the command:
# mke2fs -c /dev/hda2
If you're using multiple filesystems for Linux, you need to use the appropriate mke2fs command for each filesystem.
If you have encountered any problems at this point, see Section 3.3 later in this chapter.
3.1.6. Installing the Software
Finally, you are ready to install the software on your system. Every distribution has a different mechanism for doing this. Many distributions have a self-contained program that steps you through the installation. On other distributions, you have to mount your filesystems in a certain subdirectory (such as /mnt) and copy the software to them by hand. On CD-ROM distributions, you may be given the option to install a portion of the software on your hard drive and leave most of the software on the CD-ROM. This is often called a "live filesystem." Such a live filesystem is convenient for trying out Linux before you make a commitment to install everything on your disk.
Some distributions offer several different ways to install the software. For example, you may be able to install the software directly from a Windows partition on your hard drive instead of from floppies. Or you may be able to install over a TCP/IP network via FTP or NFS. See your distribution's documentation for details.
For example, the Slackware distribution requires you to do the following:
The exact method used to install the Linux software differs greatly with each distribution.
You might be overwhelmed by the choice of software to install. Modern Linux distributions can easily contain a thousand or more packages spread over several CD-ROMs. There are basically three methods for selecting the software package:
Choosing one selection method does not exclude the use of the others. Most distributions offer two or more of the aforementioned selection mechanisms.
It might still be difficult to decide which package to pick. Good distributions show a short description of each package on screen to make it easier for you to select the correct ones, but if you are still unsure, our advice is this: when in doubt, leave it out! You can always go back and add packages later.
Modern distributions have a very nifty feature, called dependency tracking. Some packages work only when some other packages are installed (e.g., a graphics viewer might need special graphics libraries to import files). With dependency tracking, the installation program can inform you about those dependencies and will let you automatically select the package you want along with all the ones it depends on. Unless you are very sure about what you are doing, you should always accept this offer, or the package might not work afterward.
Installation programs can help you make your selection and avoid mistakes in other ways. For example, the installation program might refuse to start the installation when you deselect a package that is absolutely crucial for even the most minimal system to boot (like the basic directory structure). Or, it might check for mutual exclusions, such as cases in which you can only have one package or the other, but not both.
Some distributions, such as SuSE, come with a large book that, among other things, lists all the packages together with short descriptions. It might be a good idea to at least skim those descriptions to see what's in store for you, or you might be surprised when you select the packages and are offered the 25th text editor.
3.1.7. Creating the Boot Floppy or Installing LILO
Every distribution provides some means of booting your new Linux system after you have installed the software. In many cases, the installation procedure suggests you create a boot floppy, which contains a Linux kernel configured to use your newly created root filesystem. In order to boot Linux, you could boot from this floppy; control is transferred to your hard drive after you boot. On other distributions, this boot floppy is the installation floppy itself.
Many distributions give you the option of installing LILO on your hard drive. LILO is a program that resides on your drive's master boot record. It boots a number of operating systems, including Windows and Linux, and allows you to select to which boot at startup time.
In order for LILO to be installed successfully, it needs to know a good deal of information about your drive configuration: for example, which partitions contain which operating systems, how to boot each operating system, and so on. Many distributions, when installing LILO, attempt to "guess" at the appropriate parameters for your configuration. Occasionally, the automated LILO installation provided by some distributions can fail and leave your master boot record in shambles (however it's very doubtful that any damage to the actual data on your hard drive will take place). In particular, if you use OS/2's Boot Manager, you should not install LILO using the automated procedure; there are special instructions for using LILO with the Boot Manager, which will be covered in Chapter 5.
In many cases, it is best to use a boot floppy until you have a chance to configure LILO yourself, by hand. If you're exceptionally trusting, though, you can go ahead with the automated LILO installation if it is provided with your distribution.
TIP: There are also other boot loaders besides LILO, including the Grand Unified BootLoader (GRUB). Most distributions use LILO, though.
If everything goes well, congratulations! You have just installed Linux on your system. Go have a cup of tea or something; you deserve it.
In case you ran into trouble, Section 3.3, later in this chapter, describes the most common sticking points for Linux installations, and how to get around them.
3.1.8. Additional Installation Procedures
Some distributions of Linux provide a number of additional installation procedures, allowing you to configure various software packages, such as TCP/IP networking, the X Window System, and so on. If you are provided with these configuration options during installation, you may wish to read ahead in this book for more information on how to configure this software. Otherwise, you should put off these installation procedures until you have a complete understanding of how to configure the software.
It's up to you; if all else fails, just go with the flow and see what happens. It's doubtful that anything you do incorrectly now cannot be undone in the future (knock on wood).
Copyright © 2003 O'Reilly & Associates. All rights reserved.