> 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'