# KC13: I just installed a new kernel and it won't boot

## wynn

Navigation [Kernel Compilation] [Table of contents]

Changes:

25 Apr 2007: swapped SATA for >=2.6.19 and SATA for <=2.6.18 around so SATA for current kernels is found first; added table of contents; changed headings to color to make them easier to find.

10 Mar 2007: Noted (2.6.18 and earlier) that SCSI CD-ROM support is needed for optical drives.

22 Feb 2007: Noted that devices using the new PATA disk drivers are called /dev/sdX and that SATA and new PATA optical drives are called /dev/sr0, /dev/sr1 &c. and need SCSI CD-ROM support.

13 Feb 2007: A temporary note added about using genkernel with gentoo-sources-2.6.19-r5

10 Feb 2007: The 2.6.19 SATA section has been expanded to contain all the necessary settings

11 Jan 2007: Disk drivers must be compiled in for genkernel too. Added a third section to (1)SATA (2)PATA (3)>=kernel 2.6.19. Added back "Shell Game", genkernel now has a --disklabel" argument.

26 Oct 2006: replaced e2label by tune2fs; added reiserfs and jfs partition labelling; added fstab and grub.conf/lilo.conf to config and lspci in "Still not booting?"; removed "Shell Game", finding the root partition by a label needs initrd and special code.

25 Oct 2006: Changed second "Kernel panic" error message to filesystem message; changed "Kernel Panic" subheadings to include actual error message; added Installing Gentoo on VMWare; added the BIOS/kernel Shell Game with partition labelling.

Table of contents

The boot loader fails to load the kernel

Booting with GRUB

Error 15: File not found

Error 17: Cannot mount selected partition

Booting with LILO

Kernel panic â VFS error:

Using genkernel from the LiveCD with the latest stable gentoo-sources

SATA and new, experimental, PATA in kernels 2.6.19 and later

Parallel ATA or plain old IDE

SATA for kernels 2.6.18 and earlier

The BIOS/kernel Shell Game

Still not booting?

Symptoms

 1) The boot loader fails to load the kernel

 2) The kernel is loaded but stops with a message similar to

```
VFS Cannot open root device "sda3" or unknown-block(0,0)
```

or

```
No filesystem could mount root, tried: reiserfs squashfs vfat iso9660 jfs
```

1) The boot loader fails to load the kernel

Booting with GRUB

Some of the frequent ones (for more detail, see the "Grub Error Collection"):

Error 15: File not found

There are three things which have to be aligned for GRUB to find the kernel:

(1) root (hdX,Y)

(2) the path to the kernel and

(3) the kernel filename

If you do not have a boot partition then, in your grub.conf, you have something like

```
title=Gentoo Linux 2.6.17-r4

root (hd0,0)

kernel /boot/kernel-2.6.17-gentoo-r4 root=/dev/sda1
```

and (1) is hd0,0 (2) is /boot/ and (3) kernel-2.6.17-gentoo-r4 and your root partition is on /dev/sda1 which should be the same as (hd0,0).

If you do have a boot partition then, in your grub.conf, you will have something like

```
title=Gentoo Linux 2.6.17-r4

root (hd0,0)

kernel /kernel-2.6.17-gentoo-r4 root=/dev/sda3
```

and (1) is hd0,0 (2) is / and (3) kernel-2.6.17-gentoo-r4; your boot partition is on (hd0,0) (whatever that is) and your root partition is on /dev/sda3

The main difference between having a boot partition and not is: with a boot partition the path is simply "/", without a boot partition it is "/boot/".

However, the usual GRUB installation has a symlink

```
 lrwxrwxrwx  1 root root       1 Sep  9 11:56 boot -> ./
```

in /boot so, if you have a boot partition but you put "/boot/kernel-2.6.17-gentoo-r4" in your grub.conf, it will still work because "/boot/kernel..." will be turned into "/./kernel..." which is OK.

If, having checked this, you are really, really sure you have got it right and GRUB is wrong you can:

1) Reboot

2) If you have "hiddenmenu" in your grub.conf, press any key when the splash screen appears and then

3) press "c" to get a grub command line

4) type in "find" followed by the path and kernel name: using the first example above

```
find /boot/kernel-2.6.17-gentoo-r4
```

if it finds it, grub will then show you the partition(s) where it occurs and you can check that your (hdX,Y) is correct.

If grub doesn't find it, you have got either the path or the kernel name wrong and grub has won.

You can also use tab-completion: if you have forgotten the kernel image filename and you do have a boot partition you can do this:

```
grub> root (hd0,0)

grub> kernel /<press tab>
```

or, if you do not have a boot partition

```
grub> root (hd0,0)

grub> kernel /boot/<press tab>
```

Time to check:

 if you do have a boot partitionDoes it contain a kernel?

Does that kernel have the name you have put in grub.conf?

Have you forgotten to mount the boot partition before saving the kernel? If so, it will be in the root partition at /boot/<kernel name>

 If you do not have a boot partition Does the /boot directory on your root partition contain a kernel?Does that kernel have the name you have put in grub.conf?

There is further advice in the "Grub Error Collection".

Error 17 : Cannot mount selected partition

grub can't recognize the type of the partition you have selected with root (hdX,Y). This usually means that you have got (hdX,Y) wrong but if you have a Reiser4 filesystem on the partition containing the kernel then (standard, unpatched 0.96) grub doesn't grok Reiser4.

Resources:

For an exhaustive list see the Grub Error Collection

GRUB stage 1.5, HighPoint workaround https://forums.gentoo.org/viewtopic-p-3217132.html#3217132

Booting with LILO

Common Errors

L followed by 9A 9A 9A 9A ...: can't find second stage: make sure you have the correct boot device, for instance, /dev/hda is the MBR but lilo.conf has the line "boot=/dev/hda2". Check the "boot=" line in lilo.conf.

L followed by 99: invalid second stage: bad map file or a very old BIOS â read LiloNotes (URL in Resources) for guidance.

Invalid compressed format: probably caused by installing a new version of the kernel and not running the map installer (/sbin/lilo) before rebooting. LILO's map (/boot/map usually) has the blocks where the kernel images are stored. If the image is changed, the blocks used by the old image are marked unused and one or more have been used for another file. Thus the old image (which LILO is trying to load) is corrupt. Solution: rerun /sbin/lilo.

CRC error: see "Invalid compressed format".

Resources

LiloErrorCodes

LiloNotes

/usr/share/doc/lilo-22.7/README.common.problems.gz

2) Kernel panic â VFS error:

For the kernel, after it has been booted, to mount the root filesystem, it must have the correct IDE/SATA drivers and support for the root filesystem â both the drivers and filesystem support must be builtin, not modules: if they are not there or not builtin it cannot continue.

One unusual reason for this error is not having support for MSDOS partition tables compiled in. So, check the kernel configuration using "make menuconfig"

```
   File systems  --->

   Partition Types  --->

[*] Advanced partition selection

[*]   PC BIOS (MSDOS partition tables) support
```

change it if necessary and recompile (see "Resources" below for kernel compiling)

If the error message is No filesystem could mount root, : check that the kernel has built in support for the root filesystem

To configure the kernel for the root filesystem (these settings are all under "File systems" in the kernel configuration)

```
For this       configure

root fs        this

ext2       <*> Second extended fs support

ext3       <*> Ext3 journalling file system support

reiserfs   <*> Reiserfs support

jfs        <*> JFS filesystem support

xfs        <*> XFS filesystem support
```

For reiserfs you will also need to emerge sys-fs/reiserfsprogs, for jfs you will need to emerge sys-fs/jfsutils and for xfs you will need sys-fs/xfsprogs.

If the error message is VFS: Cannot open root device "nnn" or unknown-block(maj,min) check that the kernel has built  in support for the hard disk type (parallel ATA or SATA)

Note: you must have the high level and low level chipset drivers for your motherboard compiled in to the kernel for the kernel to be able to access the drive or drives, read the partition table, set DMA &c.

This goes for kernels compiled using genkernel too.

Temporary Note

Using genkernel from the LiveCD with the latest stable gentoo-sources

The x86 handbook recommends copying over the LiveCD kernel configuration for genkernel to use.

When compiling gentoo-sources-2.6.19-r5 using this method, the .config file that genkernel ends up using has no support for SATA.

If you have a SATA hard drive or optical drive, you will have to run

```
genkernel --menuconfig all
```

instead and use the information below [ 3) SATA in kernels 2.6.19] to add SATA support.

This is only temporary â when 2007.1 comes out, the LiveCD configuration will be compatible with 2.6.19.End of Temporary Note

If you have both IDE (aka PATA) and SATA drives then the drivers for both should be compiled in to the kernel if you want them to work properly.

If you are installing Gentoo on VMWare, check the kernel configuration requirements (particularly block device support) in HOWTO Install Gentoo on VMware in Windows NT/2K/XP.

Otherwise, running lspci and looking at the lines which have "IDE", "Serial ATA" or "SATA" in them will give you the words to look for in the kernel configuration options.

SATA and new, experimental, PATA in kernels 2.6.19 and later

You need

```
   Device Drivers  --->

   SCSI device support  --->

<*> SCSI disk support

<*> SCSI CDROM support
```

but you don't need anything under

```
SCSI low-level drivers  --->
```

In the 2.6.19 kernel the SATA drivers are in a new section under "Device Drivers"

```
   Device Drivers  --->

   Serial ATA (prod) and Parallel ATA (experimental) drivers  --->
```

The SATA chipset drivers are now found under this heading together with experimental versions of some of the existing PATA chipset drivers.

You need to select "ATA device support" and one or more of the SATA drivers, here is the 2.6.19 list for reference

```
<*> ATA device support

< >   AHCI SATA support

< >   ServerWorks Frodo / Apple K2 SATA support

< >   Intel PIIX/ICH SATA support

< >   Marvell SATA support (HIGHLY EXPERIMENTAL)

< >   NVIDIA SATA support

< >   Pacific Digital ADMA support

< >   Pacific Digital SATA QStor support

< >   Promise SATA TX2/TX4 support

< >   Promise SATA SX4 support

< >   Silicon Image SATA support

< >   Silicon Image 3124/3132 SATA support

< >   SiS 964/180 SATA support

< >   ULi Electronics SATA support

< >   VIA SATA support

< >   VITESSE VSC-7174 / INTEL 31244 SATA support
```

This may change, of course, in later kernels.

You can try the experimental PATA drivers (all the driver names are prefixed with pata_ in a similar fashion to the SATA driver names which makes picking them out of a (future) LiveCD lsmod listing that much easier) but you should be prepared to go back to the old ones if they don't work â save the old .config with the old PATA driver selection(s), remove the old PATA driver selection(s) and select the corresponding new one(s), try it â   :Very Happy:  /  :Crying or Very sad: 

Note that if the new PATA drivers are in use, PATA disks will be named in the same way as SATA disks and optical drives will be named /dev/sr0, /dev/sr1 and so on.

SATA optical drives and optical drives using the new PATA drivers need SCSI CD-ROM support.

Parallel ATA or plain old IDE

These are the high level drivers you will need

```
   Device Drivers  --->

    ATA/ATAPI/MFM/RLL support  --->

<*> ATA/ATAPI/MFM/RLL support

<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

<*>     Include IDE/ATA-2 DISK support

[*]     Use multi-mode by default

<*>     Include IDE/ATAPI CDROM support

<*>     generic/default IDE chipset support

[*]     CMD640 chipset bugfix/support

[*]     PCI IDE chipset support

[*]       Sharing PCI IDE interrupts support

<*>       Generic PCI IDE Chipset Support

<*>       RZ1000 chipset bugfix/support

[*]       Generic PCI bus-master DMA support

[*]         Use PCI DMA by default when available
```

The low level drivers are listed following the last line above, starting with

```
< >         AEC62XX chipset support

< >         ALI M15x3 chipset support

< >         AMD and nVidia IDE support

...
```

Note:

```
< >         Intel PIIXn chipsets support
```

is for both Intel PIIX and ICH chips.

You will need to select the one which matches your chipset (lspci should give you a clue), make it built in and recompile your kernel.

SATA for kernels 2.6.18 and earlier

First you do not want

```
   Device Drivers  --->

    ATA/ATAPI/MFM/RLL support  --->

[ ]     Support for SATA (deprecated; conflicts with libata SATA driver)
```

What you need is this high level support (SCSI CDROM support is needed for optical drives, if you have one)

```
   Device Drivers  --->

   SCSI device support  --->

<*>   SCSI disk support

<M> SCSI CDROM support

    SCSI low-level drivers  --->

<*> Serial ATA (SATA) support
```

and one of more of these low level drivers

```
< > 3ware 9xxx SATA-RAID support

< >   AHCI SATA support

< >   ServerWorks Frodo / Apple K2 SATA support

< >   Intel PIIX/ICH SATA support

< >   Marvell SATA support (HIGHLY EXPERIMENTAL)

< >   NVIDIA SATA support

< >   Pacific Digital ADMA support

< >   Pacific Digital SATA QStor support

< >   Promise SATA TX2/TX4 support

< >   Promise SATA SX4 support

< >   Silicon Image SATA support

< >   Silicon Image 3124/3132 SATA support

< >   SiS 964/180 SATA support

< >   ULi Electronics SATA support

< >   VIA SATA support

< >   VITESSE VSC-7174 / INTEL 31244 SATA support
```

You will need to select the one which matches your chipset (lspci should give you a clue), make it builtin and recompile your kernel.

3) The BIOS/kernel Shell Game

If you have checked and the correct high level and chipset drivers are already built in to your kernel, it may be that the BIOS or the kernel is playing a shell game with the drive designations.

Note: You will need to compile your kernel using genkernel and give it the argument "--disklabel" on the command line for the method described below to work. Make sure that the version you have installed has it (>=3.4.5 does) by

```
genkernel --help
```

It is towards the end of the initialization section in the help output.

You can refer to your root filesystem by label or UUID rather than by device name; if the device names get changed, this a way to still be able to find it.

Suppose you have the following partitions

```
/dev/sda1       /boot   ext2

/dev/sda2       none    swap

/dev/sda3       /       ext3
```

and grub.conf is

```
default 0

timeout 10

title=Gentoo Linux 2.6.17-r5

root (hd0,0)

kernel /kernel-2.6.17-gentoo-r5 root=/dev/sda3
```

You can give sda3 a name by (ext2/ext3 â up to 16 characters)

```
tune2fs -L 2006.1-root /dev/sda3
```

(xfs â up to 12 characters)

```
xfs_admin -L 2006.1-root /dev/sda3
```

(reiserfs â 16 characters)

```
reiserfstune -l 2006.1-root /dev/sda3
```

(jfs â 16 characters)

```
jfs_tune -L 2006.1-root /dev/sda3
```

You can also give the swap partition a name using

```
mkswap -Lswap0 /dev/sda2
```

The kernel line in grub.conf would change to

```
kernel /kernel-2.6.17-gentoo-r5 root=LABEL=2006.1-root
```

It would probably be a good idea to use labels in fstab as well: if the original fstab was

```
/dev/sda1       /boot   ext2 defaults 1 2

/dev/sda2       none    swap sw   0 0

/dev/sda3       /       ext3 defaults 1 1
```

then, if boot was given the name "2006.1-boot", the new one would be

```
LABEL=2006.1-boot       /boot   ext2 defaults 1 2

LABEL=swap0             none    swap sw       0 0

LABEL=2006.1-root       /       ext3 defaults 1 1
```

The equivalent lilo.conf to the above grub.conf would be

```
boot=/dev/sda

prompt

timeout=50

default=Gentoo

image=/boot/kernel-2.6.17-gentoo-r5

  label=Gentoo

  read-only

  root="LABEL=2006.1-root"
```

Resources:

KC11: Kernel compiling for the beginner.

HARDWARE SATA

4) Still not booting?

If this still doesn't help then you will need to boot up the liveCD and then post part of your kernel configuration file

(/usr/src/linux/.config) â just

# Block devices 

# ATA/ATAPI/MFM/RLL support

# IDE chipset support/bugfixes 

# SCSI device support

# SCSI support type (disk, tape, CD-ROM)

# SCSI low-level drivers

# File systems 

but including the settings which have been commented out as the evidence of an omitted configuration can also be a vital clue.

Also post the output of lspci, /etc/fstab and your grub.conf/lilo.conf.

----------

## Earthwings

Please post comments to [FAQ] KC13: I just installed a new kernel and it won't boot

Thanks for the great FAQ, wynn, much appreciated  :Smile: 

----------

