ユーザーがカーネルパニックの原因を画面に表示できますか?
答え1
Linux は画面定義に従って画面にパニックダンプを実行します。
Linuxが実際に行うことは、システムコンソールにダンプするだけです。通常、これは画面ですが、シリアルコンソール(または他の場所)にすることもできます。
しかし、ほとんどの人はデスクトップ上でXを実行します。これはコンソールいいえ画面にはフレームバッファがあります。この場合、Linuxをフレームバッファにダンプする必要がありますが、これは実際にあなたが探しているものだと思います。
あなたは一つを持っていて幸運ですこれに専念するプロジェクトUbuntuから。このプロジェクトがどれほど進行しているかはわかりませんが、有望に見え、ここから始める必要があります。
答え2
免責事項:あなたが次のように言ったので、この回答を投稿しました。求めるコンキ。エラーメッセージなどではなく、実際のカーネルパニックについて話している場合、カーネルがパニックに忙しくて他の操作を実行できないため、これは機能しません。
conky
ディストリビューションリポジトリにある必要があるため、インストールは簡単です。これを完了したら、ファイルを作成する必要があります~/.conkyrc
。私はもう少し複雑です。以下は、.conkyrc
最後の8行を素晴らしい形式で表示する最小限の作業です。dmesg
double_buffer yes
background yes
update_interval 1
total_run_times 0
own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
minimum_size 230 5
maximum_width 230
gap_x 1365
gap_y 40
TEXT
${execpi 3 dmesg |tail -n8}
しかし、これは少し見苦しく見えるので、出力フォーマットを指定し、長い行を縮小し、同じメッセージで行をグループ化するためにインデントするスクリプトがあります。これを使用するには、以下のスクリプトを次のように保存して~/bin/conkyLogging
実行可能にし、最後の行chmod a+x ~/bin/conkyLogging
を次のように変更します。
${execpi 3 dmesg |tail -n8 | /home/USERNAME/scripts/conkyLogging.pl}
スクリプトは次のとおりです。
#!/usr/bin/env perl
my $lim=32;
my @a;
while(<>){/.*?\]\s*(.+)$/;
push @a,$1;
}
my $k;
for($n=$#a;$n>=0; $n--){
$_=$a[$n];
@c=split(/[\s]+/);
@b=split(//);
my $k=0;
my $kk=0;
print " ";
for($i=0;$i<=$#b; $i++){
$_=$b[$i];
if (/^\s+$/){
$k+=length($c[$kk+1]);
$kk++ ;
}
if($k>$lim){
s/([=,\-\s])/$1\n\t /;
$k=0;
}
print STDOUT;
}
print STDOUT "\n";
}
答え3
おそらく原因を画面にプッシュすることは、カーネルが情報を画面にダンプするように強制するという意味です。
まだ専門家ではありませんが、私が知っている方法はありません。カーネルパニックが発生すると、情報をコンソールにダンプしてからクラッシュします。これは、何も実行されないため、パニック後は何も実行できないことを意味します。
xtermではなく実際のttyを使用している場合は、メッセージが表示されると確信しています。しかし、そうでなければ幸運ではありません。「カーネルパニック」とは何ですか?これに関する情報があるようです。
答え4
パニックが複数回発生する場合の最善の方法は、他の(おそらく低電力)デバイスを接続し、シリアルケーブルを介してそのデバイスにログインすることです。ネットワークコンソール。 Netconsoleには、すでに実行されている他のデバイスを使用できるという確かな利点があります(必要に応じてホームルーターにログインすることもできます)。