Boot with GRUB

Especially useful for multiboot, partitioned systems, GRUB offers flexibility and convenience for startup.

GRUB: it's neither larva, fast food nor the loveliest of acronyms in the GNU herd of free software. Rather, GRUB is the GNU GRand Unified Bootloader. And, it is truly the greatest loader for booting Linux and practically any other OS—open source or otherwise—you may have scattered on your platters.

GRUB is independent of any particular operating system and may be thought of as a tiny, function-specific OS. The purpose of the GRUB kernel is to recognize filesystems and load boot images, and it provides both menu-driven and command-line interfaces to perform these functions. The command-line interface in particular is quite flexible and powerful, with command history and completion features familiar to users of the bash shell.

GRUB is in its element with the multiboot, multidisk systems typical of Linux and open-source adventurers who may simultaneously test or track several Linux distributions, the BSDs, GNU/Hurd, BeOS and perhaps that vestigial partition for Mr. Bill. Even if you stick with LILO as your system's primary boot loader, it's smart to keep a GRUB boot floppy handy as the best and fastest way to get your system back if you otherwise cream your master boot record (MBR). If you have done any number of multiboot installations, you know exactly what I'm talking about. Should you need any more reasons for considering GRUB, check out the sidebar, “Why GRUB”. Let's get started!

Installation

Installation of GRUB is a two-step process. The first step is to install or build GRUB in a host OS environment, and for this we will, of course, use Linux. The second step is to install and configure GRUB as the boot loader for your system.

The first step is the usual: download the source archive, untar it, configure and make install. Assuming you have found a source mirror (see www.gnu.org/software/grub/grub.html) and downloaded the source distribution into a suitable working directory, continue with:

tar -xzvf grub-0.5.96.1.tar.gz
cd grub-0.5.96.1
./configure
make
make install

This should create the executables: grub, grub-install and mbchk; install support files in /usr/local/share/grub/i386-pc/, and install the GNU information manual and man pages.

For the second step of installation, we will first build and work with a GRUB boot floppy. This way we can use GRUB to learn about its features while testing various configurations for our particular system. After getting comfortable with the GRUB setup on floppy, we will then install it onto the MBR of the system's first hard disk. Even if you decide not to install GRUB on your hard disk right away, no harm done: you will now have your own GRUB boot floppy available to rescue systems with trashed boot loaders.

Preparing a GRUB floppy

GRUB recognizes a number of different filesytem types, including Linux ext2fs, Reiser, MINIX, BSD's ffs, as well as FAT, so it is possible to make a GRUB boot floppy with any of these filesystems. We will stick to FAT for this example, however, because it is the lowest common denominator, and most OSes have tools for mounting and reading/writing files on FAT floppies. That way, we will always be able to get to its menu configuration file if we need to.

Scrounge around in your junk drawer for some unused floppy (a new one would be even better), and give it a fresh format and FAT filesystem:

fdformat /dev/fd0
mkfs -t msdos /dev/fd0

We are going to put some files on this disk, so go ahead and mount to your usual floppy mount point (here I use /floppy):

mount -t msdos /dev/fd0 /floppy
Now install the directories and files GRUB will need:
mkdir -p /floppy/boot/grub
cp /usr/local/share/grub/i386-pc/stage* /floppy/boot/grub
The floppy can then be unmounted, umount /floppy, but leave it in the drive. The GRUB floppy is prepared and ready for the final installation, which is to install the GRUB boot loader in the MBR of the floppy itself. For that, we will use the grub executable we have built with our Linux installation. Start the executable at the Linux command prompt: grub.

This brings up an emulator of GRUB's command shell environment, which looks like Figure 1. We will discuss the features of this shell in more detail a little further on. For now, enter the following series of commands at the grub prompt:

grub> root (fd0)
grub> setup (fd0)
grub> quit

Figure 1. GRUB in command-line mode. Note the on-line help (here the GRUB emulator is running under Linux in an xterm window).

And that's it! This sequence of commands completes the installation of GRUB on the floppy disk. It is now bootable and will allow us to boot any other OS on our system.

Demonstrating GRUB

To see how GRUB may be used to boot a multitude of different operating systems, consider this example setup:

First Hard Disk (SCSI, Linux /dev/sda): 1st primary partition: Win982nd primary partition: Linux-Slackware3rd primary partition: Linux-Debian4th primary partition: Linux SwapSecond Hard Disk (SCSI, Linux /dev/sdb)1st primary partition: FreeBSD2nd primary partition: OpenBSD3rd primary partition: BeOS

Note that although GRUB and Linux are capable of dealing with installations in extended partitions, here we show a preference for using primary partitions whenever possible. Filesystems in primary partitions are often mountable by other operating systems, whereas cross-OS mounting filesystems in extended partitions is often not supported.

This system has two hard disks with six different operating systems using seven partitions. As you probably know, each OS has its own nomenclature for naming devices and partitions. For example, the Slackware installation would be known to Linux as /dev/sda2 (with swap on /dev/sda4), while FreeBSD would recognize its filesystem on /dev/da1s1a. Alternatively, if the system were configured with IDE hard disks, Slackware would be on /dev/hda2, and FreeBSD would refer to its root directory on /dev/ad1s1a. You get large helpings of this alphabet soup whenever maintaining any multiboot setup.

Since GRUB also needs to be capable of loading any of these systems, it has its own OS-neutral naming conventions for referring to devices. Hard disks are all hd, floppy disks are fd, device numbering starts from zero, partition numbering starts from zero and complete device names are enclosed in parentheses.

With these naming rules, the floppy disk is (fd0), the Win98 partition is (hd0,0), and GRUB recognizes the Slackware and Debian partitions respectively as (hd0,1) for slackware and (hd0,2) for debian.

The BSDs further subdivide their own partitions (or “slices” in BSD terms), and GRUB would refer to the root mount for the FreeBSD system on (hd1,0,a).

Okay, ready to give GRUB a taste? Slide the GRUB floppy in the drive and reboot your system (with your system's BIOS configured to boot from A: drive). You should see GRUB's terse boot messages and then find yourself in the GRUB command-line environment as shown in Figure 1.

To start, let's boot Slackware. Enter the following commands at the grub prompt:

grub> root (hd0,1)
grub> kernel /vmlinuz root=/dev/sda2 ro vga=791
grub> boot

Badda-bing, badda-boom, that postage-stamp-sized Tux appears in the upper-left corner of your screen (yes, Slackware is configured to use the framebuffer device), and Linux bootstraps its jolly way into glorious being.

Another example. Reboot the system again with the GRUB floppy, and enter the following commands at the grub prompt:

grub> rootnoverify (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot

Now your screen turns into a vague blue cloud, and you think you have made some horrible mistake. Then you realize it's only Windows and you remind yourself to expunge this partition one day soon.

Let's take a closer look at these examples. In the Slackware boot, we first used the GRUB root command to specify the device for GRUB to access. If the device has a filesystem recognized by GRUB (that is, one of ext2fs, reiser, ffs, etc.), it attempts to mount it and get its partition information, then reports its success following the command. Thus, you would see the following command/response dialog on your screen:

grub> root (hd0,1)
Filesystem type is ext2fs, partition type 0x83

Next, we used the GRUB kernel command to specify the boot image for GRUB to load. The argument to the kernel command is the filename of the boot image relative to the device specified by the root command above. The kernel image file can also be specified in explicit (device)/filename terms as follows:

grub> kernel (hd0,1)/vmlinuz
The kernel command gives you great flexibility for specifying the boot image you wish to load. For example, if we saved a previous version of a kernel to the file /vmlinuz.old, we could specify it with this command (which shows GRUB's response):
grub> kernel /vmlinuz.old root=/dev/sda2 ro vga=ask
[Linux-bzImage, setup=0xe00, size=0xfad30]
The arguments following the name of the boot image are passed to the target kernel and aren't related to GRUB. For Linux, these kernel arguments are pretty much what you would specify them to be in lilo.conf. In our example, we tell the kernel what device to mount for the root partition (root=/dev/sda2 ro), using the device nomenclature expected by Linux. Note here that we also use the ro flag to mount the root filesystem read-only initially while it performs its filesystem check. The other kernel argument in our example simply demonstrates setting another kernel variable (vga=791) to use a particular vga mode for the framebuffer display.

Finally, the last command is grub> boot. The kernel image specified is now loaded and sent rolling down the royal road to bootdom.

The second example, using Win98, demonstrates the use of GRUB's chain-loading mechanism. This method of booting loads the target OS's own boot-chain-loader rather than a kernel image of the OS. In this instance, we specified:

grub> rootnoverify (hd0,0)
grub> chainloader +1

First, the rootnoverify command is for OS filesystems not specifically recognized by GRUB, so that GRUB will not try to mount the partition. Next, the chainloader command will use the first sector of the partition of device (hd0,0) and attempt to boot whatever it finds there. This is a common means of booting OSes that install their own boot loaders in the first sector of the partition where they are installed (this is sometimes called the partition boot sector or PBR).

Finally, the makeactive command sets the active flag in the partition table for the device specified by the root command, as some operating systems, like Win98, require.

The GRUB command line is easy and fun, and you should boot the different OSes on your system a few times to get the hang of it. While you are testing, be sure to keep any notes specific to getting your particular kernels successfully loaded. This information will be useful later when you configure the menu system of GRUB to perform these command-line steps automatically.

But before we leave the command line, here are a few more GRUB commands to look at.

The help command will display a list of the 40 or so commands available in GRUB. Typing the name a particular command after help will produce on-line help for that particular command. So grub> help kernel will tell you all about using the kernel command.

The cat command can be used to view the contents of a file. For example, grub> cat (hd0,2)/etc/fstab will show the contents of the /etc/fstab file in the Debian installation. This is a very handy way of pulling out system configuration information if your normal boot loader gets whacked. Note also as you are using the GRUB command line that, like bash, up and down arrows will scroll through command history, and a tab will complete the name of a GRUB command or filename.

Finally, you can call up a specific menu interface with the configfile command as in:

grub> configfile (fd0)/boot/grub/menu.lst

This will switch GRUB into its menu mode with an interface defined by the file, menu.lst. We haven't created that file yet, but—look out, segue coming!—that's exactly what we will do next.

Menu Configuration

Using the GRUB command line is cool, but after a few thousand system starts, you will probably get a little tired of entering the same commands at the GRUB prompt and long for something a little more automated. Good news from the GRUB gang: you get a fully configurable menu interface at no extra charge! The GRUB boot menu gives you point-and-shoot boot selection, unattended default boot after a configurable timeout, any number of fallback boots if previous boots fail, toggle between command-line and menu modes, and interactive editing of menu selections and password protection. These features give GRUB an ease of use to match its tremendous functionality.

When GRUB boots, it automatically looks for the /boot/grub/menu.lst file on its boot device (the last three letters are “ELL ess tee” and not “one ess tee”). If the file is found, GRUB automatically enters its menu mode and presents the user with a stunning interface, as shown in Figure 2.

Figure 2. GRUB's Boot Menu Interface

Listing 1 [found at LJ's web site] shows the configuration file responsible for this demonstration menu. As you can see, it is a simple text file typical of many UNIX configuration files, where lines starting with hashes (#) and blank lines are ignored.

The first set of commands sets general configuration variables. The timeout command sets the time in seconds to wait for the user to make a selection before proceeding automatically to the default boot. The default command sets which of the following boot stanzas GRUB should attempt to boot automatically. Boot stanzas are numbered implicitly, starting from zero, according to their order of appearance in the configuration file. This order is also how they will be listed in the menu.

The fallback command specifies which of the boot stanzas to load if the default should fail. It is possible to set more than one fallback, as is shown in the example.

The color command lets you breathe a bit of life into the text-mode menu screen. The syntax for the color command is

color  foreground/background  [ hilite-fg/hilite-bg ]

where each of the foreground/background colors is specified with a name from the set of black, blue, green, cyan, red, magenta, brown and light-gray; dark-gray, light-blue, light-green, light-cyan, light-cyan, light-red, light-magenta, yellow and white. Among these colors, only the first eight are used for the background. The optional highlight color pair, if specified, will be used to show the current menu selection. When not specified, GRUB will use the inverse of the normal colors.

The rest of the configuration file consists of the boot stanzas for our demonstration system. The title command marks the beginning of a new boot stanza, and its argument is the label that will be displayed for its entry in the menu, from the first non-white-space character to the end of the line. The remaining commands in each stanza are identical to those used when working from the GRUB command line. The exception here is that we no longer need to give a boot command; GRUB does this job without asking.

This example configuration gives only a sample of the many flexible uses of the GRUB boot loader. Besides multiple OSes, you can use GRUB to set up menu selections for test kernels, rescue kernels, different kernel options and so on.

All in all, the GRUB configuration file will be very similar to your /etc/lilo.conf. And after working with the GRUB command line and these examples, it should be a simple matter of firing up your favorite text editor and creating a menu configuration file suitable for your own system and preferences. Don't worry if it's not perfect the first time; you will see that you can make changes interactively, and the GRUB command line is always available as a fallback.

Once you've got your configuration file, mount your GRUB floppy again, and copy the file (say it has been saved as mygrub.conf) into the magic location:

cp  mygrub.conf /floppy/boot/grub/menu.lst

Now when you boot with your GRUB floppy—presto!—you will be greeted with a lovely boot menu like the one in Figure 2. If you like, just stare at it for the few seconds it needs to count down from the timeout setting, and then it will automatically boot into your default OS. Or, use the arrow keys to highlight the OS you want to load and press return. Or, type c to go to the now-familiar GRUB command prompt. From the command prompt, press ESC to go back to the boot menu again.

It is also possible to edit the entries displayed in the menu. Typing e will open a simple vi-like editor interface for the highlighted entry. This allows you to adjust or add any settings to the configuration before booting. Any changes made here will then remain in effect for the duration of the GRUB session. To make permanent changes, you will later need to edit the configuration file on the boot disk, saving the changes with your text editor.

Play with your GRUB floppy configuration until you have it set up the way you like. After just a few system boots, you'll be slinging through GRUB like hashbrowns in a diner.

Hard Disk Installation

By this time you may be thinking, “Okay, GRUB has got it goin' on. But do I have to keep booting from this lame floppy all the time?” Of course not. Booting from floppy is for weenies.

The operation for installing GRUB on the master boot record of your hard disk is similar to the creation of a GRUB floppy. The one difference is that our floppy has all the resources GRUB needs in one place. That is, the boot image, support and configuration files are all on the floppy device MBR and /boot/grub/ directory. In a hard disk setup, you can choose where you want these resources to be.

For example, you could set up a /boot/grub directory on the first partition of your first hard disk and copy all GRUB's files into it as we did in our floppy setup. In our demonstration system, this would be the Win98 partition, and you may choose to do it that way if you want. But you can also set up the /boot/grub directory up in any device/partition on your machine with a filesystem supported by GRUB. In practice it is usually best to install this support directory in your most frequently used and/or most stable partition; that is, one that you aren't reinstalling all the time.

For this example, we will use the Slackware partition since this stays pretty stable, and I tend to do more tracking and installations in the Debian system. Once this decision is made, everything else is simple. First, boot into Slackware, create the /boot/grub directory and copy GRUB's files into it (these are all the files that the GRUB build installed in the /usr/local/share/grub/i386-pc directory). Make sure to put your handcrafted menu.lst configuration file in here, too.

Next, start GRUB, either with the grub executable you built in Linux or by rebooting with the GRUB floppy. If GRUB starts in menu mode, press c to go to command-line mode. Enter the following commands at the grub prompt:

grub> root (hd0,1)
grub> setup (hd0)
grub> quit

You're done. Your system is now fully GRUB'd, installed in the MBR of your hard disk. Type reboot as root (or take the floppy out and jab the keyboard with the old three-prong) and watch just how fast GRUB comes up now!

A few words of explanation about these installation commands. The first, root (hd0,1), tells GRUB to mount this device, in this case the partition with the Slackware installation. All files will now be relative to this device, so the GRUB installer will know to look for its support files in the /boot/grub directory we created in the Slackware partition.

The second command, setup (hd0), is a simplified front end to GRUB's install command. Note in particular that we specify the device as (hd0) and not (hd0,0). Device (hd0) results in GRUB's installation to the master boot record, which is what we want. If we had instead used (hd0,0), GRUB would be installed to the boot sector of the first partition, rather than the MBR. The difference is crucial; your technical writer makes mistakes like this so you don't have to. While each partition can have a boot sector, your hard disk will have only one master boot record the BIOS loads every time you start your machine. Unless you are doing some kind of funky boot-chaining, like using LILO to boot GRUB, you will usually want to install GRUB in the master boot record.

When GRUB installs itself on a device, it first copies a small piece of itself to the MBR, which it calls stage1. Then it follows stage1 with just enough information about where to find the rest of GRUB. In our example, GRUB will put stage1 in the MBR, followed by a blocklist that points to the Slackware partition. GRUB will then find the rest of what it needs (its stage2 files) in the /boot/grub directory.

To check this setup, just edit the menu configuration file in Slackware's /boot/grub/menu.lst at any time. Any changes will be reflected in the next boot.

Error Recovery

If you should foul up the hard disk installation somehow or want to uninstall GRUB from your system, here's what you need to know.

First, if you ever want to clean your MBR from whatever is installed there, the canonical method is to use the fdisk program from an MS-DOS boot floppy:

A:> FDISK /MBR

Of course, this isn't necessary if you just want to go back to LILO as your system's boot manager. In that case, simply make sure your /etc/lilo.conf file has a line that reads boot=/dev/hda. Then, when the rest of the lilo.conf file is the way you want, just rerun LILO. This will put LILO back on the MBR of your system.

If you install GRUB in the boot sector of a partition, instead of the MBR (such as specifying setup (hd0,0) instead of setup (hd0)), you may need to reinstall that OS's boot loader. In the case of DOS/Windows, this means running the sys command from your DOS/Windows boot floppy: A:> SYS C:.

If, this is a Linux partition, it is again effective to rerun LILO, where /etc/lilo.conf has a line in the boot stanza that reads root=/dev/hda1.

In general, most OSes will have a way to reinstall their partition's boot sector without doing a full reinstallation from scratch. (For FreeBSD, see boot0cfg(8); for OpenBSD, see installboot(8).)

In practice, especially if you followed through on the GRUB floppy examples, you should find that GRUB itself is one of the best rescue and system recovery tools in your toolkit. For example, if you have ever made a screwup in your lilo.conf file, you know you can be in for some major pain if your system won't boot. With GRUB, you always have a miniature, self-contained operating system that can recognize and mount different filesystems, find files, locate kernels and boot them, bringing your system back to life so you can work on it. At times like these, GRUB can save your bacon.

Conclusions

As is typical of GNU software, GRUB is rich with capabilities beyond what are described here. Some of these include:

  • Remapping disks and partition hiding, so you can even run multiple versions of DOS/Windows, on other than the first hard disk.

  • Network booting with BOOTP and DHCP protocols, to support multiboot schemes across a network and diskless operation.

  • Keyboard remapping, disk geometry access, memory reading, I/O port and processor probes, password protection, decompression support, etc.

See the GNU information manual for more information on these topics. GRUB is under active development, and even more features are planned for future releases.

In this brave GNU world, with vast acreage of cheap hard disk and a glut of great free OSes available, you really need a flexible and user-friendly boot loader to manage them all. Grab GRUB and give it a go.

Why GRUB?

Wayne Marshall (guinix@yahoo.com) is a UNIX programmer and technical consultant currently living in Guinea, West Africa. When not grubbing about with computers, he enjoys taking the pirogue for day trips to the local islands near Conakry with his wife, Paula.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

grub still left on HD after disk recovery performed

pqaul's picture

I "inherited" this computer from my son and had to perform system recovery. Now the machine does not want to reboot properly. Just after powering up instead of normal Windows XP loading process to take place all I get is a grub prompt.

I learned from this forum that Linux must have been loaded into a partition on my hard drive. And Grub must have been used to achieve this goal. Why the system recovery process does not wipe out everything clean? Why Grub persists and lingers somewhere on my machine?

I used the command chain: rootnoverify (hd0,0)/makeactive/ etc, etc and it gets me to Windows. But now i have to do it every time I start the computer.

Is there a way to get rid of Grub? I don't need it since I will only run Windows XP on this machine?

BTW, Grub does not seem to be installed properly anymore. If it is installed ok how can I get it change default=0 to default=saved as one of the post suggested to stop it from looking for other booting options.

Thanks for any help.
Paul

grub error

geezer99's picture

cannot 'unload' GRUB anymore...it ends up with ERROR 22 does not want to enter BIOS so I am pretty much stuck in here...
any hints?? please..

Linux bootloader entries

GrumpyGrampa's picture

All of the boot loaders apparently add bits and pieces to the Master Boot Loader. If you have a problem with this, it is because the MBR remains even thru changes in the partition table. I finally resorted to using the disk manager for my HD to give it a new MBR and strictly avoided installation of an overlay.

Fstab

Dhanraj's picture

Hi Sir,
when i go to see the contents of fstab file,it gives message that "couldn't open file fstab"
sir please could u tell me the solution?

fstab

Anonymous's picture

try going into termanal and useing the following commands

cd /etc (or whatever the location of your fstab)
sudo gedit fstab (if you do not use gnome replace gedit with your favorite text editor)

hope it helps!

Grub vs Lilo

Sajjad's picture

The main reason I still (yes, still) stick to LILO is the test kernel feature (-R, default kernel for next reboot). The last I checked, Grub didn't support this.

Ok, not everyone needs to install new kernels on remote systems, but that feature has saved me a number of times when the new kernel failed to load and all I had to do was ask to have the machine rebooted. The spartan interface is a small price to pay for the simplicity and this feature of Lilo.

Re: Grub vs LiLo (testing new kernels)

Anonymous's picture

The "Making your system robust" section of the grub manual talks about setting up fallbacks for remote booting.

grub

kees's picture

Exellent explanation how GRUB works, and more..

You saved a newbie from loosing his documents after a try of Linux.

I'll stay with you

gr

kees

Excellent Info

sarathy's picture

The information that was given here by Marshall was excellent. Hat's Off to Wayne Marshall. I breathe a lot easier with grub now. Happy Grubbing .....

:-)

Grub is realy the ugliest

Anonymous's picture

Grub is realy the ugliest piece of software that I ever instaled on my machine. I am a "newbie" to linux and so have done a little stupid thing, adding a new partion without telling Grub. The result was that I had to reinstall that ugly shit, without having access to internet. It was not before few terrifying hours that I had a disc with linux in my hands supporting that shit Grub, so I could restore my machine and get access to my stuff...
I personalyhate that thing

Grubby li'l boot loader

mweep's picture

I have my reservations about GRUB, too, and I'll admit, I've spent a few sessions turning the air blue after it hozed a disk.

But the previously abysmal docs are improving, and articles like this are helping a LOT!

You might try the old System Commander bootloader from VSystems, or the OS-BS Beta-2 loader found on the FreeBSD distro archives. They do a pretty good job of recognizing boot signatures, and being able to restore a munged MBR.

As for booting WinBlows, anyone THAT stupid gets no help from me.

mweep-(n):The sound of of a Sun Microsystems SPARCStation system bell.

Ugly attitudes

AnonymousRefrain's picture

I'd stay anonymous too with such an attitude.

Cant Blame u. Grub is ugly

Anonymous's picture

Cant Blame u. Grub is ugly but very much powerful as compared to lilo.

You should have still had the command line

Anonymous's picture

I appreciate that even if I do make a mistake, I don't just get:

LI

With grub, unless I wiped out the boot sector, I still get:

grub>

any help

Anonymous's picture

just screwed a HDD with grub, getting an error and want to change/delete the MBR or just simply want to boot from DVD...any chances??

Hard Road

Anonymous's picture

With this attitude, learning Linux is going to be a long hard road for you. With power, comes flexibility and sometimes having to learn something new. Windows XP has it's own bootloader which has sent uncountable administrators into cardiac arrest and it's not OS independent. Your struggle with Grub might have more to do with not not yet having a good foundation in other areas. If you continue with your studies, hopefully you will one day look back and realize you just didn't have the whole picture.

grub boot floppy on Fedora

Mark Nienberg's picture

Two things you might need to know for making a boot floppy disk for Fedora Linux. Tested on Fedora Core 4, probably true for all versions.

Fedora doesn't use "menu.lst" for the menu file. It uses "grub.conf". You can't put "grub.conf" on a msdos floppy due to the 8.3 filename restrictions. So in the directions above use:
"mkfs -t ext2 /dev/fd0" instead of "mkfs -t msdos /dev/fd0"
and of course change the mount option to "-t ext2".

Then make a menu file named "grub.conf" and put it in the "/boot/grub" directory.
--
Mark Nienberg

booting

pradeep's picture

I have a problem with dual booting. I have 2 hard disks. On one I have installed win Xp and on other I have installed Fedora 4. now if want to booth either of the operating system. I go to bias settings disable the drive which has other operating system and then reboot. But this is a awkward and inconvenient all the time. I know GRUB entry can solve this problem. Could you please guide me on this? The drive on which fedora is installed is partitioned into 8 each containing /, usr, home etc… both the hard disk is 120GB. My expertise level as Linux user is beginner so please be explicit in your guidance.

Expecting your answers as soon as possible.

Thanks a lot,

Sincerely
--Pradeep

booting

Simon G.'s picture

I had the same problem, but I got it fixed like that.
Fedora can only be instaled on the master drive (if you have IDE) but afterwards you can plug it back to slave. Grub will be automatically installed on the drive where you have your Fedora system on.
this drive is hd0 in Grub. So trying to boot your WinXp install on the other drive needs following section in your menu.lst :

title Windows XP Pro
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
chainloader +1

I hope this also works with your system, for me it worked fine

Re booting

William Estrada's picture

This might add some insight to your problem.

http://64.124.13.3/hacks/USB_Boot_using_GRUB.html

Recovering from deleting a LINUX partition from WINDOWS

AJ's picture

Thanks Wayne. This stuff has been very useful.

I wanted to repartition the hard drive. But the existing Linux partition was after C Drive and before D drive of windows. I had deleted the linux partition via windows and claimed the space.

However this resulted in a stage2 grub boot problem.

Having struggled for 4 Hrs (I am an amateur in Linux & Grub) I figured out the following:

1) Create a partition at the end hard drive and format it to FAT32.
2) Create the following folder structure
E:/boot/grub
3) Download the STAGE1 & STAGE2 executables from the website ftp://alpha.gnu.org/gnu/grub/
grub-0.94.-i386-pc.tgz

Created the following files:
E:/boot/grub/menu.lst
Saved the following files from the zip:
E:/boot/grub/stage1
E:/boot/grub/stage2

3) Issued the following command when grub was failing to load the STAGE2
install (hd0,2)/boot/grub/stage1 (hd0,2) (hd0,2)/boot/grub/stage2 0x8000 p (hd0,2)/boot/grub/menu.lst

4) Walla!! I am up and running without floppy disks or CD's.

AJ

GRUB/ Booting changing monitor resoluton

Jas's picture

I really screwed up -- I changed the monitor resolution settings in GNOME beyond the scan lines of the monitor attached to the box. What can I do from the grub prompt to reset the monitor resolution and boot? Anyone at all? Thanks. -J

Boot into a recovery mode

Anonymous's picture

If you don't have any chance to get to the console with this problem (ctrl-alt-f1 for example) try booting into a recovery mode via Grub. If your grub menu doesn't include a recovery option, you'll have to switch to the command line. Try a kernel line like:

kernel /boot/vmlinuz-versioninfo-blah root=/dev/whateverlikehda1 ro single

The 'single' option should drop you into the console as root.

Grub and Windows XP

Hal Harrison's picture

Getting Grub to boot XP without "dd"ing anything.

Just to share what worked for me. After moving and resizing XP and its Recovery partitions on a cheap preloaded CPU box and installing Linux RH 9 in extended partitions, Grub would not boot XP with the normal "rootnoverify ..., chainloader +1, makeactive" comamnds, like XP had to have the MBR.

I made an XP boot floppy as instructed at the MS site--"format a:" in XP--then copy the three files (ntldr, ntdetect.com, boot.ini). But sure the floppy boots XP. (XP's format command evidently puts something in the floppy's boot record.)

I moved XP partitions one more time (Partition Magic 8.0 diskettes) to make room for a small (30Meg, could be smaller) Partition 1 at the beginning of the hard file. Edit boot.ini on the floppy, bumping the "...partition(X)" number by 1. Boot XP from the floppy.

Do the same thing to tiny Partition 1 you did to the floppy, "format :", copy three files including the working boot.ini from the diskette.

Now the "rootnoverify (hd0,0), chainloader +1 ..." sequence to the tiny partition works. At some point above you may want to CD boot Linux and use "fdisk" to be sure the partitions are in consecutive order.

I welcome any comments. Someone may know a reason why this procedure is bad. Please let me know.

The GRand Unified Boot grief of GRUB

Emilio's picture

Sorry, I just can find better words to put it :-). Back in 2002 I tried Grub on a system upgrade and it totally screwed my system, no linux and no windows!!!. That happened in two ocassions in spite of me having extensive LILO experience and having done countless linux upgrades and installations.

LILO was a bit cryptic but it was relatively simple and worked all the time. GRUB has a nice interface to select but to get that working you have to endure cryptic nomenclature that is confusing considering the standard that was already set forth (HDA1, HDB2, etc.).

FDISK /MBR ? well, let me tell you, that does not always work. At least it didn't when GRUB gropped my MBR. The Windows rescue console (XP installation CD)? my God, stay away from it for your own sake! it only made things worse.

My advise: before making any Linux/Grub installation make yourself a favour, make a bootable floppy (as shown in this article), Go to the Symantec site and search for 'head.zip', download that wonderful DOS utility and use it to back up your MBR and your first head safely to the same floppy disk. If anything goes wrong (and with GRUB I would say the chances are great) you can use the same utility to put back the original MBR (and it always works).

Back then since my MBR was already fried it was "late" to use the utility. I had to use a Linux rescue CD to use the dd command to copy the backup boot sector (I forgot what the offset is) and manually copy it to the active boot sector. Then I got my Windows (and by God I was never so glad to see my WinXP boot screen, and without GRUB!!!) running, a fresh resurected MBR and used the utility to back it up just in case things turn sour one day.

NOw 2-4 years later I was hopping GRUB had overcome those things, WRONG!!! I think it only serves to scare newbies (and oldies!) away from Linux. GRUB people & DIstro makers, get that monster more fool proof.

So far I have not found answers to my new attempt: WinXP on SDA (1st SATA) and Fedora Core 4 on SDB (2nd SATA). I certainly do not want to undergo the same nightmare and grief again.

WinXP and Fedora Booting

mrjohnpc's picture

I was wondering have you figured out to boot xp and fedora - xp on sda and fedora on sdb(2SATA drives)?
This has me stumped and I'd be grateful for any help.
Thanks.

HEAD.EXE is no longer available

Anonymous's picture

The greedheads at Symantec must have gotten wind that their little utility was useful, because it is no longer available. But check around, anyway; it may be available on one or more of the MBR and partition hackers' sites. There are also several "clones" of the program that predate Symantec's use of it. Generally speaking, they're either scripts to the XNIX "dd" command, or disk image copiers.

I'm sure HEAD.EXE will be available again from Symantec as a $49.95 megaprogram with about 500 MB of bloatware.

Symantec: We know that amateurs developed it. We know it's in the public domain. But we recompiled it, so pay up, suckas!

Symantec still has HEAD.ZIP

juntel's picture

Symantec still has HEAD.ZIP freely available:

ftp://ftp.symantec.com/public/english_us_canada/tools/pq/utilities/head.zip

The utilities folder has other former PowerQuest tools.

Want to run screaming back to LILO

Doug McMahon's picture

Boy I am so agreeing with you about GRUB. What strangeness. I was all over setting up dual boot configs with LILO, now this. I had to work hard to change my FC5 install so that GRUB didn't eat a partition. Then there was the problem that the default boot-up after Linux install was to Linux, not XP. Because of the GRUB graphical command interface, the short default timeout of 5 seconds would expire before my LCD could sync to the image (character command interface of LILO never had this problem). I had to learn a lot about GRUB in a hurry to restore my ability to boot into XP (editing grub.conf). FC5 install never prompted me to make a boot floppy, in fact never gave me the option not to mess up my MBR, it just trashes the MBR with GRUB.

Now I would like to run screaming back to LILO, but can't seem to get it to work. Installing the LILO rpm is no problem. However, making a boot floppy with LILO seems to just put my machine into an infinite reboot loop. Using LILO on the hard drive makes Linux unbootable (and it can't be repaired without reinstalling Linux, fortunately XP is still bootable under LILO). I can't figure out what's wrong - I use the exact same LILO setup I've used a hundred times, but it leads to a kernel panic during boot. I can't run it solely from the floppy either, because vmlinuz is now too big to fit on a floppy. Fedora seems to be moving in the wrong direction on this.

Help?

WinXP on SDA (1st SATA) and Fedora Core 4 on SDB (2nd SATA)

Anonymous's picture

Need to help to load WinXP on SDA (1st SATA) and Fedora Core 4 on SDB (2nd SATA). Already Win XP is up and running on SDA, having problem in installing Fedora Core 4.

Emilio Any luck on this?

could you say the bias setup

ponssaran's picture

could you say the bias setup in installation of linux in sata hard disk.

WinXP on SDA (1st SATA) and Fedora Core 4 on SDB (2nd SATA)

violstar's picture

This can be done and I just did it.

I have two SATA disks, both 250GB, and first disk is loaded with OEM Windows XP. I then add a second disk to install Fedora Core 5. FC5 was installed to the second disk without problem, but after reboot, it starts XP like there is no Linux nor GRUB installation.

In order to make it work, I did the following.

1. Install FC5 to the second disk (sdb) and put the loader to your boot partition, /dev/sdb1. Don't put it to the MBR.
2. After installation, boot with 'linux rescue'
3. Make a boot file, boot.lnx, by the following command.

dd if=/dev/sdb1 of=boot.lnx bs=512 count=1

(Note: I don't have a diskette, so (probably why) FC5 didn't ask me to make a boot disk.)

4. Make a copy of the boot.lnx to your XP file system. You can copy to a diskette if you have a diskette drive. I mount one of the FAT32 by doing 'mount /dev/sda2 /tmpmnt'. Use command 'fdisk -l' to find available devices.

5. Reboot your computer to XP.
6. Copy the boot.lnx to C:\
7. Edit c:\boot.ini file as follows from command line.

> cd\
> attrib -r -s -h boot.ini
> edit boot.ini (or your favorite editor to add the following line under [operating systems]

c:\boot.lnx="Fedora Core 5"

> attrib +r +s +h boot.ini

8. Reboot Windows and you should see the Windows Boot Manager with an option of Fedora Core 5. Select Fedora Core 5 and it'll start GRUB the FC5.

I don't usually follow this forum, contact me, violstar@gmail.com, if you still have problem.

-Ken

A little hasty on XP and Grub

Hal Harrison's picture

The above worked, as far as it went. I said,

"Grub would not boot XP with the normal "rootnoverify ..., chainloader +1, makeactive" comamnds, like XP had to have the MBR."

and proceeded to involve another primary partition, etc.

In fact Grub will boot XP with "rootnoverify ..., chainloader +1, makeactive" you just have to update the partition numbers in XPs boot.ini after moving partions around.

To my best understanding now, an install of XP (or format /s) places a secondary boot loader on the partition BR which says, "Goto ntldr (or whatever filename) in my root," which will read boot.ini.

Normally you would think that once the boot records have found the OS's loader, you're done with partition numbers. But I understand (at least tonight) that XP also requires correct boot numbers in boot.ini. Double updating.

Booting problem

karthik's picture

Hi,

I had a dual partition with winxp and red hat 9. My "friend" tired to remove linux with partition magic and now all the pc does is go to grub prompt. I have tried to reinstall linux after formating the whole hard disk but still face the same problem. I have also tried the commands on this page. Nothing seems to work. Please Help !!!!!

Maybe a little help

Hal Harrison's picture

"dual partition" means at least two different partitions, one with XP, another with Linux.
"after formating the whole hard disk" would mean XP is now gone.

I think you get the Grub prompt because Gurb is still on the Master Boot Record but it can't find its "splash" screen, etc. normally in the /boot/grub directory on the partition Grub thinks is it's "root".

A clean install of Linux should fix it. This time, be sure to make the Linux boot diskette during the install. If still problems, I suggest you study the "info grub" material on a working Linux system (or on the Internet), poke around at your grub prompt with "find /gurb/grub.conf" (or "find /boot.int" if XP is still around) type "help" to the grub prompt, work out the commands which boot something from the grub prompt, then put those commands into the grub.conf file.

booting a floppy image from grub

wannabootanimage's picture

Is it possible to boot a floppy image stored on the harddisk using grub?

The image was created from a DOS bootable floppy disk.

thanks for your help

Booting flopy Disk Image from GRUB

Anonymous's picture

Use memdisk

Download SYSlinux from http://syslinux.zytor.com/download.php.Uncompress it and go to the folder memdisk ther will be a file named memdisk.it is actually a kernel that can take a floppy disk image as initrd and boot from that image.So put the file memdisk and the floppy disk image in your boot folder and add the lines:

title Smart Boot Manager
root (hd1,7)
kernel /boot/memdisk vga=0x0301
initrd /boot/sbm.img

here in this example i am using memdisk to load the "Smart Boot Manager" floppy disk image from the grub menu.

Grub booting XP on one disk, Linux on another

Ed Green's picture

I was able to get Grub to work on my two drive system but I needed a trick to do it. I ran into a problem on my first attempt: On my system XP is already on hda. I loaded Linux on hdb and created the /boot partition as the first partition on hdb (hdb1). (This is a small partition entirely within the 1024 cylinder limit.) I loaded Grub on this partition, then did the dd trick to copy the boot sector of hdb1 to a file that I placed on c:\ (on hda2) and set up my boot.ini accordingly. It didn't work - it just types "GRUB" in the upper-left corner.

I got an idea for a solution after reading this great article. First, I was finally able to get my Linux installation to boot from hdb1 with the Grub boot floppy.

I happen to have a small FAT32 partition on my first drive (hda5, which I created a long time ago with Partition Magic), so I used the "Grub boot floppy" technique to make hda5 a "Grub boot partition". I then did the dd trick for hda5, and copied that boot sector file to c:\. Now I can selectively boot to XP on hda2, or to the grub boot partition on hda5. Just add menu.lst to hda5 and we have a complete working solution. Once control is with Grub the problems with the second drive go away.

Thanks for writing the article - it showed me what to do.

problem in grub

Dhaval Patel's picture

Hi!,
In my pc there is three os. linux,win98 and winxp. Now my proble
is when I start my pc there is only two option is shown.linux is not there.but linux in installed. I hope there is problem in grub or booting proble.
So, plz give me help.

Booting Linux

LR's picture

Yeah, I have the same problem. I installed over about four times; but still no joy. I still haven't found the resolve to this provblem.

Did you ever find the answer?

Boot Last Choice

Booter's picture

I often walk away while my system boots up, to drink a coffee or watch some TV, especially when I have to re-boot windows, yawn!!

Is it possible to set GRUB to boot the last operating system selected when it times out each time. Or do you have to sit there with the finger on the arrow key and enter button each time regardless of operating system?

From

Anonymous's picture

From http://geodsoft.com/howto/dualboot/grub.htm

You can also have GRUB save the last loaded system as the default for the next boot. Change the "default=0" line to "default=saved" and add the "savedefault" command (no arguments) as the last command in each title section. When you switch to the savedefault mode, the first title section will be the default on the first boot. GRUB saves the current selection just before initiating the boot sequence. By using the savedefault command in two or more title sections and leaving it out of one or more title sections you could create a menu that would allow the default to switch between some systems but never be set for others.

Boot last choice

Dr Wangfoozel's picture

There really isn't any way to boot the last entry on the list but you can change the order of the entries on the list by changing their order in the "/boot/grub/menu.lst" configuration file.

Thanks...

Hilary's picture

Wow. my computer (seemingly) randomly booted GRUB after I asked Fedora to restart. If I hadn't found this web page, I would have had to reinstall the damn thing all over again. Thanks to you for the thorough instructions on using GRUB; it was the first time I'd ever encountered it!
Signed: a (not timid enough) newbie.

grub install

Anonymous's picture

I have a gentoo system running and I have a total backup of this using Bacula.Can anyone help how to perform a baremetal recovery wi8th this?

Thanks for the information

chandra's picture

Hi Wayne Marshall

Thanks a lot this page has helped my get safe boot into windows. I am having a dual boot system with linux and windows2000. Unfortunately linux partition has been corrupted and because of this windows is not able to boot and it is stopping at "grub>" prompt. I have just used the commands you have given in this page to boot

grub> rootnoverify (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot

This has help a lot.

Thanks for a good and useful information
Chandra

GRUB - Multiboot Problem

Hassan Kasraie's picture

My son installed Suse 9.1 on his Windows XP machine to test drive Linux. The dual-boot system worked great with no problems.

Then he decided to remove Linux. After removing it, he can no longer get to Windows and constantly gets the GRUB command line and we don't know what to do with it.

Can someone assist us with this problem? Thank you so much. Hassan

Use windows xp bootable cd

Anonymous's picture

Use windows xp bootable cd to boot the system, when asked for, press r to enter recovery console.
Simply use bootcfg command with the proper command swtch(think should be restore) to maintain your original MBR.

some help

chandra's picture

Hi Hassan Kasraie

I had the same problem use the following commands

grub> rootnoverify (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot

and i will let you know about how to save the configuration

Regards
Chandra

Linux Boots from Floppy but not Hard Drive

Anonymous's picture

The Grub Boot Floppy I created works great. I have WinXP on the Primary Master Hard Drive and Fedora Core 3 on a separate hard drive. I did not let the Fedora install load Grub onto (hd0,0), so I followed this article's instructions and made the boot floppy. The floppy works perfectly. Here is a copy of the menu.lst file:

# /boot/grub/menu.lst
# grub boot menu configuration

# general configuration:
timeout 60
default 0
fallback 2
fallback 1
color light-gray/blue red/light-gray

# boot stanzas follow
# each is implicitly numbered from 0
# in the order of appearance below

# (0) Fedora Core 3 (default boot) Linux kernel version: /vmlinuz-2.6.11-1.14_FC3
title Fedora Core 3 [Linux kernel version: /vmlinuz-2.6.11-1.14_FC3]
root (hd1,0)
kernel /vmlinuz-2.6.11-1.14_FC3 root=/dev/VolGroup00/LogVol00
initrd /initrd-2.6.11-1.14_FC3.img

(not showing the rest of the file)

As you see, Fedora is written to a logical volume.

I copied the grub directory from the floppy to the hard drive at /boot
using cp -Rp /mnt/test/boot/grub /boot
All the files are in the correct location on the hard drive.

When I boot the computer without the floppy, I select the 2nd hard drive and it boots to the grub prompt. The menu.lst does not appear and when I try to manually enter the commands that work with the floppy, only error messages appear.

Any advice would be very much appreciated by this newbie.

Thank you

Webinar
One Click, Universal Protection: Implementing Centralized Security Policies on Linux Systems

As Linux continues to play an ever increasing role in corporate data centers and institutions, ensuring the integrity and protection of these systems must be a priority. With 60% of the world's websites and an increasing share of organization's mission-critical workloads running on Linux, failing to stop malware and other advanced threats on Linux can increasingly impact an organization's reputation and bottom line.

Learn More

Sponsored by Bit9

Webinar
Linux Backup and Recovery Webinar

Most companies incorporate backup procedures for critical data, which can be restored quickly if a loss occurs. However, fewer companies are prepared for catastrophic system failures, in which they lose all data, the entire operating system, applications, settings, patches and more, reducing their system(s) to “bare metal.” After all, before data can be restored to a system, there must be a system to restore it to.

In this one hour webinar, learn how to enhance your existing backup strategies for better disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible bare-metal recovery solution for UNIX and Linux systems.

Learn More

Sponsored by Storix