Last night I performed an upgrade that appeared as so many others have. I reviewed it quickly and noticed it was a kernel upgrade related to some security issues. It completed ok.
I boot the laptop this morning and get “Error 15” file not found.
Somewhere I saw that perhaps the menu.lst file did not get updated to point to the new kernel. Can I just edit a file and point it to the right file? If so, then what is that file name?
Thanks.
If in fact the problem is in menu.lst (the grub control file), then yes, you can just edit that (as root). While that can be done from a LiveCD or the DVD Rescue System, obviously it would be easier to do if you could just boot into your production system.
Are you at least getting the grub menu? If so, hit Escape to drop the graphical screen, highlight the menu selection, and hit the ‘e’ key to drop into grub’s mini-editor. There you can change the stanza on-the-fly, as you would editing the file on disk. On the kernel and initrd lines, the file names are probably fully spelled out (e.g., “/vmlinuz-2.6.27-23-0.1-default”). Change those to just “/vmlinuz” and “/initrd” - those are symlinks (shortcuts) to the whatever the current file names actually are. Then hit ‘b’ to boot that stanza.
Very interesting. It worked. It does boot–I’m on it now. However, upon reboot they revert back to the previous. How can I edit them and make them stay edited?
You can make the changes with YaST Boot Loader; just be careful there, that is a very powerful module. If all that is necessary is a simple change to the grub control file, you can do that by hand with a text editor as root. If you use KDE, press Alt-F2 and in the krunner window type “kdesu kwrite /boot/grub/menu.lst” (w/o quotes) to open the file in Kwrite. If Gnome, IIRC it’s “gnomesu gedit /boot/grub/menu.lst”.
You can actually use the “/vmlinuz” and “/initrd” in the control file, just as you did at the menu. Whenever the kernel file is changed (and with it, the initrd) these symlinks are re-created to point to the new file names, so they are always there and valid.
Ok–I’m not doing something right.
Here is what gedit menu.lst looks like after I removed the stuff:
Modified by YaST2. Last modification on Tue Jun 16 20:18:12 EDT 2009
default 0
timeout 8
gfxmenu (hd0,1)/boot/message
##YaST - activate
###Don’t change this comment - YaST2 identifier: Original name: linux###
title openSUSE 11.0 - 2.6.25.20-0.4
root (hd0,1)
kernel /boot/vmlinuz
initrd /boot/initrd
###Don’t change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe – openSUSE 11.0 - 2.6.25.20-0.4
root (hd0,1)
kernel /boot/vmlinuz-2.6.25.20-0.4-default root=/dev/disk/by-id/scsi-SATA_WDC_WD800BEVS-0_WD-WXE308KE2750-part2 showopts ide=nodma apm=off acpi=off noresume nosmp noapic maxcpus=0 edd=off x11failsafe vga=0x314
initrd /boot/initrd-2.6.25.20-0.4-default
The text in green above is where I deleted a long string of text. When I reboot and select openSUSE 11.0 from the list it goes to Error 15 again. I go back and edit on the screen and I can boot in from there. It just doesn’t seem to boot despite the change to boot/grub/menu.lst
Hmmm
Change the “kernel” line to
kernel /boot/vmlinuz root=/dev/disk/by-id/scsi-SATA_WDC_WD800BEVS-0_WD-WXE308KE2750-part2
If that doesn’t work, try the following too:
kernel /boot/vmlinuz root=/dev/disk/by-id/scsi-SATA_WDC_WD800BEVS-0_WD-WXE308KE2750-part1
@jsrjeshs -
As illustrated by @syampillai’s post, in your kernel line you removed the rest of the line. It appears that you didn’t realize that when you made the change on-the-fly at the menu, you were changing only the kernel file name but you left the rest of the line intact (it could not have booted without the “root=/…” phrase, which tells the kernel where to find the root partition).
If you use the “suspend” feature, you will want to also add back the “resume=/…” phrase; the device specified in that phrase is your swap partition (using either the name or the hardware ID; you can find that in /etc/fstab). And, you will also want “splash=silent vga=xxxxx” which calls the graphical boot splash.