# Kernel Upgrade (Solved!!)

## snakeo2

Im going to be upgrading to the latest stable kernel and I since the last time i went through a kernel upgrade was such a bad experience, I figured I post my plan of action in order to get expert advise as to anything I may be missing...etc.

first my current information:

 ls -l /usr/src/linux

lrwxrwxrwx 1 root root 22 Jun  6  2007 /usr/src/linux -> linux-2.6.20-gentoo-r8

my fstab file

# /etc/fstab: static file system information.

#

# noatime turns off atimes for increased performance (atimes normally aren't

# needed; notail increases performance of ReiserFS (at the expense of storage

# efficiency).  It's safe to drop the noatime options if you want and to

# switch between notail / tail freely.

#

# The root filesystem should have a pass number of either 0 or 1.

# All other filesystems should have a pass number of 0 or greater than 1.

#

# See the manpage fstab(5) for more information.

#

# <fs>                  <mountpoint>    <type>          <opts>          <dump/p$

# NOTE: If your BOOT partition is ReiserFS, add the notail option to opts.

/dev/sda1               /boot           ext2            noauto,noatime  1 2

/dev/sda3               /                    ext3            noatime                0 1

/dev/sda2               none            swap            sw                       0 0

/dev/sda5               /home           ext3            noatime              0 1

/dev/hda                /mnt/cdrom   iso9660     noauto,ro          0 0

/dev/hdb                /mnt/dvd        iso9660      noauto,ro         0 0

/dev/fd0                /mnt/floppy     auto            noauto              0 0

# NOTE: The next line is critical for boot!

proc                    /proc           proc            defaults                    0 0

 glibc 2.2 and above expects tmpfs to be mounted at /dev/shm for

# POSIX shared memory (shm_open, shm_unlink).

# (tmpfs is a dynamically expandable/shrinkable ramdisk, and will

#  use almost no memory if not populated with files)

shm                     /dev/shm        tmpfs           nodev,nosuid,noexec    $

my system profile:

 ls -FGg /etc/make.profile

lrwxrwxrwx 1 59 Nov 22 18:23 /etc/make.profile -> ..//usr/portage/profiles/default/linux/amd64/2008.0/desktop/

 eselect kernel list

Available kernel symlink targets:

  [1]   linux-2.6.17-gentoo-r4

  [2]   linux-2.6.20-gentoo-r8 *

  [3]   linux-2.6.24-gentoo-r8

  [4]   linux-2.6.25-gentoo-r7

  [5]   linux-2.6.26-gentoo-r3

My plan is to compile kernel 2.6.26-gentoo-r3. If I'm not mistaken I will have to mount my /boot partition once I'm done compiling kernel-2.6.26-gentoo-r3 and copy the bzImage to /boot partition. Also, whatever name I give it, I will then have to create an entry with the exact name on my grub.conf file. The main issues I had the last time around was due to a driver for my sata drive and my box would not boot as a result of it. I'm assuming that this time around it will take my existing config file and build on it the latest capabilities of the latest kernel. I wanted to take a look at my config file to write down the driver for my sata drive just in case and I came across the following error:

 make menuconfig

make: *** No rule to make target `menuconfig'.  Stop.

any ideas what is causing this? thanks in advance.

----------

## alex.blackbit

where did you run make menuconfig?

you have to be in /usr/src/linuxXXX.

i have this in my grub.conf

```
title gentoo

root (hd0,1)

kernel /vmlinuz root=/dev/sda1 video=uvesafb:1280x1024p-97,mtrr:3

title gentoo old (simple fb)

root (hd0,1)

kernel /vmlinuz.old root=/dev/sda1
```

so i can use make install in the kernel directory and do have to touch anything else.

if boot fails, i have my old kernel available in grub.

and, if you have some trouble with the device names (e.g. sda instead of former hda), grub lets you edit the boot commandline, so that you can boot anyway without the need for a livecd or something.

----------

## NeddySeagoon

snakeo2,

Your method is about right but its lacking in detail about how you will configure you new kernel.

you can copy your .config file but its not suitable for the new kernel as it stands.

Some things that were in 2.6.20 have been dropped and new things have been added to make 2.6.26

After you have copied over your .config file you must run make oldconfig in the new kernel tree.

This silently drops options that are not in 2.6.26, uses the existing settings for things that have not changed and asks you questions for all the new options. You will get a lot of questions.

When thats done, look over your settings in make menuconfig. Migration is easier if you do it more often. You can still do that as you can build and test all the indermediate kernels you have.

----------

## snakeo2

alex

i was in my /usr/src/linux directory when i got that error. here is more info:

tux linux # cd /usr/src

tux src # ls

linux                   linux-2.6.20-gentoo-r8  linux-2.6.25-gentoo-r7

linux-2.6.17-gentoo-r4  linux-2.6.24-gentoo-r8  linux-2.6.26-gentoo-r3

tux src # cd /usr/src/linux

tux linux # make menuconfig

make: *** No rule to make target `menuconfig'.  Stop.

here is my grub.conf file:

default 0

timeout 30

splashimage=(hd1,0)/boot/grub/splash.xpm.gz

title=Gentoo Server 2.6.20-r8

root (hd1,0)

kernel /kernel-genkernel-x86_64-2.6.20-gentoo-r8 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 udev doscsi$

initrd /boot/initramfs-genkernel-x86_64-2.6.20-gentoo-r8

title=Windows XP

rootnoverify (hd0,0)

makeactive

chainloader +1

title Gentoo Server

        root (hd1,0)

        kernel /kernel-genkernel-x86_64-2.6.17-gentoo-r4 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 

             udev video=vesafb:mtrr:3,ywrap       

               initrd /boot/initramfs-genkernel-x86_64-2.6.17-gentoo-r4

title=Gentoo No Initrd

root (hd1,0)

kernel /kernel-genkernel-x86_64-2.6.20-gentoo-r8 real_root=/dev/sda3 udev video=vesafb:mtrr:3,ywrap

title=Gentoo Server Manual

root (hd1,0)

kernel /boot/2.6.20-gentoo-r8-manual root=/dev/sda3

title Windows XP

        rootnoverify (hd0,0)

        makeactive

        chainloader +1

----------

## snakeo2

NeddySeagoon,

Not sure if you remember, but it was your help that finally got me to boot into my system the last time around. You helped me extensively by looking over my old config file and creating a new custom config file that allowed me to boot back into my system.  In your opinion, what would be the easiest way to proceed? Thanks in advance.

----------

## alex.blackbit

@NeddySeagoon: you are right, i forgot to mention copying .config and make oldconfig.

@snakeo2: something went wrong with your sources directory.

unfortunately it is not clear where your linux symlink points to.

anyway, as NeddySeagoon already described, copy your .config to the directory of the kernel version you want to build.

if this error happens on the the kernel you are planing to build, then you will have to re-emerge these sources.

----------

## snakeo2

Alex,

If I understand it correctly, I need to do the following:

cd /usr/src/linux-2.6.9-gentoo-r2

# cp ../linux-2.6.9-gentoo-r1/.config .

# make oldconfig

except that in my case it would be more like so:

cd /usr/src/linux-2.6.26-gentoo-r3

cp ../linux-2.6.20-gentoo-r8/.config

make oldconfig

----------

## alex.blackbit

yes.

----------

## snakeo2

alex & neddy,

here is what I think im going to do. I will compile the new kernel, but before doing so, I will post the basic kernel configurations to ensure there is no conflict with my sata drive and that at the very least I'll be able to boot into my system:

below are my steps:

cd /usr/src/linux-2.6.26-gentoo-r3

make menuconfig

-- Enable loadable module support                               │ │  

  │ │    [ ]   Forced module loading (NEW)                                │ │  

  │ │    [*]   Module unloading                                           │ │  

  │ │    [*]     Forced module unloading                                  │ │  

  │ │    [ ]   Module versioning support                                  │ │  

  │ │    [ ]   Source checksum for all modules                            │ │  

  │ │    [ ]   Automatic kernel module loading 

For my CPU

 (X) Opteron/Athlon64/Hammer/K8                      │ │  

   ( ) Intel P4 / older Netburst based Xeon            │ │  

    ( ) Core 2/newer Xeon                               │ │  

    ( ) Generic-x86-64                                  │ │  

     │ │                 

For my Hard Drive

 ATA/ATAPI/MFM/RLL support                                    │ │  

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

  │ │            *** Please see Documentation/ide/ide.txt for help/info on│ │  

  │ │    [ ]     Support for SATA (deprecated; conflicts with libata SATA │ │  

  │ │    <*>     Include IDE/ATA-2 DISK support                           │ │  

  │ │    [*]     Use multiple sector mode for Programmed Input/Output by d│ │  

  │ │    <*>     Include IDE/ATAPI CDROM support                          │ │  

  │ │    < >     Include IDE/ATAPI TAPE support                           │ │  

  │ │    < >     Include IDE/ATAPI FLOPPY support                         │ │  

  │ │    < >     SCSI emulation support                  

  <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  --│ │  

  │ │    [*] Multiple devices driver support (RAID and LVM)  --->         │ │  

  │ │    [*] Fusion MPT device support  --->                              │ │  

  │ │        IEEE 1394 (FireWire) support  --->                           │ │  

  │ │    < > I2O device support  --->                                     │ │  

  │ │    [*] Macintosh device drivers  --->                               │ │  

  │ │    [*] Network device support  --->                                 │ │  

  │ │    < > ISDN support  --->    

For my Sound

  <*> Advanced Linux Sound Architecture                            │ │  

  │ │    < >   Sequencer support (NEW)                                    │ │  

  │ │    < >   OSS Mixer API (NEW)                                        │ │  

  │ │    < >   OSS PCM (digital audio) API (NEW)                          │ │  

  │ │    < >   RTC Timer support (NEW)                                    │ │  

  │ │    [ ]   Dynamic device file minor numbers (NEW)                    │ │  

  │ │    [*]   Support old ALSA API (NEW)                                 │ │  

  │ │    [*]   Verbose procfs contents (NEW)                              │ │  

  │ │    [ ]   Verbose printk (NEW)                                       │ │  

  │ │    [ ]   Debug (NEW)          

lspci -v | grep -i audio

00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio Controller (rev a2)

	Kernel driver in use: i810_audio

05:06.0 Multimedia audio controller: Creative Labs SB Audigy LS

 <*> SB Audigy LS / Live 24bit                                    │ │  

  │ │    < > C-Media 8338, 8738, 8768, 8770 (NEW)                         │ │  

  │ │    < > C-Media 8788 (Oxygen) (NEW)                                  │ │  

  │ │    < > Cirrus Logic (Sound Fusion) CS4281 (NEW)

 < > ICE/VT1724/1720 (Envy24HT/PT) (NEW)                          │ │  

  │ │    <*> Intel/SiS/nVidia/AMD/ALi AC97 Controller  

For my USB

--- USB support                                                  │ │  

  │ │    <*>   Support for Host-side USB                                  │ │  

  │ │    [ ]     USB verbose debug messages                               │ │  

  │ │    [ ]     USB announce new devices (NEW)                           │ │  

  │ │            *** Miscellaneous USB options ***                        │ │  

  │ │    [*]     USB device filesystem                                    │ │  

  │ │    [ ]     USB device class-devices (DEPRECATED)                    │ │  

  │ │    [ ]     Dynamic USB minor allocation                             │ │  

  │ │    [ ]     USB selective suspend/resume and wakeup                  │ │  

  │ │            *** USB Host Controller Drivers ***   

My filesystem:

 <*> Ext3 journalling file system support                         │ │  

  │ │    [*]   Ext3 extended attributes                                   │ │  

  │ │    [*]     Ext3 POSIX Access Control Lists                          │ │  

  │ │    [ ]     Ext3 Security Labels     

To be able to mount my windows drive:

<*> MSDOS fs support                                             │ │  

  │ │    <*> VFAT (Windows-95) fs support                                 │ │  

  │ │    (437) Default codepage for FAT                                   │ │  

  │ │    (iso8859-1) Default iocharset for FAT                            │ │  

  │ │    <*> NTFS file system support                                     │ │  

  │ │    [ ]   NTFS debugging support (NEW)                               │ │  

  │ │    [ ]   NTFS write support (NEW)                                   │ │  

  │ │                           

Virtualization

- Virtualization                                               │ │  

  │ │    <*>   Kernel-based Virtual Machine (KVM) support                 │ │  

  │ │    < >     KVM for Intel processors support (NEW)                   │ │  

  │ │    <*>     KVM for AMD processors support                           │ │  

  │ │    < >   PCI driver for virtio devices (EXPERIMENTAL) (NEW)         │ │  

  │ │    < >   Virtio balloon driver (EXPERIMENTAL) (NEW)     

For my PCI Video Card

 [*] PCI support                                                  │ │  

  │ │    [*]   Support mmconfig PCI config space access                   │ │  

  │ │    [ ] Support for DMA Remapping Devices (EXPERIMENTAL) (NEW)       │ │  

  │ │    [*] PCI Express support                                          │ │  

  │ │    [*]   Root Port Advanced Error Reporting support                 │ │  

  │ │    [ ]   PCI Express ASPM support(Experimental) (NEW)               │ │  

  │ │    [*] Message Signaled Interrupts (MSI and MSI-X)                  │ │  

  │ │    [*] Enable deprecated pci_find_* API (NEW)                       │ │  

  │ │    [ ] PCI Debugging                                                │ │  

  │ │    [ ] Interrupts on hypertransport devices                         │ │  

  │ └────v(+)─────────────────────────────────────────────────────────────┘ │  

  ├─────────────────────────────────────────────────

Let me know if you see anything that I missed.....once it is done compiling

make && make modules_install

cp arch/x86_64/boot/bzImage /boot/kernel-2.6.26-gentoo-r3

and finally add an entry to my grub.conf file. Thanks in advance.

----------

## alex.blackbit

i don't want to make any guarantees, but that looks fine.

what exactly was the problem the last time?

remember, you can access your former kernel from the grub menu when configured correctly.

----------

## snakeo2

thanks for looking over my settings. As Neddy pointed out during my last kernel migration, 

You have both

Code:

Support for SATA (deprecated; conflicts with libata SATA driver) (BLK_DEV_IDE_SATA)

which makes your SATA devices appear as /dev/hd... and

Code:

Serial ATA (prod) and Parallel ATA (experimental) drivers

which is the new SATA driver support in your kernel. You must not have both. In effect you have two drivers for the same piece of hardware, as is normal in that situation neither works properly.

Turn off

Code:

Support for SATA (deprecated; conflicts with libata SATA driver)

this was the problem and I couldnt boot. Thanks to Neddy, I was able to get back  into my system. I will go ahead with the kernel migration and post back any errors, thanks once again.

----------

## snakeo2

ok, i went ahead with the kernel upgrade and thought everything went fine until i tried to reboot of course. when i reboot, im getting the "error 15: file not found" message. i know this mean that there is something wrong with my grub.conf file, but not i do not know what exactly. i can login to my previous kernel, but i have no GUI as something is wrong with my xorg. anyways, here is the exatc error i get:

root (hd1,0)

Filesystem type is ext2fs, partition type 0x83

kernel /boot/2.6.26-gentoo-r3  root=/dev/sda3

error 15: file not found

press any key to continue...

im guessing i screwed up when i did cp arch/86_64/boot/bzImage...etc

i will post back with my grub.conf file

----------

## snakeo2

here is the grub.conf entry i created for the new kernel i just compiled:

title=Gentoo-Server-2.6.26

root (hd1,0)

kernel /boot/2.6.26-gentoo-r3   root=/dev/sda3'

im little confused, 

should i do " cp/arch/x86_64

a) cp arch/x86_64/boot/bzImage /boot/kernel-2.6.26-gentoo-r3 

b) cp arch/x86_64/boot/bzImage /boot/2.6.26-gentoo-r3

c) cp arch/x86_64/boot/bzImage /boot/Gentoo-Server-2.6.26-gentoo-r3??????

thanks in advance

----------

## nordic bro

 *snakeo2 wrote:*   

> root (hd1,0)
> 
> kernel /boot/2.6.26-gentoo-r3  root=/dev/sda3
> 
> 

 

your / is on sda, is /boot on sda also ("df /boot" when it's mounted if necessary)?  if so the "root(hd1,0)" should be "root(hd0,0)" - iow I believe you may be telling grub to look on the wrong disc for the new kernel.

either that or you've misspelled what the new kernel's filename is; if you've simply copied the new kernel alongside your older working kernel, and duplicated the grub.conf entry of the working kernel to use for the new one, then it's most likely you've just misspelled something somewhere.

----------

## NeddySeagoon

snakeo2,

Error 15 from grub means that a file you have asked it to load cannot be found

Your splashimage should not have changed and you don't use an initrd file, so it can only be the kernel.

You should have added a booting stanza to grub.conf to boot your new kernel, so you can also choose the old one.

We all make a kernel that won't boot from time to time.

The booting stanza is the bit like:-

```
title=

root (hd...

kernel /boot/...
```

Normally you copy your old booting stanza, change the tile and the kernel file name and thats you set.

Did you mount /boot before you did the copy ?

Does is the filename in 

```
ls -l /boot
```

*identical* to the kernel file name in grub.conf?

----------

## snakeo2

neddyseagoon,

im pretty sure that the /boot partiton was mounted. 

i did exactly what you suggested. I looked at the entry in grub for the kernel that was working and only chaged the title and the kernel /boot name. here is what i have in my grub.conf for the old kernel and the new one that im trying to get to boot:

old kernel:

title=Gentoo Server Manual

root (hd1,0)

kernel /boot/2.6.20-gentoo-r8-manual root=/dev/sda3

new kernel

title=Gentoo-Server-2.6.26

root (hd1,0)

kernel /boot/2.6.26-gentoo-r3  root=/dev/sda3

i just did "cp arch/x86_64/boot/bzImage /boot/2.6.26-gentoo-r3" again to see if it works this time. i have mounted 

ls -l /boot

-rw-r--r-- 1 root root 2999856 Nov 30 20:11 2.6.26-gentoo-r3 (new kernel)

rw-r--r-- 1 root root 2864983 March 11 2008 2.6.20-gentoo-r8-manual (old kernel)

----------

## snakeo2

just to clarify, the installation guide suggest that when you copy the bzImage to the /boot partition you do it like so:

cp arch/x86_64/boot/bzImage /boot/kernel/(kernel-name)....which is not how i did it. also, since i have a separate /boot partition when im copying the bzImage, should i do it as follows:

cp arch/x86_64/boot/bzImage /mnt/gentoo/boot/kernel/(kernel-name).....thanks in advance

----------

## NeddySeagoon

snakeo2,

The copy works of /boot is mounted or not. If /boot is mounted, the kernel goes where you expect and where grub will find it.

When /boot is not mounted, the kernel goes to the /boot directory on the root filesystem, where grub will not find it.

```
cp arch/x86_64/boot/bzImage /boot/kernel/(kernel-name).
```

is corect.

Please show us the output of 

```
df -T
```

with boot mounted and 

```
ls-l /boot
```

----------

## snakeo2

i just tried again and im getting the following error:

here is what i did:

cp arch/x86_64/boot/bzImage /boot/kernel/2.6.26-gentoo-r3

cp: cannot stat 'arch/x86_64/boot/bzImage': No such file or directory

df -T

sorry, but im typing from another computer so im only posting the line the refers to my /sda1 (boot partition)

Filesystem  Type  1k-blocks   Used       Available     Use% mounted 

/dev/sda1      ext2    241116     14803   213865  7%  /mnt/gentoo/boot

i already posted the output of "ls -l /boot"

thanks

----------

## snakeo2

Ok, I found an old livecd and I'm using it now which should make copying and pasting much easier. I think i found the problem:

I went ahead and chrooted into my box, not sure if it was needed. Navigated to my /boot partition

 ls /boot

2.6.20-gentoo-r8-manual

System.map-genkernel-x86_64-2.6.17-gentoo-r4

System.map-genkernel-x86_64-2.6.20-gentoo-r8

boot

grub

initramfs-genkernel-x86_64-2.6.17-gentoo-r4

initramfs-genkernel-x86_64-2.6.20-gentoo-r8

kernel-genkernel-x86_64-2.6.17-gentoo-r4

kernel-genkernel-x86_64-2.6.20-gentoo-r8

as you can see there is no entry for "2.6.26-gentoo-r3"

which is odd, because before i tried to copy the bzImge to /boot, I made sure my /boot partition was mounted by issuing the following commands:

mount /dev/sda1 /mnt/gentoo/boot

then

cp arch/x86_64/boot/bzImage /boot/2.6.26-gentoo-r3

my question is how can i make sure the bzImage gets copied over to my /boot partition so that it shows...?

----------

## jcat

There is no magic to copying files, you either copied it to the correct location (/dev/sda1) or not (/dev/sda3), boot was either mounted of it wasn't.

What's you current status, have you managed to copy your kernel file in place and booted?

Cheers,

jcat

----------

## NeddySeagoon

snakeo2,

Get into your chroot, including mounting /boot and do the following

```
eselect kernel list
```

If its not showing 2.6.26-gentoo-r3 do 

```
eselect kernel set X
```

where X is the number next to 2.6.26-gentoo-r3 in the list.

Now do 

```
eselect kernel list
```

 to make sure its right.

Thats checked and set your /usr/src/linux symlink

Next, do 

```
cd /usr/src/linux
```

, as the command 

```
cp arch/x86_64/boot/bzImage /boot/2.6.26-gentoo-r3
```

will only work from there. The path is a relative (to the current location) path as it does not start with a /

Now 

```
cp arch/x86_64/boot/bzImage /boot/2.6.26-gentoo-r3
```

 will work.

Check

```
 ls -l /boot
```

Ensure you new and old kernels are there and you can see a directory called grub.

Exit the chroot then do 

```
cd / 

umount /mnt/gentoo/boot
```

Now do

```
ls -l /boot
```

I suspect you will see your new kernel but no grub directory.

That indicates that /boot was not mounted when you copied the kernel previously.

----------

## snakeo2

Happy to report that all is good now. I was able to copy the bzImage to the right place and I'm now back in business. Thanks to everyone for your tips and advise.

----------

