Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

You can put "panic=N" on the kernel command line to make the system reboot N seconds after a panic. Is there a config option to specify this (other than the default kernel command line option)?

share|improve this question
    
Through the kernel watchdog subsystem, perhaps? –  Gilles Jan 20 '12 at 17:05
    
config file is boot (grub) configuration file itself, since it is a parameter invoked at the boot time and grub cannot be expected to read from some other config file while the filesystem is not mounted. –  Nikhil Mulley Jan 20 '12 at 17:20
    
I presume you'll want to reboot to a different kernel? That's going to require some cooperation from the bootloader, and at that point, you'll surely be able to pass command line arguments. Some bootloaders can be set up to reboot to a different kernel if a boot fails (by having a userland program indicate to the bootloader that the boot succeeded). –  Gilles Jan 21 '12 at 14:49
    
Yes, I'll be booting either to a different kernel, or giving the kernel a different rootfs path. There is a variable in the bootloader's config that gets changed when userspace boots successfully; if it doesn't change, it knows to try something different. I was hoping for something more than just the kernel command line for this because the bootloader's config can be modified by the Linux userspace. If there's a problem, it's likely that userspace started writing, then the device powered off; and there is a fallback default config for that; I'm still looking for the most solid I can get this. –  Shawn J. Goff Jan 21 '12 at 15:00
add comment

4 Answers

up vote 2 down vote accepted

There does not seem to be such a config option. The default timeout is 0 which according to http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt#1898 is "wait forever".

The option is defined in kernel/panic.c, you can write a patch that sets the initial value to something different.

To hardcode a reboot after 3 seconds, change:

int panic_timeout;

to:

int panic_timeout = 3;
share|improve this answer
add comment

From man proc:

/proc/sys/kernel/panic

This file gives read/write access to the kernel variable panic_timeout. If this is zero, the kernel will loop on a panic; if nonzero it indicates that the kernel should autoreboot after this number of seconds. When you use the software watchdog device driver, the recommended setting is 60.

share|improve this answer
    
I'm looking for a kernel config option here, not something from userspace. Specifically, if for some reason, it can't mount the root filesystem (or for some other reason, userspace never comes up), I need it to reboot. –  Shawn J. Goff Jan 20 '12 at 16:36
    
@ShawnJ.Goff If you're also concerned about userspace not coming up, then you're asking the wrong question (you want to reboot even if the kernel doesn't panic). And the answer is a form of watchdog by definition; you need to activate the watchdog subsystem (triggering a reboot if /dev/watchdog hasn't been touched in a while). See Documentation/watchdog/watchdog-api.txt. –  Gilles Jan 21 '12 at 14:47
    
Yes, I do have a watchdog. I'm just putting as many safety nets in place as possible. –  Shawn J. Goff Jan 21 '12 at 14:49
add comment

The config file is boot (grub) configuration file itself, since it is a parameter invoked at the boot time and grub cannot be expected to read from some other config file while the filesystem is not mounted.

However, that being a initialized setting, the runtime can also be modified through sysctl. So, essentially updating /etc/sysctl.conf with parameter kernel.panic = 3 is a configuration update.

share|improve this answer
    
grub is not on all systems; the one I'm working with is not using grub. My bootloader's config is stored in flash. –  Shawn J. Goff Jan 20 '12 at 17:29
    
yeah, still.. can it mount the filesystem and read the kernel config file? if yes, then there you go. Because its the boot loader which passes the kernel parameters to the kernel while loading the kernel. –  Nikhil Mulley Jan 20 '12 at 17:42
add comment

You can use this patch, which adds a config option.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.