Disclaimer :
This handbook has been replaced by a newer version and is not maintained anymore.
|
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
10. Configuring the Bootloader
Content:
10.a. Making your Choice
Introduction
Now that your kernel is configured and compiled and the necessary system
configuration files are filled in correctly, it is time to install a
program that will fire up your kernel when you start the system. Such a
program is called a bootloader. For x86, Gentoo Linux provides GRUB and LILO. But before we
install one of these two bootloaders, we inform you how to configure framebuffer
(assuming you want it of course). With framebuffer you can run the Linux command
line with (limited) graphical features (such as using the nice bootsplash
image Gentoo provides).
Optional: Framebuffer
If you have configured your kernel with framebuffer support (or you used
genkernel's default kernel configuration), you
have to add a vga- or video-statement to your bootloader
configuration file if you require framebuffer. The former is for 2.4 kernels
while you should use the latter for 2.6 kernels. The next table lists the
available vga-values you can use. In the example configuration files
we use 800x600 @ 16bpp for 2.4 kernels, thus 788.
For the vga-statement:
|
640x480 |
800x600 |
1024x768 |
1280x1024 |
| 8 bpp |
769 |
771 |
773 |
775 |
| 16 bpp |
785 |
788 |
791 |
794 |
| 32 bpp |
786 |
789 |
792 |
795 |
For the video-statement, a simplified syntax is used. Most of the time
it's sufficient to use video=vesafb.
More information can be found in
/usr/src/linux/Documentation/fb/vesafb.txt.
Remember (or write down) your value; you will need it shortly.
Now continue by installing GRUB or LILO.
10.b. Default: Using GRUB
Understanding GRUB's terminology
The most critical part of understanding GRUB is getting comfortable with
how GRUB refers to hard drives and partitions. Your Linux partition
/dev/hda1 is called (hd0,0) under GRUB. Notice the
parenthesis around the hd0,0 - they are required.
Hard drives count from zero rather than "a" and partitions start at zero
rather than one. Be aware too that with the hd devices, only hard drives are
counted, not atapi-ide devices such as cdrom players and burners. Also, the
same construct is used with scsi drives. (Normally they get higher numbers
than ide drives except when the bios is configured to boot from scsi devices.)
Assuming you have a hard drive on /dev/hda, a cdrom player on
/dev/hdb, a burner on /dev/hdc, a second hard drive
on /dev/hdd and no SCSI hard drive, /dev/hdd7 gets
translated to (hd1,6). It might sound tricky and tricky it is
indeed, but as we will see, GRUB offers a tab completion mechanism
that comes handy for those of you having a lot of hard drives and
partitions and who are a little lost in the GRUB numbering scheme.
Having gotten the feel for that, it is time to install GRUB.
Installing GRUB
To install GRUB, let's first emerge it:
Code Listing 2.1: Installing GRUB |
# emerge grub
|
Although GRUB is now installed, we still need to write up a
configuration file for it and place GRUB in our MBR so that GRUB automatically
boots your newly created kernel. Create /boot/grub/grub.conf with
nano (or, if applicable, another editor):
Code Listing 2.2: Creating /boot/grub/grub.conf |
# nano -w /boot/grub/grub.conf
|
Now we are going to write up a grub.conf. Below you'll
find two possible grub.conf for the partitioning example we use
in this guide, with kernel image kernel-2.4.26-gentoo-r6. We've
only extensively commented the first grub.conf. Make sure you use
your kernel image filename and, if appropriate, your initrd image
filename.
-
The first grub.conf is for people who have not used
genkernel to build their kernel
-
The second grub.conf is for people who have used
genkernel to build their kernel
Code Listing 2.3: grub.conf for non-genkernel users |
default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/hda3
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
Code Listing 2.4: grub.conf for genkernel users |
default 0
timeout 30
splashimage=(hd0,0)/grub/splash.xpm.gz
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3
initrd /initrd-2.4.26-gentoo-r6
title=Windows XP
root (hd0,5)
makeactive
chainloader +1
|
Note:
If you use a different partitioning scheme and/or kernel image, adjust
accordingly. However, make sure that anything that follows a GRUB-device
(such as (hd0,0)) is relative to the mountpoint, not the root. In
other words, (hd0,0)/grub/splash.xpm.gz is in reality
/boot/grub/splash.xpm.gz since (hd0,0) is
/boot.
|
If you need to pass any additional options to the kernel, simply add
them to the end of the kernel command. We're already passing one option
(root=/dev/hda3 or real_root=/dev/hda3), but you can pass others
as well. As an example we use the vga statement for framebuffer we
discussed previously:
Code Listing 2.5: Adding the vga-statement as a kernel option |
title=Gentoo Linux 2.4.26-r6
root (hd0,0)
kernel /kernel-2.4.26-gentoo-r6 root=/dev/hda3 vga=788
|
If you're using a 2.6.7 or higher kernel and you jumpered your harddrive
because the BIOS can't handle large harddrives you'll need to append
hdx=stroke.
genkernel users should know that their kernels use the same boot options
as is used for the LiveCD. For instance, if you have SCSI devices, you should
add doscsi as kernel option.
Now save the grub.conf file and exit. You still need to install
GRUB in the MBR (Master Boot Record) so that GRUB is automatically executed when
you boot your system.
The GRUB developers recommend the use of grub-install. However, if for
some reason grub-install fails to work correctly you still have the
option to manually install GRUB.
Continue with Default: Setting up GRUB using
grub-install or Alternative: Setting up
GRUB using manual instructions.
Default: Setting up GRUB using grub-install
To install GRUB you will need to issue the grub-install command. However,
grub-install won't work off-the-shelf since we are inside a chrooted
environment. We need to update /etc/mtab (the file with information
about all mounted filesystems) first: luckily there is an easy way to accomplish
this - just copy over /proc/mounts to /etc/mtab:
Code Listing 2.6: Updating /etc/mtab |
# cp /proc/mounts /etc/mtab
|
Now we can install GRUB using grub-install:
Code Listing 2.7: Running grub-install |
# grub-install --root-directory=/boot /dev/hda
|
If you have more questions regarding GRUB, please consult the GRUB FAQ or the GRUB Manual.
Continue with Rebooting the System.
Alternative: Setting up GRUB using manual instructions
To start configuring GRUB, you type in grub. You'll be presented
with the grub> grub command-line prompt. Now, you need to type
in the right commands to install the GRUB boot record onto your hard drive.
Code Listing 2.8: Starting the GRUB shell |
# grub
|
Note:
If your system does not have any floppy drives, add the --no-floppy
option to the above command to prevent grub from probing the (non-existing)
floppy drives.
|
In the example configuration we want to install GRUB so that it reads its
information from the boot-partition /dev/hda1, and installs the
GRUB boot record on the hard drive's MBR (master boot record) so that the first
thing we see when we turn on the computer is the GRUB prompt. Of course, if you
haven't followed the example configuration during the installation,
change the commands accordingly.
The tab completion mechanism of GRUB can be used from within GRUB.
For instance, if you type in "root (" followed by a TAB, you will
be presented with a list of devices (such as hd0). If you
type in "root (hd0," followed by a TAB, you will receive a list
of available partitions to choose from (such as hd0,0).
By using the tab completion, setting up GRUB should be not that hard.
Now go on, configure GRUB, shall we? :-)
Code Listing 2.9: Installing GRUB in the MBR |
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
|
Note:
If you want to install GRUB in a certain partition instead of the MBR,
you have to alter the setup command so it points to the right
partition. For instance, if you want GRUB installed in
/dev/hda3, then the command becomes setup (hd0,2).
Few users however want to do this.
|
If you have more questions regarding GRUB, please consult the GRUB FAQ or the GRUB Manual.
Continue with Rebooting the System.
10.c. Alternative: Using LILO
Installing LILO
LILO, the LInuxLOader, is the tried and true workhorse of Linux
bootloaders. However, it lacks some features that GRUB has (which is
also the reason why GRUB is currently gaining popularity). The reason
why LILO is still used is that, on some systems, GRUB doesn't work and
LILO does. Of course, it is also used because some people know LILO and
want to stick with it. Either way, Gentoo supports both, and apparently
you have chosen to use LILO.
Installing LILO is a breeze; just use emerge.
Code Listing 3.1: Installing LILO |
# emerge --usepkg lilo
|
Configuring LILO
To configure LILO, you must create /etc/lilo.conf. Fire up
your favorite editor (in this handbook we use nano for
consistency) and create the file.
Code Listing 3.2: Creating /etc/lilo.conf |
# nano -w /etc/lilo.conf
|
Some sections ago we have asked you to remember the kernel-image name
you have created. In the next example lilo.conf we assume
the imagename is kernel-2.4.26-gentoo-r6. We also use the
example partitioning scheme in this example. There are two separate parts:
-
One for those who have not used genkernel to build their kernel
-
One for those who have used genkernel to build their kernel
Make sure you use your kernel image filename and, if appropriate,
your initrd image filename.
Code Listing 3.3: Example /etc/lilo.conf |
boot=/dev/hda
prompt
timeout=50
default=gentoo
vga=788
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/hda3
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/ram0
append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3"
initrd=/boot/initrd-2.4.26-gentoo-r6
other=/dev/hda6
label=windows
|
Note:
If you use a different partitioning scheme and/or kernel image, adjust
accordingly.
|
If you need to pass any additional options to the kernel, add an
append statement to the section. As an example, we add the
vga=788 statement to enable framebuffer:
Code Listing 3.4: Using append to add kernel options |
image=/boot/kernel-2.4.26-gentoo-r6
label=gentoo
read-only
root=/dev/hda3
append="vga=788"
|
If you're using a 2.6.7 or higher kernel and you jumpered your harddrive
because the BIOS can't handle large harddrives you'll need to append
hdx=stroke.
genkernel users should know that their kernels use the same boot options
as is used for the LiveCD. For instance, if you have SCSI devices, you should
add doscsi as kernel option.
Now save the file and exit. To finish up, you have to run /sbin/lilo so
LILO can apply the /etc/lilo.conf to your system (i.e. install
itself on the disk). Keep in mind that you'll also have to rerun
/sbin/lilo every time you install a new kernel or make any changes to
the menu.
Code Listing 3.5: Finishing the LILO installation |
# /sbin/lilo
|
You can now continue with Rebooting the System.
10.d. Rebooting the System
Exit the chrooted environment and unmount all mounted partitions. Then type in
that one magical command you have been waiting for: reboot.
Code Listing 4.1: Unmounting all partitions and rebooting |
# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot
|
Of course, don't forget to remove the bootable CD, otherwise the CD will be
booted again instead of your new Gentoo system.
Once rebooted in your Gentoo installation, finish up with Finalizing your Gentoo Installation.
[ << ]
[ < ]
[ Home ]
[ > ]
[ >> ]
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-2.5 license. The Gentoo Name and Logo Usage Guidelines apply.
|