I hit a really strange issue for some time now with one of my Ubuntu 10.04 LTS servers where, despite doing recent kernel updates (the latest is 2.6.32-33) it always booted into the kernel 2.6.32-28. No matter what I did (update-grub, etc.), the server was sticked to 2.6.32-28.
After searching and reading a lot of posts and wiki pages I still couldn’t find a solution for it (most blogs and wiki pages talk about compiling a new kernel or installing a new one, but none talked about selecting the proper kernel or fixing it manually).
But since I had some other server, that booted into the correct kernel issue, I luckily had some config files to compare. The one that I was after is the “menu.lst” which is a GRUB file and is located at “/boot/grub”. Looking at the menu.lst from the working server and comparing it to the “not working” one, revealed that the “non working” one had UUID’s declared for each server while the working one not UUID but “root (hd0,0)” and hard coded root paths of “/dev/sda3″.
title Ubuntu 10.04.2 LTS, kernel 2.6.32-33-server root (hd0,0) kernel /vmlinuz-2.6.32-33-server root=/dev/sda3 ro quiet splash initrd /initrd.img-2.6.32-33-server quiet
title Ubuntu 10.04.2 LTS, kernel 2.6.32-33-server uuid 9823d540-6bf0-467a-8640-39d33c7544fb kernel /vmlinuz-2.6.32-33-server root=UUID=d9e79ad9-6d53-4cb5-85d6-e9f1eea712f2 ro quiet splash initrd /initrd.img-2.6.32-33-server quiet
As you can see from the this, the UUID and the root are quite different. I can’t actually explain why this configuration took place on this particular server. This is even more surprising since both servers are being “kept in sync” (with updates and such).
In any case, the resolution (for me at least) was to copy certain parameters over to the “not-working” menu.lst. Those were, the root path (/devsda3), the “root (hd0,0)”, the “groot=(hd0,0)” plus the “kopt=root=/dev/sda3 ro” lines.
It took a long time to fix this issue and and I hope this helps someone else.