Chapter 18. The Boot Loader GRUB

Contents

18.1. Booting with GRUB
18.2. Configuring the Boot Loader with YaST
18.3. Uninstalling the Linux Boot Loader
18.4. Creating Boot CDs
18.5. The Graphical SUSE Screen
18.6. Troubleshooting
18.7. For More Information

This chapter describes how to configure GRUB (Grand Unified Bootloader), the boot loader used in openSUSE®. A special YaST module is available for configuring all settings. If you are not familiar with the subject of booting in Linux, read the following sections to acquire some background information. This chapter also describes some of the problems frequently encountered when booting with GRUB and their solutions.

This chapter focuses on boot management and the configuration of the boot loader GRUB. The boot procedure as a whole is outlined in Chapter 17, Booting and Configuring a Linux System. A boot loader represents the interface between the machine (BIOS) and the operating system (openSUSE). The configuration of the boot loader directly impacts the start of the operating system.

The following terms appear frequently in this chapter and might need some explanation:

MBR (Master Boot Record)

The structure of the MBR is defined by an operating system–independent convention. The first 446 bytes are reserved for the program code. They typically hold part of a boot loader program or an operating system selector. The next 64 bytes provide space for a partition table of up to four entries. The partition table contains information about the partitioning of the hard disk and the file system types. The operating system needs this table for handling the hard disk. With conventional generic code in the MBR, exactly one partition must be marked active. The last two bytes of the MBR must contain a static magic number (AA55). An MBR containing a different value is regarded as invalid by some BIOSes, so is not considered for booting.

Boot Sectors

Boot sectors are the first sectors of hard disk partitions with the exception of the extended partition, which merely serves as a container for other partitions. These boot sectors have 512 bytes of space for code used to boot an operating system installed in the respective partition. This applies to boot sectors of formatted DOS, Windows, and OS/2 partitions, which also contain some basic important data of the file system. In contrast, the boot sectors of Linux partitions are initially empty after setting up a file system other than XFS. Therefore, a Linux partition is not bootable by itself, even if it contains a kernel and a valid root file system. A boot sector with valid code for booting the system has the same magic number as the MBR in its last two bytes (AA55).

18.1. Booting with GRUB

GRUB comprises two stages. Stage 1 consists of 512 bytes and its only task is to load the second stage of the boot loader. Subsequently, stage 2 is loaded. This stage contains the main part of the boot loader.

In some configurations, an intermediate stage 1.5 can be used, which locates and loads stage 2 from an appropriate file system. If possible, this method is chosen by default on installation or when initially setting up GRUB with YaST.

Stage 2 is able to access many file systems. Currently, ext2, ext3, ReiserFS, Minix, and the DOS FAT file system used by Windows are supported. To a certain extent, XFS, and UFS and FFS used by BSD systems are also supported. Since version 0.95 GRUB is also able to boot from a CD or DVD containing an ISO 9660 standard file system pursuant to the El Torito specification. Even before the system is booted, GRUB can access file systems of supported BIOS disk devices (floppy disks or hard disks, CD drives and DVD drives detected by the BIOS). Therefore, changes to the GRUB configuration file (menu.lst) do not require a new installation of the boot manager. When the system is booted, GRUB reloads the menu file with the valid paths and partition data of the kernel or the initial RAM disk (initrd) and locates these files.

The actual configuration of GRUB is based on four files that are described below:

/boot/grub/menu.lst

This file contains all information about partitions or operating systems that can be booted with GRUB. Without this information, the GRUB command line prompts the user for how to proceed. For details, see Section 18.1.1.3, “Editing Menu Entries during the Boot Procedure”.

/boot/grub/device.map

This file translates device names from the GRUB and BIOS notation to Linux device names.

/etc/grub.conf

This file contains the commands, parameters and options the GRUB shell needs for installing the boot loader correctly.

/etc/sysconfig/bootloader

This file is read by the perl-bootloader library which is used when configuring the bootloader with YaST and every time a new kernel is installed. It contains configuration options (such as kernel parameters) that will be added by default to the bootloader configuration file.

GRUB can be controlled in various ways. Boot entries from an existing configuration can be selected from the graphical menu (splash screen). The configuration is loaded from the file menu.lst.

In GRUB, all boot parameters can be changed prior to booting. For example, errors made when editing the menu file can be corrected in this way. Boot commands can also be entered interactively at a kind of input prompt. For details, see Section 18.1.1.3, “Editing Menu Entries during the Boot Procedure”. GRUB offers the possibility of determining the location of the kernel and the initrd prior to booting. In this way, you can even boot an installed operating system for which no entry exists in the boot loader configuration.

GRUB actually exists in two versions: as a boot loader and as a normal Linux program in /usr/sbin/grub. The latter is referred to as the GRUB shell. It provides an emulation of GRUB in the installed system and can be used to install GRUB or test new settings before applying them. The functionality to install GRUB as the boot loader on a hard disk or floppy disk is integrated in GRUB in the form of the command setup. This is available in the GRUB shell when Linux is loaded.

18.1.1. The File /boot/grub/menu.lst

The graphical splash screen with the boot menu is based on the GRUB configuration file /boot/grub/menu.lst, which contains all information about all partitions or operating systems that can be booted by the menu.

Every time the system is booted, GRUB loads the menu file from the file system. For this reason, GRUB does not need to be reinstalled after every change to the file. Use the YaST boot loader to modify the GRUB configuration as described in Section 18.2, “Configuring the Boot Loader with YaST”.

The menu file contains commands. The syntax is very simple. Every line contains a command followed by optional parameters separated by spaces like in the shell. For historical reasons, some commands permit an = in front of the first parameter. Comments are introduced by a hash (#).

To identify the menu items in the menu overview, set a title for every entry. The text (including any spaces) following the keyword title is displayed as a selectable option in the menu. All commands up to the next title are executed when this menu item is selected.

The simplest case is the redirection to boot loaders of other operating systems. The command is chainloader and the argument is usually the boot block of another partition, in GRUB block notation. For example:

chainloader (hd0,3)+1

The device names in GRUB are explained in Section 18.1.1.1, “Naming Conventions for Hard Disks and Partitions”. This example specifies the first block of the fourth partition of the first hard disk.

Use the command kernel to specify a kernel image. The first argument is the path to the kernel image in a partition. The other arguments are passed to the kernel on its command line.

If the kernel does not have built-in drivers for access to the root partition or a recent Linux system with advanced hotplug features is used, initrd must be specified with a separate GRUB command whose only argument is the path to the initrd file. Because the loading address of the initrd is written into the loaded kernel image, the command initrd must follow after the kernel command.

The command root simplifies the specification of kernel and initrd files. The only argument of root is a device or a partition. This device is used for all kernel, initrd, or other file paths for which no device is explicitly specified until the next root command.

The boot command is implied at the end of every menu entry, so it does not need to be written into the menu file. However, if you use GRUB interactively for booting, you must enter the boot command at the end. The command itself has no arguments. It merely boots the loaded kernel image or the specified chain loader.

After writing all menu entries, define one of them as the default entry. Otherwise, the first one (entry 0) is used. You can also specify a time-out in seconds after which the default entry should boot. timeout and default usually precede the menu entries. An example file is described in Section 18.1.1.2, “An Example Menu File”.

18.1.1.1. Naming Conventions for Hard Disks and Partitions

The naming convention GRUB uses for hard disks and partitions differ from that used for normal Linux devices. It more closely resembles the simple disk enumeration the BIOS does and the syntax is similar to that used in some BSD derivatives. In GRUB, the numbering of the partitions start with zero. This means that (hd0,0) is the first partition of the first hard disk. On a common desktop machine with a hard disk connected as primary master, the corresponding Linux device name is /dev/sda1.

The four possible primary partitions are assigned the partition numbers 0 to 3. The logical partitions are numbered from 4:

(hd0,0)   first primary partition of the first hard disk
(hd0,1)   second primary partition
(hd0,2)   third primary partition
(hd0,3)   fourth primary partition (usually an extended partition)
(hd0,4)   first logical partition
(hd0,5)   second logical partition

Being dependent on BIOS devices, GRUB does not distinguish between PATA (IDE), SATA, SCSI, and hardware RAID devices. All hard disks recognized by the BIOS or other controllers are numbered according to the boot sequence preset in the BIOS.

Unfortunately, it is often not possible to map the Linux device names to BIOS device names exactly. It generates this mapping with the help of an algorithm and saves it to the file device.map, which can be edited if necessary. Information about the file device.map is available in Section 18.1.2, “The File device.map”.

A complete GRUB path consists of a device name written in parentheses and the path to the file in the file system in the specified partition. The path begins with a slash. For example, the bootable kernel could be specified as follows on a system with a single PATA (IDE) hard disk containing Linux in its first partition:

(hd0,0)/boot/vmlinuz

18.1.1.2. An Example Menu File

The following example shows the structure of a GRUB menu file. The example installation has a Linux boot partition under /dev/sda5, a root partition under /dev/sda7 and a Windows installation under /dev/sda1.

gfxmenu (hd0,4)/boot/message
color white/blue black/light-gray
default 0
timeout 8

title linux
   root (hd0,4)
   kernel /boot/vmlinuz root=/dev/sda7 vga=791 resume=/dev/sda9
   initrd /boot/initrd

title windows
   rootnoverify (hd0,0)
   chainloader +1

title floppy
   rootnoverify (hd0,0)
   chainloader (fd0)+1

title failsafe
   root (hd0,4)
   kernel /boot/vmlinuz.shipped root=/dev/sda7 ide=nodma \
   apm=off acpi=off vga=normal nosmp maxcpus=0 3 noresume
   initrd /boot/initrd.shipped

The first block defines the configuration of the splash screen:

gfxmenu (hd0,4)/message

The background image message is located in the top directory of the /dev/sda5 partition.

color white/blue black/light-gray

Color scheme: white (foreground), blue (background), black (selection) and light gray (background of the selection). The color scheme has no effect on the splash screen, only on the customizable GRUB menu that you can access by exiting the splash screen with Esc.

default 0

The first menu entry title linux is the one to boot by default.

timeout 8

After eight seconds without any user input, GRUB automatically boots the default entry. To deactivate automatic boot, delete the timeout line. If you set timeout 0, GRUB boots the default entry immediately.

The second and largest block lists the various bootable operating systems. The sections for the individual operating systems are introduced by title.

  • The first entry (title linux) is responsible for booting openSUSE. The kernel (vmlinuz) is located in the first logical partition (the boot partition) of the first hard disk. Kernel parameters, such as the root partition and VGA mode, are appended here. The root partition is specified according to the Linux naming convention (/dev/sda7/) because this information is read by the kernel and has nothing to do with GRUB. The initrd is also located in the first logical partition of the first hard disk.

  • The second entry is responsible for loading Windows. Windows is booted from the first partition of the first hard disk (hd0,0). The command chainloader +1 causes GRUB to read and execute the first sector of the specified partition.

  • The next entry enables booting from floppy disk without modifying the BIOS settings.

  • The boot option failsafe starts Linux with a selection of kernel parameters that enables Linux to boot even on problematic systems.

The menu file can be changed whenever necessary. GRUB then uses the modified settings during the next boot. Edit the file permanently using YaST or an editor of your choice. Alternatively, make temporary changes interactively using the edit function of GRUB. See Section 18.1.1.3, “Editing Menu Entries during the Boot Procedure”.

18.1.1.3. Editing Menu Entries during the Boot Procedure

In the graphical boot menu, select the operating system to boot with the arrow keys. If you select a Linux system, you can enter additional boot parameters at the boot prompt. To edit individual menu entries directly, press Esc to exit the splash screen and get to the GRUB text-based menu then press E. Changes made in this way only apply to the current boot and are not adopted permanently.

[Important]Keyboard Layout during the Boot Procedure

The US keyboard layout is the only one available when booting. See Abbildung „US-Tastaturbelegung“ (↑Start-Up).

Editing menu entries facilitates the repair of a defective system that can no longer be booted, because the faulty configuration file of the boot loader can be circumvented by manually entering parameters. Manually entering parameters during the boot procedure is also useful for testing new settings without impairing the native system.

After activating the editing mode, use the arrow keys to select the menu entry of the configuration to edit. To make the configuration editable, press E again. In this way, edit incorrect partitions or path specifications before they have a negative effect on the boot process. Press Enter to exit the editing mode and return to the menu. Then press B to boot this entry. Further possible actions are displayed in the help text at the bottom.

To enter changed boot options permanently and pass them to the kernel, open the file menu.lst as the user root and append the respective kernel parameters to the existing line, separated by spaces:

title linux
   root(hd0,0)
     kernel /vmlinuz root=/dev/sda3 additional parameter
   initrd /initrd

GRUB automatically adopts the new parameters the next time the system is booted. Alternatively, this change can also be made with the YaST boot loader module. Append the new parameters to the existing line, separated by spaces.

18.1.2. The File device.map

The file device.map maps GRUB and BIOS device names to Linux device names. In a mixed system containing PATA (IDE) and SCSI hard disks, GRUB must try to determine the boot sequence by a special procedure, because GRUB may not have access to the BIOS information on the boot sequence. GRUB saves the result of this analysis in the file /boot/grub/device.map. Example device.map files for a system on which the boot sequence in the BIOS is set to PATA before SCSI could look as follows:

(fd0)  /dev/fd0
(hd0)  /dev/sda
(hd1)  /dev/sdb

or

(fd0)  /dev/fd0
(hd0)  /dev/disk-by-id/DISK1 ID
(hd1)  /dev/disk-by-id/DISK2 ID

Because the order of PATA (IDE), SCSI and other hard disks depends on various factors and Linux is not able to identify the mapping, the sequence in the file device.map can be set manually. If you encounter problems when booting, check if the sequence in this file corresponds to the sequence in the BIOS and use the GRUB prompt to modify it temporarily, if necessary. After the Linux system has booted, the file device.map can be edited permanently with the YaST boot loader module or an editor of your choice.

After manually changing device.map, execute the following command to reinstall GRUB. This command causes the file device.map to be reloaded and the commands listed in grub.conf to be executed:

grub --batch < /etc/grub.conf

18.1.3. The File /etc/grub.conf

The third important GRUB configuration file after menu.lst and device.map is /etc/grub.conf. This file contains the commands, parameters and options the GRUB shell needs for installing the boot loader correctly:

setup --stage2=/boot/grub/stage2 --force-lba (hd0,1) (hd0,1)
   quit

This command tells GRUB to automatically install the boot loader to the second partition on the first hard disk (hd0,1) using the boot images located on the same partition. The --stage2=/boot/grub/stage2 parameter is needed to install the stage2 image from a mounted file system. Some BIOSes have a faulty LBA support implementation, --force-lba provides a solution to ignore them.

18.1.4. The File /etc/sysconfig/bootloader

This configuration file is only used when configuring the bootloader with YaST and every time a new kernel is installed. It is evaluated by the perl-bootloader library which modifies the bootloader configuration file (for example /boot/grub/menu.lst for GRUB) accordingly. /etc/sysconfig/bootloader is not a GRUB specific configuration file - the values are applied to any bootloader installed on openSUSE.

[Note]Bootloader Configuration after a Kernel Update

Every time a new kernel is installed, the perl bootloader writes a new bootloader configuration file (for example /boot/grub/menu.lst for GRUB) using the defaults specified in /etc/sysconfig/bootloader. If you are using a customized set of kernel parameters, make sure to adjust the relevant defaults in /etc/sysconfig/bootloader according to your needs.

LOADER_TYPE

Specifies the bootloader installed on the system (e.g. GRUB or LILO). Do not modify—use YaST to change the bootloader as described in Procedure 18.6, “Changing the Boot Loader Type”.

DEFAULT_VGA / FAILSAFE_VGA / XEN_VGA

Screen resolution and color depth of the framebuffer used during booting are configured with the kernel parameter vga. These values define which resolution and color depth to use for the default boot entry, the failsafe and the XEN entry. The following values are valid:

Table 18.1. Screen Resolution and Color Depth Reference

640x480

800x600

1024x768

1280x1024

1600x1200

8bit

0x301

0x303

0x305

0x307

0x31C

15bit

0x310

0x313

0x316

0x319

0x31D

16bit

0x311

0x314

0x317

0x31A

0x31E

24bit

0x312

0x315

0x318

0x31B

0x31F


DEFAULT_APPEND / FAILSAFE_APPEND / XEN_KERNEL_APPEND

Kernel parameters (other than vga) that are automatically appended to the default, failsafe and XEN boot entries in the bootloader configuration file.

CYCLE_DETECTION / CYCLE_NEXT_ENTRY

Configure whether to use boot cycle detection and if so, which alternative entry from /boot/grub/menu.lst to boot in case of a reboot cycle (e.g. Failsafe). See /usr/share/doc/packages/bootcycle/README for detailed information.

18.1.5. Setting a Boot Password

Even before the operating system is booted, GRUB enables access to file systems. Users without root permissions can access files in your Linux system to which they have no access once the system is booted. To block this kind of access or to prevent users from booting certain operating systems, set a boot password.

[Important]Boot Password and Splash Screen

If you use a boot password for GRUB, the usual splash screen is not displayed.

As the user root, proceed as follows to set a boot password:

  1. At the root prompt, encrypt the password using grub-md5-crypt:

    # grub-md5-crypt
    Password: ****
    Retype password: ****
    Encrypted: $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/
  2. Paste the encrypted string into the global section of the file menu.lst:

    gfxmenu (hd0,4)/message
    color white/blue black/light-gray
    default 0
    timeout 8
    password --md5 $1$lS2dv/$JOYcdxIn7CJk9xShzzJVw/

    Now GRUB commands can only be executed at the boot prompt after pressing P and entering the password. However, users can still boot all operating systems from the boot menu.

  3. To prevent one or several operating systems from being booted from the boot menu, add the entry lock to every section in menu.lst that should not be bootable without entering a password. For example:

    title linux
       kernel (hd0,4)/vmlinuz root=/dev/sda7 vga=791
       initrd (hd0,4)/initrd
       lock

    After rebooting the system and selecting the Linux entry from the boot menu, the following error message is displayed:

    Error 32: Must be authenticated

    Press Enter to enter the menu. Then press P to get a password prompt. After entering the password and pressing Enter, the selected operating system (Linux in this case) should boot.

18.2. Configuring the Boot Loader with YaST

The easiest way to configure the boot loader in your openSUSE system is to use the YaST module. In the YaST Control Center, select System+Boot Loader. As in Figure 18.1, “Boot Loader Settings”, this shows the current boot loader configuration of your system and allows you to make changes.

Figure 18.1. Boot Loader Settings

Boot Loader Settings

Use the Section Management tab to edit, change and delete boot loader sections for the individual operating systems. To add an option, click Add. To change the value of an existing option, select it with the mouse and click Edit. To remove an existing entry, select it and click Delete. If you are not familiar with boot loader options, read Section 18.1, “Booting with GRUB” first.

Use the Boot Loader Installation tab to view and change settings related to type, location and advanced loader settings.

Click Other to access advanced configuration options. The build-in editor lets you change the GRUB configuration files. For details, see Section 18.1, “Booting with GRUB”. You can also delete the existing configuration and Start from Scratch or let YaST Propose a New Configuration. It is also possible to write the configuration to disk or reread the configuration from the disk. To restore the original Master Boot Record (MBR) that was saved during the installation, choose Restore MBR of Hard Disk.

18.2.1. Adjusting the Default Boot Entry

To change the system that is booted by default, proceed as follows:

Procedure 18.1. Setting the Default System

  1. Open the Section Management tab.

  2. Select the desired entry from the list.

  3. Click Set as Default.

  4. Click OK to activate these changes.

18.2.2. Modifying the Boot Loader Location

To modify the location of the boot loader, follow these steps:

Procedure 18.2. Changing the Boot Loader Location

  1. Select the Boot Loader Installation tab and then choose one of the following options for Boot Loader Location:

    Boot from Master Boot Record

    This installs the boot loader in the MBR of the first disk (according to the boot sequence preset in the BIOS).

    Boot from Root Partition

    This installs the boot loader in the boot sector of the / partition (this is the default).

    Boot from Boot Partition

    This installs the boot loader in the boot sector of the /boot partition.

    Boot from Extended Partition

    This installs the boot loader in the extended partition container.

    Custom Boot Partition

    Use this option to specify the location of the boot loader manually.

  2. Click OK to apply your changes.

18.2.3. Changing the Boot Loader Time-Out

The boot loader does not boot the default system immediately. During the time-out, you can select the system to boot or write some kernel parameters. To set the boot loader time-out, proceed as follows:

Procedure 18.3. Changing the Boot Loader Time-Out

  1. Open the Boot Loader Installation tab.

  2. Click Boot Loader Options.

  3. Change the value of Time-Out in Seconds by typing in a new value and clicking the appropriate arrow key with your mouse, or by using the arrow keys on the keyboard.

  4. Click OK twice to save the changes.

18.2.4. Setting a Boot Password

Using this YaST module, you can also set a password to protect booting. This gives you an additional level of security.

Procedure 18.4. Setting a Boot Loader Password

  1. Open the Boot Loader Installation tab.

  2. Click Boot Loader Options.

  3. Activate the Protect Boot Loader with Password option with a click and type in your Password twice.

  4. Click OK twice to save the changes.

18.2.5. Adjusting the Disk Order

If your computer has more than one hard disk, you can specify the boot sequence of the disks to match the BIOS setup of the machine (see Section 18.1.2, “The File device.map”). To do so, proceed as follows:

Procedure 18.5. Setting the Disk Order

  1. Open the Boot Loader Installation tab.

  2. Click Boot Loader Installation Details.

  3. If more than one disk is listed, select a disk and click Up or Down to reorder the displayed disks.

  4. Click OK two times to save the changes.

18.2.6. Configuring Advanced Options

Advanced boot options can be configured via Boot Loader Installation+Boot Loader Options. Normally, it should not be necessary to change the default settings.

Set Active Flag in Partition Table for Boot Partition

Activates the partition that contains the boot loader. Some legacy operating systems (such as Windows 98) can only boot from an active partition.

Write Generic Boot Code to MBR

Replaces the current MBR with generic, operating system independent code.

Debugging Flag

Sets GRUB in debug mode where it displays messages to show disk activity.

Hide Boot Menu

Hides the boot menu and boots the default entry.

Use Trusted GRUB

Starts the Trusted GRUB which supports trusted computing functionality.

Enable Acoustic Signals

Enables or disables acoustic signals in GRUB.

Graphical Menu File

Path to the graphics file used when displaying the boot screen.

Use Serial Console

If your machine is controlled via a serial console, activate this option and specify which COM port to use at which speed. See info grub or http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal

18.2.7. Changing Boot Loader Type

Set the boot loader type in Boot Loader Installation. The default boot loader in openSUSE is GRUB. To use LILO or ELILO, proceed as follows:

[Warning]LILO is unsupported

Using LILO is not recommended—it is unsupported on openSUSE. Only use it in special cases.

Procedure 18.6. Changing the Boot Loader Type

  1. Select the Boot Loader Installation tab.

  2. For Boot Loader, select LILO.

  3. In the dialog box that opens, select one of the following actions:

    Propose New Configuration

    Have YaST propose a new configuration.

    Convert Current Configuration

    Have YaST convert the current configuration. When converting the configuration, some settings may be lost.

    Start New Configuration from Scratch

    Write a custom configuration. This action is not available during the installation of openSUSE.

    Read Configuration Saved on Disk

    Load your own /etc/lilo.conf. This action is not available during the installation of openSUSE.

  4. Click OK two times to save the changes.

During the conversion, the old GRUB configuration is saved to the disk. To use it, simply change the boot loader type back to GRUB and choose Restore Configuration Saved before Conversion. This action is available only on an installed system.

[Note]Custom Boot Loader

To use a boot loader other than GRUB or LILO, select Do Not Install Any Boot Loader. Read the documentation of your boot loader carefully before choosing this option.

18.3. Uninstalling the Linux Boot Loader

YaST can be used to uninstall the Linux boot loader and restore the MBR to the state it had prior to the installation of Linux. During the installation, YaST automatically creates a backup copy of the original MBR and restores it upon request.

To uninstall GRUB, start YaST and click System+Boot Loader to start the boot loader module. Select Other+Restore MBR of Hard Disk and confirm with Yes, Rewrite.

18.4. Creating Boot CDs

If problems occur while booting your system using a boot manager or if the boot manager cannot be installed on your hard disk disk, it is also possible to create a bootable CD with all the necessary start-up files for Linux. This requires a CD writer be installed in your system.

Creating a bootable CD-ROM with GRUB merely requires a special form of stage2 called stage2_eltorito and, optionally, a customized menu.lst. The classic files stage1 and stage2 are not required.

Procedure 18.7. Creating Boot CDs

  1. Change into a directory in which to create the ISO image, for example: cd /tmp

  2. Create a subdirectory for GRUB and change into the newly created iso directory:

    mkdir -p iso/boot/grub && cd iso
  3. Copy the kernel, the files stage2_eltorito, initrd, menu.lst and message to iso/boot/:

    cp /boot/vmlinuz boot/
    cp /boot/initrd boot/
    cp /boot/message boot/
    cp /usr/lib/grub/stage2_eltorito boot/grub
    cp /boot/grub/menu.lst boot/grub
  4. Replace the root (hdx, y) entries with root (cd) to point to the CD_ROM device. You may also need to adjust the paths to the message file, the kernel and the initrd—they need to point to /boot/message, /boot/vmlinuz and /boot/initrd, respectively. After having made the adjustments, menu.lst should look similar to the following example:

    timeout 8
    default 0
    gfxmenu (cd)/boot/message
    
    title Linux
       root (cd)
       kernel /boot/vmlinuz root=/dev/sda5 vga=794 resume=/dev/sda1 \
       splash=verbose showopts
       initrd /boot/initrd

    Use splash=silent instead of splash=verbose to prevent the boot messages from appearing during the boot procedure.

  5. Create the ISO image with the following command:

    genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \
    -boot-load-size 4 -boot-info-table -iso-level 2 -input-charset utf-8 \
    -o grub.iso /tmp/iso
  6. Write the resulting file grub.iso to a CD using your preferred utility. Do not burn the ISO image as a data file, but use the option for burning a CD image in your burning utility.

18.5. The Graphical SUSE Screen

The graphical SUSE screen is displayed on the first console if the option vga=value is used as a kernel parameter. If you install using YaST, this option is automatically activated in accordance with the selected resolution and the graphics card. There are three ways to disable the SUSE screen, if desired:

Disabling the SUSE Screen When Necessary

Enter the command echo 0 >/proc/splash on the command line to disable the graphical screen. To activate it again, enter echo 1 >/proc/splash.

Disabling the SUSE screen by default

Add the kernel parameter splash=0 to your boot loader configuration. Chapter 18, The Boot Loader GRUB provides more information about this. However, if you prefer the text mode (the default in earlier versions) set vga=normal.

Completely Disabling the SUSE Screen

Compile a new kernel and disable the option Use splash screen instead of boot logo in framebuffer support. Disabling framebuffer support in the kernel automatically disables the splash screen, as well.

[Warning]No Support

SUSE cannot provide any support for your system if you run it with a custom kernel.

18.6. Troubleshooting

This section lists some of the problems frequently encountered when booting with GRUB and a short description of possible solutions. Some of the problems are covered in articles in the Support Database at http://en.opensuse.org/Portal:Support_database. Use the search dialog to search for keywords like GRUB, boot and boot loader.

GRUB and XFS

XFS leaves no room for stage1 in the partition boot block. Therefore, do not specify an XFS partition as the location of the boot loader. This problem can be solved by creating a separate boot partition that is not formatted with XFS.

GRUB Reports GRUB Geom Error

GRUB checks the geometry of connected hard disks when the system is booted. Sometimes, the BIOS returns inconsistent information and GRUB reports a GRUB Geom Error. In this case, update the BIOS.

GRUB also returns this error message if Linux was installed on an additional hard disk that is not registered in the BIOS. stage1 of the boot loader is found and loaded correctly, but stage2 is not found. This problem can be remedied by registering the new hard disk in the BIOS.

System Containing Several Hard Disks Does Not Boot

During the installation, YaST may have incorrectly determined the boot sequence of the hard disks. For example, GRUB may regard the PATA (IDE) disk as hd0 and the SCSI disk as hd1, although the boot sequence in the BIOS is reversed (SCSI before PATA).

In this case, correct the hard disks during the boot process with the help of the GRUB command line. After the system has booted, edit device.map to apply the new mapping permanently. Then check the GRUB device names in the files /boot/grub/menu.lst and /boot/grub/device.map and reinstall the boot loader with the following command:

grub --batch < /etc/grub.conf
Booting Windows from the Second Hard Disk

Some operating systems, such as Windows, can only boot from the first hard disk. If such an operating system is installed on a hard disk other than the first hard disk, you can effect a logical change for the respective menu entry.

...
title windows
   map (hd0) (hd1)
   map (hd1) (hd0)
   chainloader(hd1,0)+1
...

In this example, Windows is started from the second hard disk. For this purpose, the logical order of the hard disks is changed with map. This change does not affect the logic within the GRUB menu file. Therefore, the second hard disk must be specified for chainloader.

18.7. For More Information

Extensive information about GRUB is available at http://www.gnu.org/software/grub/. Also refer to the grub info page. You can also search for the keyword GRUB in the Support Database at http://en.opensuse.org/Portal:Support_database to get information about special issues.