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.