On Sat, 11 Oct 2008 13:23:10 -0400
Andrey Vul wrote:

> On Sat, Oct 11, 2008 at 8:01 AM, David Relson
> <[EMAIL PROTECTED]> wrote:
> > On Fri, 10 Oct 2008 23:06:09 -0400
> > Andrey Vul wrote:
> >
> >> On Fri, Oct 10, 2008 at 10:33 PM, David Wei
> >> <[EMAIL PROTECTED]> wrote:
> >> > Sorry, I forgot that file .
> >> > the .config is in the attachment this time.
> >> > Thank you .
> >> >
> >> > On Fri, 10 Oct 2008 10:05:36 -0400
> >> > "Andrey Vul" <[EMAIL PROTECTED]> wrote:
> >> >
> >> >> 2008/10/10 David Wei <[EMAIL PROTECTED]>:
> >> >> > Hi,
> >> >> > I am trying kexec with "kernel panic reboot" cause i have to
> >> >> > manage my server remotely. the "kernel panic
> >> >> > reboot" (http://gentoo-wiki.com/TIP_Kernel_Panic_Reboot) has
> >> >> > beening working so good so far for the regular kernel
> >> >> > panic.However,sometimes when i were missed some file system
> >> >> > items,the booking process would ask me: "VFS: Unable to mount
> >> >> > root fs via NFS,trying floppy Insert root floppy and Press
> >> >> > Enter." And the system hungup there waiting for my Enter. How
> >> >> > can I remove this item from the booting process and panic
> >> >> > directly so that it can reboot? Besides,I want to keep the NFS
> >> >> > service. Thank you in advance.
> >> >> I'm guessing that this is due to the floppy being compiled into
> >> >> the emergency kernel.
> >> >> In any case, can you post your .config for the emergency kernel?
> >> >>
> >>
> >> Nothing in the .config looks suspicious.
> >> It looks like it's inevitable that kernel patching will be needed,
> >> at least, using the preprocessor to "hide" the floppy code.
> >> Try this (it comments out floppy support which happens after NFS
> >> support): comment_floppy.patch
> >> --- init/do_mounts.c    2008-04-16 22:49:44.000000000 -0400
> >> +++ init/do_mounts2.c   2008-10-10 23:03:06.867876561 -0400
> >> @@ -308,7 +308,8 @@
> >>                 ROOT_DEV = Root_FD0;
> >>         }
> >>  #endif
> >> -#ifdef CONFIG_BLK_DEV_FD
> >> +/* #ifdef CONFIG_BLK_DEV_FD */
> >> +#if 0
> >>         if (MAJOR(ROOT_DEV) == FLOPPY_MAJOR) {
> >>                 /* rd_doload is 2 for a dual initrd/ramload setup
> >> */ if (rd_doload==2) {
> >>
> >> cd to your /usr/src/linux-... and run patch -p0 <
> >> comment_floppy.patch It should fix the _specific_ issue. It might
> >> not fix the root cause, however.
> >>
> >> --
> >> Andrey Vul
> >
> > Looking in do_mounts.c, the code that generates the message is:
> >
> >  #ifdef CONFIG_ROOT_NFS
> >    if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR) {
> >      if (mount_nfs_root())
> >        return;
> >
> >      printk(KERN_ERR "VFS: Unable to mount root fs via NFS, trying
> > floppy.\n"); ROOT_DEV = Root_FD0;
> >    }
> >  #endif
> >
> > Looking at the .config file, I see "CONFIG_ROOT_NFS=y".  Since the
> > message is being printed, we know that
> >
> >  if (MAJOR(ROOT_DEV) == UNNAMED_MAJOR)
> >
> > is true which wmeans that the
> >
> >  if (MAJOR(ROOT_DEV) == FLOPPY_MAJOR)
> >
> > is false, i.e. the change to "#if 0" looks to be incorrect.
> >
> > Perhaps "CONFIG_ROOT_NFS=y" in .config is the root cause.  I'd
> > suggest changing the .config.
> He has explicity mentioned that his root device is NFS. You have
> misinterpreted the code. The floppy event only occurs *if*
> mount_nfs_root() failed.
> It's false from the start, but becomes true when NFS mount-root
> failed.

You are correct.  I hadn't re-read the orginal post and didn't know the
use of NFS and I didn't look deeply enough into the code to learn that
Root_FD0 relates to FLOPPY_MAJOR.

Reply via email to