Bug 83287 - grub: "Error 15: File not found" when calling savedefault during boot
|
Bug#:
83287
|
Product: Gentoo Linux
|
Version: unspecified
|
Platform: All
|
|
OS/Version: All
|
Status: RESOLVED
|
Severity: normal
|
Priority: P2
|
|
Resolution: FIXED
|
Assigned To: base-system@gentoo.org
|
Reported By: mmokrejs@ribosome.natur.cuni.cz
|
|
Component: Core system
|
|
|
URL:
|
|
Summary: grub: "Error 15: File not found" when calling savedefault during boot
|
|
Keywords:
|
|
Status Whiteboard:
|
|
Opened: 2005-02-25 04:13 0000
|
I've switched from x86 to ~x86 and after sys-boot/grub-0.95.20040823 was
installed, I cannot boot from xfs. I get the boot menu, but selecting any entry
results in Error 15: File not found.
But, when I go into command-line, I can do
kernel /boot/vmlinuz-[tab] and it prints all files available. I type in exactly
same file name as specified on resp. menu.lst line and it boots.
Basically, I cannot boot using configfile. I have to boot manually from command
prompt.
I fixes itself downgrading back to sys-boot/grub-0.94-r1 withou re-installing
boot block. I have no explanation how is it possible. /boot is a separate
partition, and grub install into /usr etc., it was even not mounted when grub
upgrade/downgrade was done!
Portage 2.0.51-r15 (default-linux/x86/2004.0, gcc-3.3.5,
glibc-2.3.4.20050125-r0, 2.6.11-rc4-bk7 i686)
=================================================================
System uname: 2.6.11-rc4-bk7 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz
Gentoo Base System version 1.6.9
Python: dev-lang/python-2.3.5 [2.3.5 (#1, Feb 21 2005, 21:57:42)]
dev-lang/python: 2.3.5
sys-devel/autoconf: 2.59-r6, 2.13
sys-devel/automake: 1.5, 1.4_p6, 1.6.3, 1.9.4, 1.8.5-r3, 1.7.9-r1
sys-devel/binutils: 2.15.92.0.2-r3
sys-devel/libtool: 1.5.10-r4
virtual/os-headers: 2.4.19-r1, 2.4.22-r1
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-O3 -mmmx -msse -msse2 -fomit-frame-pointer -march=pentium4
-funroll-loops -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env
/usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3/share/config
/usr/lib/X11/xkb /usr/share/config /usr/share/texmf/dvipdfm/config/
/usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/
/usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/bind
/var/qmail/alias /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/afs/C /etc/afs/afsws /etc/gconf /etc/terminfo
/etc/env.d"
CXXFLAGS="-O3 -mmmx -msse -msse2 -fomit-frame-pointer -march=pentium4
-funroll-loops -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms"
GENTOO_MIRRORS="ftp://ftp.muni.cz/pub/linux/gentoo http://gentoo.mirror.icd.hu/
http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/
http://gd.tuwien.ac.at/opsys/linux/gentoo/
ftp://ftp.tu-clausthal.de/pub/linux/gentoo/"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 FFmpeg X Xaw3d aalib acpi adns afs alsa apache2 apm arts ati avcodec
avi berkdb bidi bitmap-fonts bonobo caca cdparanoia cdr crypt cscope cups curl
dba dga directfb divx divx4 divx4linux divx5 divx5linux doc dvb dvd dvdr
dvdread emacs emacs-w3 emboss encode esd ethereal evo f77 faac faad faad2 fam
fame fbcon ffmpeg flac flash font-server foomaticdb fortran fvwm fvwm2 gb gd
gdbm ggi gif gphoto2 gpm gstreamer gtk gtk2 gtkhtml guile i8x0 icc imagemagick
imlib imlib2 innodb java jpeg junit lcms leim libg++ libwww live lpthread lzo
lzw-tiff mad mcal mesa mikmod mmx mmx2 motif mozilla mpeg mule mysql ncurses
network nls oggvorbis opengl oss pam pda pdflib perl php php4 plotutils png
ppds pthread pthreads python qt qtx quicktime readline rtc ruby samba scanner
sdl slang slp speex spell sse sse2 ssl svga tcltk tcpd tetex theora thread
threads tiff truetype truetype-fonts type1-fonts unicode usb v4l v4l2 win32
winvidix wmf xml xml2 xmms xosd xv xvid xvmc zeo zlib video_cards_radeon
linguas_cs linguas_cz linguas_en"
Unset: ASFLAGS, CBUILD, CTARGET, LANG, LC_ALL, LDFLAGS, PORTDIR_OVERLAY
re-open if 0.96 doesnt work
Still happens with 0.96. :(
It looks to me like you need to take the "/boot" off all those entries. You
could also fix this by recreating the boot -> . symlink in /boot which you
appear to have got rid of. Please re-open and correct me if I'm wrong.
/boot/boot is a symlink to . Why does it happen only with 0.95 and above?
And removing the "/boot/" from the kernel line does not help at all. I don't
believe grub can accept relative path. When you open the interactive
commandline, the file is /boot/vmlinuz-*. Trying to set "kernel vmlinuz-* ..."
doesn't help, as the file is not found.
Try it yourself. It happens for me on two computers (both having XFS) and does
not happen on computers having ext3 as /boot.
I have installed anothe rmachine using 2005.0 and upgraded to current x86 and
it
also happens there. There is one important difference - that host uses only
reiserfs, i.e. /boot is reiserfs instead of xfs. And grub also cannot find the
file. But as already described, the file is happily found from interactive
console.
You need to put a space between root and the (hd0,0) to make grub recognize it.
Answer to comment #9: No, the space is not the problem. I just tested and if
space is omitted I get "Error 27: unrecognized command" instead of "Error 15:
File not found" which I've reported.
And, at the moment a I have:
# grep hd0 /boot/grub/grub.conf
root (hd0,0)
root (hd0,0)
root (hd0,0)
root (hd0,0)
root (hd0,0)
root (hd0,0)
root (hd0,0)
setup (hd0)
#
I'm put back this into my package.mask:
>=sys-boot/grub-0.95
This test was done using 0.96-r2 on 2.6.13-rc1 kernel. ;)
You seem to be the only one that has these issues. I can't reproduce it and the
missing space is the only error I could find in your config. I tried with long
kernel config lines and as much kernel entries as you have.
I have only 4 gentoo machines (all intel p4 or xeons) and it happens on all of
them. :( The last one was with reiserfs so the subject should be actually
changed. ;) I'll attach the current grub.conf file.
Do you think it might be related to a BIOS or ACPI? Hypethreading is disabled,
it just slows me down. It happens on SMP and non-SMP kernels and on HIGHMEM
and also non-HIGHMEM kernels.
Thanks for your help anyway!
I use grub with XFS on a celeron, pentium3, pentium4, athlon-tbird and
athlon-xp
and don't experience any issues. I'm afraid but I can't help until I'm able to
reproduce this error.
The problem is savedefault.
The way grub handles management of the default boot entry has changed. Where in
0.94 the default entry was located at a fixed binary position in the stage2, it
now is in an extra file named /boot/grub/default. As grub cannot modify the
filesystem itself, this file has to exist for savedefault to succeed.
Workaround when booting:
1. Select entry
2. Select "savedefault" command
3. Press [d] to delete this command
4. Press [b] to continue booting
Fix when the system is up:
grub-set-default 0
(fix untested, but should work this way)
Maybe it would be a good idea to do this at installation time as well. The
official installation procedure seems to do "grub-set-default default". At least
Line 419 of sbin/grub-install suggests this, I have not tried this yet.
Also notice that savedefault has become more powerful, it is now possible to
save a entry different from the current one as default, thus faciliating
one-time booting of othe systems. Read the info for more details.
Suggested new Summary:
grub: "Error 15: File not found" when calling savedefault during boot
since this is not only 0.95, and this has nothing to do with xfs.
*** Bug 96508 has been marked as a duplicate of this bug. ***
Updating summary. OK, this explains why I wasn't able to reproduce the error.
Thanks for finding this out Martin von Gagern. I hope I have some time over
the weekend to fix this and some other grub bugs.
thanks, grabbed patch and added to grub 0.96-r3
Well, I just emerge the 0.96-r3 version and rebooted ... still the same
problem.
I had /boot mounted during the emerge process, so it should have updated the
/boot partition data.
What am I supposed to do now except removing the 'savedefault' lines? ;)
(in reply to comment #21)
I'd guess that you are still using the old stage2 file, because on some setups
grub accesses this file by its physical location, not by its name. I suggest you
reinstall grub using grub-install or whatever method you used in the first place.
Updating grub is a bit tricky, as there is probably no way portage can do the
right thing automatically. See bug #98768 for more information.
If this does not help, please state if you tried running grub-set-default
manually and if /boot/grub/default does exist and looks OK.
So I did "setup hd(0)" and rebooted, no luck. This is what I have right now:
# cat /boot/grub/default
cat: /boot/grub/default: No such file or directory
#
aquarius ~ # !mount
mount /dev/sda1 /boot
aquarius ~ # grub-set-default 0
aquarius ~ # cat /boot/grub/default
0
#
#
#
#
#
#
#
#
#
#
# WARNING: If you want to edit this file directly, do not remove any line
# from this file, including this warning. Using `grub-set-default\' is
# strongly recommended.
aquarius ~ #
going to reboot now. ;)
Yes, that has helped.
My grub.conf contains:
default 2
and grub really prefers the '2' over the '0'.
How about doing this automagically on emerge then (`grub-set-default 0')?
as Martin von Gagern pointed out, running grub for the user and getting it
right
is very tricky ... i'd like to keep that code logic as minimal as possible ...