uname 破損: 現在実行中のカーネルを確認するには?

uname 破損: 現在実行中のカーネルを確認するには?
> uname -r
FATAL: kernel too old
> cat /proc/cmdline
FATAL: kernel too old

/boot には 3 つの *.vmlinuz-linux ファイルがあります。現在実行中のカーネルを確認するには?

私は最小限のシェルを使用して限られた環境で実行しています。私も次のことを試しました。

> sh -c 'read l < /proc/version; echo $l'
FATAL: kernel too old
> dd if=/proc/version
FATAL: kernel too old

どんなアイデアがありますか?

ベストアンサー1

libc(最も基本的なシステムライブラリ)をアップグレードしましたが、現在どのプログラムも実行できません。正確に言えば、プログラムは動的接続なしで動作できます。

場合によっては、再起動すると機能します。これでインストールされたlibcには最新のカーネルが必要になり、再起動すると取得できます。

実行中のシェルがある限り、通常は回復する方法がありますが、準備ができていない場合は回復が難しい場合があります。シェルがなければ、通常は再起動以外の解決策はありません。

再起動せずにここから回復することはできませんが、少なくともどのカーネルが実行されているかを簡単に確認できます。/proc/version外部コマンドを必要としない読み取り方法を使用してください。

read v </proc/version; echo $v
echo $(</proc/version)               # in zsh/bash/ksh

以前のlibcのコピーがまだある場合は、それを使用してプログラムを実行できます。たとえば、古いlibcがあり、/old/lib古いlibcで使用できる実行可能ファイルがある場合は、/old/bin次のように実行できます。

LD_LIBRARY_PATH=/old/lib /old/lib/ld-linux.so.2 /old/bin/uname

静的にリンクされたバイナリがある場合でも、まだ機能します。このような問題については、統計接続システムユーティリティをインストールすることをお勧めします(ただし、問題が始まる前にインストールする必要があります)。たとえば、Debian/Ubuntu/Mint/... では 1 つ以上をインストールします。busybox-static(シェルを含むデフォルトのLinuxコマンドラインツールバー)ウエストバンド(いくつかの追加の組み込み機能を備えたシェル)、zsh - 静的(ただシェルですが便利なツールがたくさん組み込まれています)。

busybox-static uname
sash -c '-cat /proc/version'
zsh-static -c '</proc/version'

おすすめ記事