Of course. Lemme try to explain.
You're probably using lilo as a bootloader, unless you changed it, which is unlikely.
So, lilo can let you choose which kernel to boot. lilo reads it's configuration option from a file at '/etc/lilo.conf', but it only does so every time you run '/sbin/lilo'. So, you first need to edit '/etc/lilo.conf' so that lilo knows which kernel you want it to boot, and then you run '/sbin/lilo' to have lilo read the '/etc/lilo.conf' you just edited and make the necessary changes to the system.
So, look at '/etc/lilo.conf' there should be a section similar to this:
Code:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
# Linux bootable partition config ends
right ?
Well, copy those 4 lines that don't start with a # and paste them right below 'read-only' to get something like this:
Code:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
# Linux bootable partition config ends
Now there are two entires, and you have to distinguish between them. 'image = /boot/vmlinuz' is the kernel image that gets booted. You're probably already booting a kernel, so for the second entry you want to boot the other kernel. So change '/boot/vmlinuz' to the location of the other kernel. Say it is '/boot/kernel.old', then you do this:
Code:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
image = /boot/vmlinuz.old
root = /dev/hda1
label = Linux
read-only
# Linux bootable partition config ends
Now, you want to change the 'label = Linux' in the second entry so that you can recognize which kernel is which. Say you want to name it 'Linux-old', do this:
Code:
# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda1
label = Linux
read-only
image = /boot/vmlinuz.old
root = /dev/hda1
label = Linux-old
read-only
# Linux bootable partition config ends
Now, with every kernel comes a 'System.map', which I'm pretty sure the kernel needs in order to boot. The kernel will automatically find it as long as it is located in '/boot' and it is named properly. For your other kernel, you want to name 'System.map' with the same postfix as the 'vmlinuz'. In this case it is '.old', so rename 'System.map' to 'System.map.old' for that kernel and make sure it is located in '/boot' so it is '/boot/System.map.old'. This same theory goes for 'config', except it's not as important, and it doesn't really matter (at least that's what I've found). Still, it's better to have it in there so title that one 'config.old'.
So with two kernels, if you open a terminal and type this:
it will give you the contents of '/boot' which should look something like this:
Code:
README.initrd
System.map
System.map-ide-2.4.33.3
System.map.old
boot.0300
boot_message.txt
config
config-ide-2.4.33.3
config.old
diag1.img
map
vmlinuz
vmlinuz-ide-2.4.33.3
vmlinuz.old
One last thing, in 'lilo.conf', 'root = /dev/hda1' indicates the root partition of your hard-drive. This is probably already correct for you, so
leave that line alone.
Remember to run '/sbin/lilo' when you are finished editing '/etc/lilo.conf' and moving stuff around it '/boot'. It should be the last thing you do, but it is the most important thing you do.