Previous Home Next

3.5 Installing Red Hat Linux 7.3 (Valhalla)

This Chapter focuses on installing Red Hat Linux 7.3 and configuring it for booting with the 2 already existing operating systems on the computer. It focuses on a CD-ROM based installation, so it is ideal for users (both new and old) who want a quick and simple installation solution. If you are an experienced Linux user, just shoot ahead of this Chapter and install Red Hat Linux on your system. You may skip all the contents of this Chapter if you have enough practical experience. But in case you are a complete Linux newbie, or you just decided to taste Linux for fun, then you may want to gather more information on how to install Linux with another already existing OS on the computer. Red Hat offers excellent Installation tools while installing but while multi-booting your computer with 3 operating systems, it is always advisable to use the "Custom" installation which makes the story for the Linux newbies a little difficult. Using Linux fdisk or Disk Druid is easy and if you are using the Official boxed-set version from Red Hat, make sure you use the Official Red Hat Linux x86 Installation Guide enclosed with the package. Otherwise, you can always refer to the Distribution-specific Installation Manuals at the Official Red Hat web-site. Red Hat's official web-site is located at http://www.redhat.com. Make sure you refer to the Red Hat Frequently Asked Questions for answers to questions and problems that may occur before, during or after the installation. You will find the FAQ online at: http://www.redhat.com/support/resources/faqs/rhl_general_faq/s1-contact.html.

Red Hat Linux has some exciting and important installation features. Large improvements were made in the install process as version 6 arrived. Now in the latest versions 7.3 (Valhalla) and 8.0 (Psyche), Red Hat Linux's installation is very smooth with Anaconda doing most of the dirty jobs for you. Some of the important installation features include "Kudzu" and the "Kernel 2.4". The contents of this Chapter may be categorized in the following sections mentioned below:

  1. Disk drive and partition naming in Linux

  2. Filesystems in Linux

  3. Summary of Installation Steps


1. Disk drive and partition naming in Linux

Before shooting ahead with the installation of Red Hat Linux, let us take a brief tour of the disk drive and partition naming conventions in Linux. Worthwhile mentioning, I discussed in detail the drive and partition naming convention in FreeBSD earlier when I talked about installing FreeBSD.

Linux uses a special way of naming hard drives and the partitions that you make within them. In UNIX (always remember, the Linux kernel is the reimplementation of UNIX only!) terminology, UNIX systems (and more specifically the Kernel) cannot read and understand "devices". To the UNIX kernel, everything is abstracted as a "file containing ASCII characters". That means a sentence like "I have a 30.0 GB C: drive" in Linux does not make any sense at all. So, let us see how our hard drives and partitions are named under Linux.

  • First IDE hard disk drive (Primary Master) - /dev/hda
  • Second IDE hard disk drive (Primary Slave) - /dev/hdb
  • Third IDE hard disk drive (Secondary Master) - /dev/hdc
  • Fourth IDE hard disk drive (Secondary Slave) - /dev/hdd

where, /dev is the directory under the root ("/") directory in Linux which contains all the device files associated with devices.

What about SCSI drives? Well, Linux labels that too!

  • First SCSI hard disk drive (Primary Master) - /dev/sda
  • Second SCSI hard disk drive (Primary Slave) - /dev/sdb
  • Third SCSI hard disk drive (Secondary Master) - /dev/sdc
  • Fourth SCSI hard disk drive (Secondary Slave) - /dev/sdd

where, /dev is the directory under the root ("/") directory in Linux which contains all the device files associated with devices.

Now, let us talk about the partitioning scheme under Linux. In Linux, we first consider a particular hard disk, whether an IDE or a SCSI hard disk. Then, we consider partitions on it. For example, the partitions on an IDE drive are named in the following way (/dev/hda is used as an example):

  • First primary partition - /dev/hda1
  • Second primary partition - /dev/hda2
  • Third primary partition - /dev/hda3
  • Fourth primary partition - /dev/hda4

What about if we have an "extended partition" under Linux which contains a few logical disk drives in it? Well, the Linux kernel maps those partitions too to the corresponding "block" device files stored in the /dev directory. Let us consider that the /dev/hda in our above example, contains 1 primary partition and 1 extended partition, which in turn has 5 logical disk drives in it. So, in this case, how would the partition table look like and mean? Let us see how Linux labels this scheme. Linux would represent this as:

  • /dev/hda
    • /dev/hda1
    • /dev/hda2
      • /dev/hda5
      • /dev/hda6
      • /dev/hda7
      • /dev/hda8
      • /dev/hda9
where, /dev/hda1 is the only primary partition and /dev/hda2 is the only extended partition on the hard disk under scrutiny. Note that Linux labels primary partitions from /dev/hda1 onwards to /dev/hda4, with logical disk drives extending from 5 till 16. Thus, in the above example, hda5 to hda9 are the 5 logical disk drives existing on the extended partition. In fact recently on one of my friend's computer, I partitioned the hard disk drive and installed Microsoft Windows Millennium (ME), Microsoft Windows XP Professional and Red Hat Linux 8.0 (Psyche). Linux fdisk when executed, shows exactly the same partition table as given above. He uses one IDE hard disk drive and has 1 primary partition labeled as C: drive under Windows which contains WinXP (FAT32 filesystem), with hda5 and hda6 labeled as D: and E: drives under Windows (where hda5 actually contains Windows ME edition (FAT32 filesystem)) with hda7, hda8 and hda9 used for Linux. hda7 is the /boot partition, hda8 is the "root" (/) filesystem and hda9 is the "swap" filesystem. This was a simple example of how the partition table looks like in Linux. If you have quite a few partitions and plan to install a few operating systems, be ready to see a more complex partition table when you execute a command like "/sbin/fdisk /dev/hda" (with /dev/hda being the Primary Master on your computer).

For example, when I executed the Linux fdisk on my friend's computer, it gave an output similar to this:

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 5005 cylinders
Units = cylinders of 16065 * 512 bytes

Device   Boot Start End  Blocks  Id System
/dev/hdc1 1275 10241406 c Win95 FAT32 (LBA)
/dev/hdc2   1276 5005 29961225 f Win95 Ext'd (LBA)
/dev/hdc5   1276 2550 10241406 b Win95 FAT32
/dev/hdc6 2551 3825 10241406 b Win95 FAT32
/dev/hdc7 3826 3831 48163+ 83 Linux
/dev/hdc8 3832 4213 3068383+ 83 Linux
/dev/hdc9 4214 4246 265041 82 Linux swap

2. Filesystems in Linux

After our brief discussion on the drive and partition labeling schemes in Linux, let us talk a bit about the Linux filesystem. Microsoft Windows OSes use either FAT16, FAT32, NTFS 4.0 or the most recently released NTFS 5.0 filesystems. The GNU/Linux Kernel originally used the "First Extended filesystem", commonly denoted as ext or extfs. It has now been superceded by ext2 and ext3 filesystems. Kernel 2.4, currently uses Linux's native "Third Extended filesystem", commonly denoted as "ext3" or "ext3fs". Though Kernels 2.2.x and 2.4.x support ext2fs and ext3fs, but the latest stable release i.e. Kernel 2.4.20 uses the "ext3fs" as the default filesystem. ext3fs is an extension to ext2fs functionality as is NTFS 5.0 to NTFS 4.0 in Windows. The significant difference between the "ext2fs" and "ext3fs" filesystems is that ext3fs is a "Journaling filesystem" while ext2fs is not. We will discuss these filesystems in detail later when we compare them with the Unix Filesystem (UFS) which is the native filesystem under FreeBSD.

The "Linux Programmer's Manual" has a section called "FILESYSTEMS(5)". It explains which filesystem types Linux supports. One can access all the details by simple typing in "man fs" at the command prompt on a Linux workstation. It includes the following filesystems: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs. When, as is customary, the filesystem is mounted on /proc, and you can find in the file /proc/filesystems which filesystems your kernel currently supports. If you need a currently unsupported one, either you can insert the corresponding module or just recompile the kernel to create a new one. Then, just install the new custom kernel to access the filesystem of your choice. In order to use a filesystem, you have to mount it.

Below is a short description of a few of the available filesystems. minix is the filesystem used in the Minix operating system, the first to run under Linux. It has a number of shortcomings: a 64MB partition size limit, short filenames, a single time stamp, etc. It remains useful for floppies and RAM disks. The ext is an elaborate extension of the minix filesystem. It has been completely superseded by the second version of the extended filesystem (ext2) and has been removed from the kernel (in 2.1.21). The ext2fs is the high performance disk filesystem used by Linux for fixed disks as well as removable media. The second extended filesystem was designed as an extension of the extended file system (ext). ext2 offers the best performance (in terms of speed and CPU usage) of the filesystems supported under Linux. The ext3 is a journaling version of the ext2 filesystem. It is easy to switch back and forth between ext2 and ext3. The xia was designed and implemented to be a stable, safe filesystem by extending the Minix filesystem code. It provides the basic most requested features without undue complexity. The xia filesystem is no longer actively developed or maintained. It was removed from the kernel in 2.1.21. msdos is the filesystem used by DOS, Windows and some OS/2 computers. msdos filenames can be no longer than 8 characters, followed by an optional period and 3 character extension. The umsdos is an extended DOS filesystem used by Linux. It adds capability for long filenames, UID/GID, POSIX permissions, and special files (devices, named pipes, etc.) under the DOS filesystem, without sacrificing compatibility with DOS.

The vfat is an extended DOS filesystem used by Microsoft Windows 95 and Windows NT. VFAT adds the capability to use long filenames under the MSDOS filesystem. The proc filesystem is not a general filesystem. It is a "pseudo-filesystem" which is used as an interface to kernel data structures rather than reading and interpreting /dev/kmem. In particular, its files do not take disk space. The iso9660 is a CD-ROM filesystem type conforming to the ISO 9660 standard. Linux supports High Sierra, the precursor to the ISO 9660 standard for CD-ROM filesystems. It is automatically recognized within the iso9660 filesystem support under Linux. Linux also supports the System Use Sharing Protocol records specified by the Rock Ridge Interchange Protocol. They are used to further describe the files in the iso9660 filesystem to a UNIX host, and provide information such as long filenames, UID/GID, POSIX permissions, and devices. It is automatically recognized within the iso9660 filesystem support under Linux. The hpf is the High Performance Filesystem, used in OS/2. This filesystem is read-only under Linux due to the lack of available documentation. sysv is an implementation of the SystemV/Coherent filesystem for Linux. It implements all of Xenix FS, SystemV/386 FS, and Coherent FS. The nfs is the network filesystem used to access disks located on remote computers. smb is a network filesystem that supports the SMB protocol, used by Windows for Workgroups, Windows NT, and Lan Manager. To use smbfs, you need a special mount program, which can be found in the ksmbfs package. The ncpfs is a Network filesystem that supports the NCP protocol, used by Novell NetWare.


3. Summary of Installation Steps

Now that we have covered quite a lot on partitioning schemes and filesystems under Linux, it is time to move on to the actual Linux installation. For a complete step-by-step coverage of Red Hat Linux installation, please consult the distribution-specific installation guides on Red Hat's official web-site. They cover all types of installation with appropriate screenshots and tips and tricks for all the necessary steps of the Linux installation. Here, I would only mention the significant steps for the installation. Use these steps to install Red Hat Linux on your computer:

  1. Place your Red Hat Linux 7.3 bootable CD-ROM on your CD-ROM drive and then restart the computer. I have assumed here that the reader has a Red Hat Linux 7.3 distribution release CD. If you have older distributions, that is no problem at all. You can always use them. The basic installation steps are the same for all the distribution releases. Make sure that your computer is bootable from the CD-ROM in the BIOS setup. If you cannot boot from the CD-ROM drive, alternative boot methods are also available. Refer to the Red Hat Installation Guides for more information on making "local", "network" and "PCMCIA" boot disks.
  2. After a short delay, the Red Hat Linux 7.3 screen containing the boot: prompt should appear. The screen contains information on a variety of boot options. Either press "Enter" for entering a GUI-based installation setup or type in "linux text" at the boot: prompt for entering a ncurses-based text-based installation type. I always prefer text-based installations. Watch the boot messages to see whether the Linux kernel detects your hardware. If it does not properly detect your hardware, you may need to restart the installation in expert mode. Enter the "expert" mode using the following boot command: boot: linux expert and press enter.
  3. Proceed as usual, configuring language, keyboard and the mouse. Then appears the "Welcome to Red Hat Linux" screen. Proceed forward, till you reach the "Install" or "Upgrade" screen. Since we are installing Linux for the very first time, we select "Install". Now the question that arises here is: Which installation type to consider and why? Red Hat Linux 7.3 provides 4 options: Desktop, Workstation, Server and Custom. We do "not" consider the Desktop, Workstation and Server setups owing to obvious reasons. Because they do not provide the user with custom features and functionality. Thus, we proceed with the "Custom" installation.
  4. Proceed as usual and at the partitioning screen, you would be asked to choose between "fdisk" and "disk druid". For Linux experts, fdisk is the obvious tool of choice. Disk druid is Red Hat's graphical tool for viewing, editing, adding and deleting partitions on hard disk drives. Choose as you wish. I chose "disk druid" for this guide. At the next screen, you would be shown the entire hard disk drive geometry. Make an effort to understand what is being shown on the screen and try to analyze it with the information of this chapter above where I have had discussed about partitioning in detail. Try mapping the partitions being shown to Windows terminology.
  5. On my system, Disk Druid represents a /dev/hda as /dev/hda1, /dev/hda2 and a /dev/hda3 partitions initially. /dev/hda1 is the FAT32 partition which (on my computer) contains the Microsoft Windows 98 (SE), /dev/hda2 is the FreeBSD (or OpenBSD) slice and /dev/hda3 is the Linux partition. Readers must note: The /dev/hda3 partition is the slice I created in FreeBSD disk label editor by assigning 131 to the underlying filesystem.
  6. I keep /dev/hda1 and /dev/hda2 as it is, and delete /dev/hda3. As a result, I get some free space. Then I add a /boot of about 100MB as ext2fs, then a swap of about 128MB and finally a root ("/") by assigning to it the remaining space on the drive. That is all what needs to be done. Thus, we have something like this:

    Command (m for help): p

    Disk /dev/hda: 255 heads, 63 sectors, 2491 cylinders
    Units = cylinders of 16065 * 512 bytes

    Device   Boot Start End  Blocks  Id System
    /dev/hda1 125 1004031 b Win95 FAT32
    /dev/hda2 * 126 1399 10233405 a5 FreeBSD
    /dev/hda3   1400 1412 104422+ 83 Linux
    /dev/hda4 1413 2491 8667067+ f Win95 Ext'd (LBA)
    /dev/hda5 1413 1428 128488+ 82 Linux swap
    /dev/hda6 1429 2491 8538516 83 Linux

    As shown above, /dev/hda3 is mounted as /boot, /dev/hda5 is the Linux swap filesystem and /dev/hda6 is mounted as /.

  7. Proceed with the installation as usual, till you reach the screen prompting you to choose the boot loader. This is a very important step in this installation, in fact, the most important. A boot loader is literally the first software program that runs when you switch on your computer. The Master Boot Record (MBR) is a special area on your hard drive that is automatically loaded by your computer's BIOS. It is the earliest point at which the boot loader (whether LILO or GRUB) can take control of the entire boot process. GRUB, when runs, reads instructions passed to it from its own configuration file (for example, the configuration file for the Linux Loader is the /etc/lilo.conf and for GRUB is the /boot/grub/grub.conf), passes significant instructions to the BIOS, and then loads the appropriate operating system boot files into the computer's memory. This, in turn enables the correct filesystems to be mounted at the correct mount point, which in turn then prepares the computer for use later. Thus, we see that the boot loader is vital for proper booting of the operating system.
  8. You can use any one of the 2 available boot loaders in Linux. Linux Loader (LILO) or the GNU Grand Unified Boot loader (GRUB). The reader is free to choose whichever he/she likes. I prefer using GNU GRUB for the reasons outlined in the FAQ. Readers must note that I am omitting the design, implementation and configuration details of GRUB in this guide as they are beyond the scope of this guide. A lot of information is available out there on the Internet on these and other "free" as well as "proprietary" boot loaders. Check them out if it they are needed. 

    GRUB is a very powerful x86-based boot loader which can be used to boot a number of operating systems. GRUB supports directly all GNU/Linux distributions, FreeBSD, NetBSD, OpenBSD, Sun Solaris and others. It supports booting other proprietary operating systems as well using the "chain loading" technology. Whether you have Microsoft Windows 95/98 (SE)/Millennium Edition/NT/2K/XP as the first initially installed OS on your computer and then FreeBSD 4.7-RELEASE or OpenBSD 3.2-RELEASE; simple lay back and relax because GRUB is there with all its power and dynamic functionality to take care of things. If you have Microsoft Windows 95/98 (SE)/Millennium Edition which do not have boot loaders by default (unlike Microsoft Windows NT/2K/XP), then "Add GRUB to the MBR".

  9. After startup, you will receive the GRUB screen prompting you to select the OS. If in case you have Microsoft Windows NT/2K/XP, which uses by default the "NT Boot loader" for booting the operating system software, then also go ahead and "Add GRUB to the MBR". Do not panic! It would cause no problems at all. Only in this case, after successful startup, you will receive the GRUB screen prompting you to select the OS. You will have 2 entries in the list, for example, I have "Windows" and "Linux". Selecting "Linux" and pressing enter loads the Red Hat Linux boot files to the computer's memory and the computer bootstraps itself into Linux. Whereas, on the other hand, selecting "Windows" and pressing enter utilizes the "chain loading" mechanism, and invokes the "FreeBSD boot loader". The FreeBSD boot loader then loads Microsoft Windows 98 (SE) into the computer's memory.
  10. That explains pretty everything. After adding GRUB to your Master Boot Record (MBR), proceed with the installation as usual. The reader must note that he/she may install GRUB in one of two places, either the MBR or in the first sector of the root partition. If you plan to use another boot loader on your system (for example, OS/2's Boot Manager, or Windows NT's NT Boot loader, or any commercial boot loaders like System Commander and Partition Magic), add GRUB to the "first sector of your root partition" and then configure the other boot loader to start GRUB (which will then boot Red Hat Linux). 
  11. Once you have created the partitions and installed GRUB in the MBR, all that is left is to proceed with the installation as usual, selecting packages for installation as you wish (you can later install them as well using the RPM command from the command line) and so on. Finally, finish with the Red Hat Linux installation. When prompted to create a "bootdisk", make sure you create one. It comes handy during system crashes. You can later always create a "setup bootdisk" using the /sbin/mkbootdisk command from the command line interface (CLI) mode.
  12. Depending on the number of packages that you had chosen earlier as well as your computer's resources, it will take some time for the installation to complete. Sit back and relax while the packages are being installed. Or run to your nearby McDonalds to grab a burger or 2. For the experts out there, after reading through all this, if you do feel that something was wrongly stated/explained, make sure you drop me a line or two. For the absolute newbies, I have a simple advice: Practice, practice and practice till you get perfect. There is absolutely no shortcut to success. It is not possible at all.
  13. After all packages have been successfully installed and configured, and your Red Hat Linux Installation is complete, the Linux CD-ROM would be ejected from the CD-ROM drive, and the computer would automatically reboot. As mentioned above, after successful startup, you will receive the GRUB screen prompting you to select the OS for booting. Depending on your configuration during the installation, you will have 2 entries in the list, for example, I have "Windows" and "Linux". Check whether both OSes are working properly or not by booting into each of them one after another. I am 100% sure that everything would work just fine.
  14. If everything works fine, well, it is time for rejoicing. If in case, something goes wrong somewhere, then depending on what exactly went wrong where, many things could be done. I sincerely request the reader to note everything if in case something goes wrong someplace. Write down on paper a short report if required. This helps a lot in later diagnosis. Now, it is time for configuring FreeBSD within the Red Hat Linux environment which would enable GRUB to boot FreeBSD too via "chain loading" mechanism.
  15. Log into Red Hat Linux, and open the /boot/grub/grub.conf file using the vi editor. Be very cautious while editing it. Since, GRUB reads the /boot/grub/grub.conf file while bootstrapping the computer, typos inside /boot/grub/grub.conf file can result in total disasters. Readers must note: GRUB does not have any utility like LILO uses the /sbin/lilo -v -v command from the command prompt for checking the /etc/lilo.conf. So be extra careful while using GRUB to boot OSes. Now add an entry for FreeBSD before the "Windows" entry. So, your /boot/grub/grub.conf file after editing should resemble this:

    default=0
    timeout=150
    splashimage=(hd0,2)/grub/splash.xpm.gz

    title Linux (2.4.18-3)
                    root (hd0,2)
                    kernel /vmlinuz-2.4.18-3 ro root=/dev/hda6

    title FreeBSD
                    root (hd0,a)
                    kernel /boot/loader ro root=/dev/hda2

    title Windows
                    rootnoverify (hd0,0)
                    chainloader +1

  16. As shown above, the first block is for booting Linux, the second for FreeBSD and the last one is for booting Windows 98 (SE). Readers must note the entry following the word "root" in the 2nd line of the first and second blocks. It defines the exact location on the computer's hard disk where the boot files required for booting the operating systems are located. On the Linux system, we can see that (hd0,2) refers to the 3rd partition which is /dev/hda3. And as we already know, /dev/hda3 refers to the /boot partition which contains the boot files. Similarly, on the FreeBSD system, we can see that (hd0,a) refers to the /dev/ad0s2a which refers to the root(/) filesystem and which on the Linux system is mapped into /dev/hda2. The rootnoverify mentioned for the Windows block tells the Linux Kernel not to mount the /dev/hda1 partition since it is NOT a Linux filesystem.
  17. Now when you reboot, you have a multi-boot system enabling you to boot into any one of three operating systems: Windows 98 (SE) (on my computer), FreeBSD 4.7-RELEASE or OpenBSD 3.2 and Red Hat Linux 7.3. That is all what really needs to be done for preparing a fully featured multi-boot system. If you would like to know how to mount different filesystems on varying operating systems, then proceed to the next chapter, Chapter 5: Mounting Filesystems. 

Previous Home Next