web-dev-qa-db-ja.com

パニック時に再起動するようにLinuxカーネルを早期に構成するにはどうすればよいですか?

カーネルコマンドラインに「panic = N」と入力すると、パニックのN秒後にシステムを再起動できます。

しかし、ブートローダーさえも登場する前に、(デフォルトのカーネルコマンドラインオプション以外の)これを指定する設定オプションはありますか?いくつかのカーネルオプションはありますか?

13
Shawn J. Goff

そのような設定オプションはないようです。デフォルトのタイムアウトは0で、これは http://www.mjmwired.net/kernel/Documentation/kernel-parameters.txt#1898 によると、「永久に待機」します。

オプションは kernel/panic.c で定義されています。初期値を別の値に設定するパッチを作成できます。

3秒後に再起動をハードコードするには、次のように変更します。

int panic_timeout;

に:

int panic_timeout = 3;
2
Lekensteyn

から man proc

/ proc/sys/kernel/panic

このファイルは、カーネル変数panic_timeoutへの読み取り/書き込みアクセスを提供します。これがゼロの場合、カーネルはパニックでループします。ゼロ以外の場合は、この秒数後にカーネルが自動再起動する必要があることを示します。ソフトウェアウォッチドッグデバイスドライバーを使用する場合、推奨設定は60です。

19
jpalecek

構成ファイルはブート(grub)構成ファイル自体です。これは、ブート時に呼び出されるパラメーターであり、ファイルシステムがマウントされていない間は、grubが他の構成ファイルから読み取ることが期待できないためです。

ただし、これは初期化された設定であるため、sysctlを使用してランタイムを変更することもできます。したがって、基本的に/etc/sysctl.confパラメータkernel.panic = 3は構成の更新です。

5
Nikhil Mulley

Linuxカーネルでは(3以上で見ました)、.configにオプションがあります。 CONFIG_PANIC_TIMEOUTはパラメーターで、デフォルトは0です。これらのバージョンのLinuxカーネルでは、Lekensteynの回答も機能します。しかし、その変数は.configからのみ取得しています。

int panic_timeout = CONFIG_PANIC_TIMEOUT;
3
RatDon

kernel.panicsysctl です。これらを構成するには、たとえば sysctl.d を使用するなど、多くの方法があります。

3
Tobu

LinuxカーネルはCONFIG_CMDLINE_BOOLをサポートしています

ビルド時にカーネルへのブート引数を指定できるようにします。一部のシステム(組み込みシステムなど)では、カーネルブート引数の一部またはすべてをカーネル自体に提供する必要があります(つまり、ブートローダーに依存せずに提供します)。

この "ポータル"にもいくつかの例があります。 g。

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

1
poige

設定オプションを追加する this パッチを使用できます。

0
mgalgs

最初に他の回答で情報をまとめます。この値は、sysctlを介してkernel/panic.cおよびrwで定義されています。ブートコマンドラインとして渡すことができます。

さらに言えば、 bootコマンドラインはコンパイル時にデフォルト値を設定できます です。