Ubuntuを例にすると、ディストリビューションに付属のカーネルの代わりにカーネルがカスタムコンパイルされたかどうかを知ることができますか?
答え1
もちろん、dpkg
知っていることを確認してください。
まず、実行しているカーネルのバージョンを確認してください。
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
その後、dpkg
データベースにカーネルイメージファイルを検索するように指示しますdpkg
。
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
または、より良い方法はパッケージdlocate
で使用することです。まず、データベースにキャッシュを構築して使用します。だから高速です。dlocate
dlocate
dpkg
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
最後に、Debian アーカイブにこのパッケージが含まれていることを確認してください。
apt-cache policy linux-image-3.2.0-4-amd64
linux-image-3.2.0-4-amd64:
Installed: 3.2.68-1+deb7u1
Candidate: 3.2.68-1+deb7u1
Version table:
*** 3.2.68-1+deb7u1 0
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
100 /var/lib/dpkg/status
3.2.65-1 0
500 http://httpredir.debian.org/debian/ wheezy/main amd64 Packages
それ以外の場合はカスタムパッケージです。もちろん、dpkgがイメージファイルについてわからない場合、カーネルはパッケージの一部ではなくローカルにコンパイルされています。
気づくapt
できるDebian アーカイブのパッケージと同じ名前のローカルコンパイルパッケージを区別します。私はパッケージのmd5sumをチェックすると思いましたが、その方法の詳細を忘れました。バイナリパッケージにはハッシュに関する情報が含まれています。apt-cache show linux-image-3.2.0-4-amd64
たとえば、下部を参照してください。例えば
Package: linux-image-3.2.0-4-amd64
Source: linux
Version: 3.2.68-1+deb7u1
Installed-Size: 105729
[...]
Size: 23483788
MD5sum: f9736f30f8b68ae79b2747d8a710ce28
SHA1: 64bfde903892801dccd04b52b12316901a02cd96
SHA256: 775814b3eff4a964b593c0bdeaac20587a4e3ddb1257a9d2bfcf1e9d3b9bfd15
答え2
少なくともuname -r
カーネルバージョンが提供されます(例:)3.18.6
。ただし、カーネルをコンパイルするときに追加の文字列を設定して追加することができ、ディストリビューションはしばしば独自のパッチレベル(ダッシュの後ろ)とバージョンを表示するためにこれを行います3.18.6-32-generic
。カスタムカーネルを作成するときに独自の文字列を使用することが別の手がかりになる可能性があります。
uname -v
デフォルトでは、次の文字列を提供します。
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
これは、ツリーをリセットせずに特定のソースツリーを使用してこのカーネルを構築した回数であるため、任意です。これは独自のソースツリーを構築するときに便利です。 SMP
マルチタスク(つまり、非リアルタイム)カーネルを表すPREEMPTは、スケジューラの「プリエンプションモデル」に関連する別の設定オプションです。しかし、ここで最大の手がかりは、それがいつ作られたのかもしれません。これはカーネル自体の変更/変更タイムスタンプを一致させるために使用できますtouch
。たとえば、stat
そのカーネルでは次のようになります。
File: ‘3.19-goldilocksSpecial’
Size: 6858880 Blocks: 13400 IO Block: 4096 regular file
Device: 801h/2049d Inode: 3156605 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-02-15 15:32:29.000000000 -0500
Modify: 2015-03-03 13:55:21.000000000 -0500
Change: 2015-03-03 14:02:26.767045553 -0500
Birth: -
これは非常に一貫性がありますMon Mar 9 13:55:25 EDT 2015
。
答え3
他と同様
sudo apt-cache policy linux-generic
パッケージマネージャでインストールされたバージョンですか?
uname -r
バージョン比較
私にとっては
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
そして
3.19.0-15-generic
これはバージョンが同じであることを示します。
答え4
私は最も一般的に正解は「いいえ、できません」と言いたいと思います。特定の状況で役立つさまざまな方法が提案されていますが、すべてこれらの状況が実際にどのように発生するかを無視するようです。実際にカスタムカーネルを使用すると、カーネルは自分の存在を隠したり、他のカーネルとして表示されるなど、何でもできます。
実際にカスタムカーネルを実行していますが、それを知らなかった場合は心配です。どのカーネルが使用されているかを知る唯一の信頼できる方法は、どのカーネルをコンパイルしてインストールしたかを注意深く追跡することです。
システムで実行されているカーネルが何であるか、そのカーネルがどのソースからビルドされたのか、どこから来たのかわからない場合は、既知の良好なイメージからOSを再インストールすることを真剣に検討し、今後の試みにはさらに注意を払います。そして、bootカーネルは以下から出てくるか、それとも使用します。