How to early configure Linux kernel to reboot on panic?

You can put “panic=N” on the kernel command line to make the system reboot N seconds after a panic.

But is there a config option to specify this (other than the default kernel command line option) before even boot loader comes into a play? Some kernel option may be?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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.

Method 2

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.

Method 3

kernel.panic is a sysctl. There are many ways to configure these, for example through sysctl.d.

Method 4

In Linux Kernel, (I’ve seen in 3 and above) there’s option in the .config. CONFIG_PANIC_TIMEOUT is the parameter and defaults to 0. In these versions of Linux kernel, Lekensteyn’s answer will also work. But that variable is taking from the .config only.

int panic_timeout = CONFIG_PANIC_TIMEOUT;

Method 5

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;

Method 6

Linux kernel supports CONFIG_CMDLINE_BOOL

Allow for specifying boot arguments to the kernel at build time. On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)

There’re some examples even on this “portal”, for e. g.

https://superuser.com/questions/778826/config-cmdline-override-set-but-hardcoded-vga-boot-parameter-ignored

Method 7

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

Method 8

first conclude information in other answers. the value is defined in kernel/panic.c and rw through sysctl. it can be passed as a boot commanline.

what’s more i’m about to say, boot commandline can be set default value during compilation.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x