-   Slackware (
-   -   installing Slackware 12.1 on /dev/hda2, boot fails (

zeelog 10-13-2008 11:05 AM

installing Slackware 12.1 on /dev/hda2, boot fails
I have installed Slackware 12.1 i686 on my second
partition /dev/hda2 using the iso file I downloaded and burnt to DVD.
It seemed to install OK, but much too fast to have actually
installed all packages as I requested. Then I had the problem of
installing /boot/initrd.gz. In the end I had to copy the initrd.gz
from the DVD onto the hard drive /boot directory. It was the only
solution that seemed to work. This might be the source of the
following failed boot, I suspect. Maybe not.
Now I've installed all kinds of Linux distros and this Slackware 12.1
surprised me by not taking over the boot function automatically
like say, Ubuntu or Fedora, does. Booting remains under Ubuntu 8.4
installed in /dev/hda1. So I had to edit the Ubuntu 8.4 /boot/grub/menu.lst file so that it included Slackware 12.1 on /dev/hda2
This is the entry I have on Ubuntu 8.4 /boot/grub/menu.lst
# Manual entry for Slackware 12.1 i686 /dev/sda2
title Slackware 12.1 i686 (on /dev/sda2)
root (hd0,1)
kernel /boot/vmlinuz root=/dev/sda2 ro
initrd /boot/initrd.gz

It does not work.
Ubuntu 8.4 is wierd. It does not have any /dev/hda stuff, its all
/dev/sda. They seem to think nobody on the planted uses IDE harddrives
anymore. All my computers are IDE. I do not use Serial yet.
Just the same, Ubuntu 8.4 /dev/sda stuff works for IDE harddrives on
my other computer so I expected no problem. Maybe I'm wrong.
Here is the error message when Slackware 12.1 fails to boot.
By the way, /dev/hda2 is a bootable partition according to
fdisk /dev/hda

RAMDISK: Compressed image found at block 0
UDF-fs: No Partiton found (1)
GFS2: Unrecognized block device or mount point /dev/root.old
GFS2: gfs2 mount does not exist
VFS: Cannot open device "sda2" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the
available partitions:
0300 244198584 hda driver: ide-disk
0301 50203093 hda1
0302 50203125 hda2
( The message list more, hda5 and hdc1, but i'm only going
to use hda2 so the rest is immaterial )
Kernel panic - not syncing: VFS: Unable to mount root fs on
unknown-block (0,0)

I have edited /boot/grub/menu.lst several times and tried various
changes, like /dev/hda2 instead of /dev/sda2 etc. but nothing
seems to work. Could it be the initrd.gz is wrong?
Otherwise, I don't have a clue as to what might be wrong.
Any suggestions would be welcome.
I've had Slackware 10 on this machine in the past and it installed
with no problems.

T3slider 10-13-2008 11:26 AM

You should first test it out using the huge-smp kernel (which does NOT require an initrd) instead of the generic-smp kernel. Unless you have changed the symlink, /boot/vmlinuz should point to /boot/vmlinuz-huge-smp-, meaning you don't need an initrd. Most of the modules are compiled into the kernel, and are therefore already loaded; therefore, an initrd is not needed when using the huge-smp kernel.

Are you using an ext2/ext3 filesystem formatted using the Slackware installer? If so, it is possible that Ubuntu's GRUB is not patched for the 256-byte inode size that is now default for ext2/ext3 filesystems in Slackware. Slackware has a patched version of GRUB in extra/ on the DVD that you could try -- but this would force you to use Slackware's GRUB instead of Ubuntu's. If you want to do it the easy way, which would still allow you to use Ubuntu's GRUB while allowing you to boot Slackware nicely, you should just install LILO to the superblock of your Slackware partition (NOT to the MBR) and chainload it from Ubuntu's GRUB. For some reason this question has been asked a few times within a few days (strange coincidence I suppose), so searching the forums for GRUB should yield some results.

To chainload LILO from Ubuntu's GRUB (assuming LILO is installed to the superblock of Slackware's root partition and configured correctly to boot Slackware), use an entry like the following for Ubuntu's GRUB:

title Slackware
root (hd0,1)
chainloader +1

Note that I don't use GRUB, so that may not be 100% correct -- you should check `man grub`, `man menu.lst` (if it exists), and search the forums and/or the web for chainloading in GRUB.

zeelog 10-14-2008 09:34 AM

installing Slackware 12.1 on /dev/hda2, boot fails
Thanks for the valuable information.
I plan on formatting /dev/hda2 from Ubuntu 8.1 on /dev/hda1,
then reinstalling Slackware 12.1 but this time I will not
allow Slackware to format /dev/hda2. This way Ubuntu's grub
will "see" /dev/hda2.
And I will not install an initrd.gz and use the Huge Slackware
kernel. This way I don't have to do much thinking. Thinking is hard!
And I won't have to mess with different versions of grub.
I'll write back and tell ya'll if this method works. Thanks!

T3slider 10-14-2008 07:14 PM


Originally Posted by zeelog
Thanks for the valuable information.

No problem. :)

Originally Posted by zeelog
I plan on formatting /dev/hda2 from Ubuntu 8.1 on /dev/hda1,
then reinstalling Slackware 12.1 but this time I will not
allow Slackware to format /dev/hda2. This way Ubuntu's grub
will "see" /dev/hda2.

If the problem is indeed the inode size (ie Ubuntu's GRUB is not patched), this approach should work.

Originally Posted by zeelog
And I will not install an initrd.gz and use the Huge Slackware
kernel. This way I don't have to do much thinking.

Although I definitely recommend getting the huge-smp kernel up and running before even attemtping the generic-smp kernel (to make sure your system is working and booting fine), I *do* suggest moving to the generic-smp kernel after getting the huge-smp kernel working. It takes a little bit of extra effort -- but not much. From CHANGES_AND_HINTS.TXT:

Originally Posted by CHANGES_AND_HINTS.TXT
Use one of the provided generic kernels for daily use. Do not report
bugs until/unless you have reproduced them using one of the stock
generic kernels. You will need to create an initrd in order to boot
the generic kernels - see /boot/README.initrd for instructions.

As stated earlier, it is recommended that you use one of the generic kernels
rather than the huge kernels; the huge kernels are primarily intended as
"installer" and "emergency" kernels in case you forget to make an initrd.
For most systems, you should use the generic SMP kernel if it will run,
even if your system is not SMP-capable. Some newer hardware needs the
local APIC enabled in the SMP kernel, and theoretically there should not be
a performance penalty with using the SMP-capable kernel on a uniprocessor
machine, as the SMP kernel tests for this and makes necessary adjustments.
Furthermore, the kernel sources shipped with Slackware are configured for
SMP usage, so you won't have to modify those to build external modules
(such as NVidia or ATI proprietary drivers) if you use the SMP kernel.

If you decide to use one of the non-SMP kernels, you will need to follow the
instructions in /extra/linux- to modify your
kernel sources for non-SMP usage. Note that this only applies if you are
using the Slackware-provided non-SMP kernel - if you build a custom kernel,
the symlinks at /lib/modules/$(uname -r)/{build,source} will point to the
correct kernel source so long as you don't (re)move it.

If you decide to use one of the huge kernels anyway, you will encounter
errors like this:
kobject_add failed for uhci_hcd with -EEXIST, don't try to register
These occur because the respective drivers are compiled statically into the
huge kernels but udev tries to load them anyway. These errors should be safe
to ignore, but if you really don't want them to appear, you can blacklist the
modules that try to load in /etc/modprobe.d/blacklist. However, make sure you
remove them from the blacklist if you ever decide to use the (recommended)
generic kernels.

Switching to the generic-smp kernel just involves making an initrd (see /boot/README.initrd for information. Alien Bob also has a nice script that tries to guess the correct mkinitrd command for you) and editing menu.lst (or lilo.conf if you decide to use LILO).

Good luck, and if you need any help just post away.

All times are GMT -5. The time now is 01:07 PM.