I'm a bit confused because you are looking at "poppy" Linux with "uname" but apparently trying to install Slackware for booting. It is the version and kernel of the Slackware system that is important for booting Slackware, not the version of Linux you are using to install/configure GRUB.
SMP - Symetric-Multiprocessing (supports multiple CPUs in one OS)
root - Means different things in different situations.
Location of GRUB's files when installing GRUB (use "root" command)
Location of kernel and initrd files in a "menu.lst" entry (use "root" command)
Location of Linux OS files and root file system in a menu.lst entry ("root=" of "kernel" command)
I've had the least problems installing GRUB when I use a GRUB boot CD or floppy and install GRUB from the native GRUB command line. That means boot only GRUB and press C to get the GRUB command line. Then enter GRUB commands to install GRUB. You can find instructions for that in the GRUB "info" pages or I can create an ISO image for you.
If you look in the "/boot/grub" directory you should see the files required for GRUB. GRUB legacy requires these files to support all types of booting.
Code:
iso9660_stage1_5 ufs2_stage1_5
jfs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
e2fs_stage1_5 stage1 xfs_stage1_5
fat_stage1_5 menu.lst stage2
ffs_stage1_5 minix_stage1_5 stage2_eltorito
You have to create the "menu.lst" file. For example:
Code:
title Linux
root (hd0,0)
kernel /vmlinuz vga=791 root=/dev/sda2 ro vt.default_utf8=0
The "vmlinuz" file is usually a symbolic link. You need to make sure that it links to the correct kernel file. Notice that the file system root specified by "root=" is "sda2", while the location of the kernel file directory is "sda1" specified by "root (hd0,0)". Also, since the entire partition is being mounted as "/boot", the actual file system with the kernel file has no "/boot" directory. The kernel file is located in the top-most directory of the file system.
Code:
rm vmlinuz
ln -s vmlinuz-huge-smp-2.6.33.4-smp vmlinuz
After you have created the "menu.lst", the "vmlinuz" link, and copied the required GRUB files into "/boot/grub" then you can install GRUB.
Boot from a grub floppy disk or CD, or make sure that the "device.map" file has the correct information for the Linux system that you are using to install GRUB (not what you are going to boot with grub).
IMPORTANT: DO NOT change the BIOS default boot disk or device boot order after configuring and installing GRUB. The DOS drive ID's (hd0), (hd1), etc. are defined based on the BIOS configuration.
To install GRUB you specify two important locations.
- Location of GRUB files "root"
- GRUB boot sector code "setup"
For example, these GRUB commands will install GRUB to boot from the MBR (Master Boot Record) of the first hard disk, and load the GRUB files from the first partition on the first hard disk.
Code:
root (hd0,0)
setup (hd0)
To boot GRUB from the superblock of the first partition and load the GRUB files from the first partition you would do this.
Code:
root (hd0,0)
setup (hd0,0)
To boot GRUB from the superblock of the second partition and load the GRUB files from the third partition you would do this.
Code:
root (hd0,2)
setup (hd0,1)
Notice that "root" specifies the location of the GRUB files. The "setup" command only specifies where to write the boot sector code. If you don't write the boot sector code to the Master Boot Record then you must make sure that you set the correct partition "active" and marked for "Boot" in the partition table. You can also chain to the GRUB boot sector from some other bootloader when you boot GRUB from a partition rather than the MBR.
Here is how I usually install GRUB.
- Plan my boot strategy. How will GRUB be started, where will files be?
- Install Slackware grub pacakage
- Copy grub files from "/usr/lib/grub/i386-pc" to "/boot/grub"
- Create a GRUB boot floppy (use "info grub" for details)
- Link "vmlinuz" to correct kernel file with "ln -s"
- Create "menu.lst"
- Create "device.map" or verify that it is correct
- Either boot grub floppy or run grub from Linux
- Use "root" and "setup" commands to install GRUB
I use GRUB legacy because it is very simple and flexible. LILO is nearly as flexible except for the need to re-run "lilo" after configuration changes.
There is a difference between the environment when GRUB is being run from Linux versus when it is booting a system (native mode). When you type an identifier such as (hd0) GRUB has to convert that into a device identifier. On Linux that is done using "device.map" or by looking at information about devices in the kernel. From native booting mode, the BIOS is given a device ID and that is mapped to a disk by the BIOS.
(hd0) BIOS device ID 80 (hex)
(hd1) BIOS device ID 81 (hex)
(hd2) BIOS device ID 82 (hex)
(hd3) BIOS device ID 83 (hex)
In some cases GRUB running on Linux cannot correctly determine the correct drive mapping or cannot access the boot sectors for installing GRUB. In that case you have to install GRUB from native mode by booting a GRUB floppy or CD to enter commands. Press "C" during the grub boot menu in order to enter GRUB commands.
If you change BIOS settings after you install GRUB then the BIOS device ID's may change. Even when the assignment for the first BIOS device ID (80) does not change, a BIOS may change assignments of IDs to other disks.
Many people are confused about boot sectors. There are basically 5 boot sectors on the first hard disk.
- Master Boot Record / Partition Table "setup (hd0)"
- First Primary Partition boot sector "setup (hd0,0)"
- Second Primary Partition boot sector "setup (hd0,1)"
- Third Primary Partition boot sector "setup (hd0,2)"
- Fourth Primary Partition boot sector "setup (hd0,3)"
The BIOS only knows about hard disks (drive ID 80..83), not partitions. The BIOS always loads and runs the Master Boot Record sector of the first hard disk (80 hex).
The standard boot sector software in the Master Boot Record looks for the Primary Partition marked as "active" (the "boot" partition). It loads and runs the boot sector for the "active" boot partition.
The boot sector software in each Primary partition usually loads and starts the boot loader who's files are in that same Primary partition.
If you "setup" GRUB to start from the Master Boot Record then the only way to start other boot loaders is by chaining to them. The "active" partition is ignored since the GRUB boot sector replaces the standard MBR software. There is very little advantage to installing GRUB to the MBR and it can cause problems for other operating systems.
If you "setup" GRUB to start from a partition boot sector then you can use the "active" boot flag in the partition table to choose which boot loader starts up first. That can be GRUB if you want. Usually you "setup" GRUB to start from the partition that contains GRUB's files.
The only time that you really must install grub to the Master Boot Record is when you need five different boot loaders and the other four are installed to the Primary partition boot sectors. Some people feel that installing GRUB to the MBR is easier than installing GRUB to the Linux partition's boot sector. I have found the reverse to be true as modifying the MBR has a tendency to break Windows booting and un-installing GRUB from the MBR prevents booting other operating systems.
My suggestion is to install GRUB to a Linux partition's boot sector and then mark that partition as "active" for boot if you want GRUB to start first. If you have no other operating systems then you may have to format the disk or write the standard boot code into the MBR first.
You should at least be able to get GRUB to start up and press "C" for command mode. At that point you can manually enter commands to boot the kernel even when "menu.lst" is incorrect.
When you boot a kernel (and associated initrd) the kernel file and initrd file do not have to be in the same place as the root file system used by Linux. You specify the location of the root file system in the kernel parameters using "root=". You can put all your kernel and initrd files in the same place if you want. I find it less confusing to put the kernel and initrd files for each Linux system in that Linux system's root partition.
You only need one working copy of GRUB and there is no reason to have GRUB chain to a different version of GRUB. It's less confusing if you don't install a GRUB for each Linux OS. In fact you can even create a separate, small Primary partition just for GRUB. Depending on your needs, you can also put all the kernel and initrd files in the same small partition with GRUB. That may be helpful for encrypted file systems, for example.
To install GRUB successfully you need to know where you will put the GRUB files "/boot/grub" and also how you will start GRUB. Your choices for starting GRUB are basically the MBR versus a Linux Primary partition's boot sector.
To boot Linux successfully you need to know where the kernel/initrd files are located "/boot". You will also need to know the root device where that kernel's Linux OS is installed. The disk containing the kernel/initrd files is specified by the "root" command of the "menu.lst" entry. Both the kernel and initrd must be in the same partition. The root device for the OS files is specified by the "root=" kernel parameter in the "kernel" command for the menu.lst entry.
If you use a name such as "vmlinuz" or "initrd" that may be a symbolic link, make sure that the link goes to the correct files. If you build your own kernel you can also remove the symbolic links and create actual files called "vmlinuz" and "initrd". Each Linux OS can have its own "vmlinux" symbolic link located in its "/boot" directory of its root partition. The "root" menu option specifies the partition for those two files.