Linuxカーネルのバージョン情報を含む静的ファイル

Linuxカーネルのバージョン情報を含む静的ファイル

システム上で実行されているカーネルのバージョンに関する情報を含むファイルのリスト(デッドボックスシステムで見られる、つまりファイルシステムアーティファクトでなければならない)を探しています。

私のユースケースは、組み込みLinuxファームウェアイメージを分析し、カーネルバージョンを抽出したいことです。

これらのアーティファクトに関する情報を見つけるのがどれほど難しいかは驚くべきことです。ほとんどのオンラインリソースには、実行可能なさまざまなコマンド(uname -r、hostnamectlなど)がリストされていますが、このデータポイントに存在できる静的ファイルはリストされていません。 /proc/version が位置しているようですが、残念ながらこれまで見たイメージには /proc ディレクトリが存在しないようです。

デフォルトでは、私はカーネルのバージョン情報が存在する可能性があるLinuxシステム上のすべてのファイルのリストを探しています。どんな助けでも大変感謝します!

答え1

データ内のどのファイルに使用されているカーネルが含まれているかを確認できたら、そのファイルからバージョンを抽出できます。場合によっては、fileバージョンを抽出することが可能です。

file /boot/vmlinuz-4.19.0-16-amd64
/boot/vmlinuz-4.19.0-16-amd64: Linux kernel x86 boot executable bzImage, version 4.19.0-16-amd64 ([email protected]) #1 SMP Debian 4.19.181-1 (2021-03-19), RO-rootFS, swap_dev 0x5, Normal VGA

それ以外の場合は、バージョンを直接見つける必要があります。

$ grep -a "Linux version" /boot/pine64/Image
Linux version 3.10.105 (debian@pine64) (gcc version 4.9.2 (Debian/Linaro 4.9.2-10) ) #1 SMP PREEMPT Sun Aug 20 17:02:37 CEST 2017

これは、怠惰なファイルシステムで使用できる最も信頼性の高い成果物です。

答え2

デッドボックスシステムでは...残念ながら/ procディレクトリが存在しないようです。

もちろん存在しません。 / procディレクトリは、runnungカーネルによって実行時にRAMに埋め込まれます。したがって、カーネルイメージを見つけて直接コマンドをfile使用するか、別のコマンドを使用してstrings確認します。そのディスクに/bootディレクトリがあることを確認してください。そこからカーネルを見つけることができます。

編集:そうです! Stephen Jeterがすでにこの質問に答えたことを知りませんでした。 :-)

関連情報