/proc/cmdline を確認し、/boot マウントポイントのイメージと同じであると仮定すると、現在実行中のカーネルイメージを推論できることがわかります。しかし、これが保証されるわけではありません。
それでは、どのイメージがどのパーティションにあるのかを正確に知る方法はありますか?
よく知られているパスのinitramfsで画像ファイルを調べることはできますか?
ベストアンサー1
カーネルイメージをシステム RAM にインポートするのはブートローダの作業です。ブートローダだけがカーネルイメージのソースを決定できます。システムがネットワークから起動すると、カーネルイメージがシステムにまったくファイルとして存在しない可能性があります。
報告されたバージョン番号とコンパイルタイムスタンプは、カーネルイメージuname -a
ファイルを識別するのに役立ちます。次のコマンドを使用して、カーネルイメージファイルから同じ情報を読み取ることができますfile
。
$ uname -a
Linux hostname 4.9.80-atom #1 SMP Mon Feb 5 13:26:54 EET 2018 x86_64 GNU/Linux
$ file /boot/vmlinuz-4.9.80-atom
/boot/vmlinuz-4.9.80-atom: Linux kernel x86 boot executable bzImage, version 4.9.80-atom (user@hostname) #1 SMP Mon Feb 5 13:26:54 EET 2018, RO-rootFS, swap_dev 0x3, Normal VGA
UEFIシステムでは、UEFIブート変数を表示して、BootCurrent
どのNVRAMブートオプションが選択されているかを確認できます。ただし、ブートオプションがブート後に編集され、複数のブートオプションを提供できるブートローダを指している場合は、とにかくあいまいになる可能性があるため、これは非常に強力な証拠ではありません。
私が知っている唯一の強力な証拠は、TPMチップとTPM認識ブートローダを備えたシステムを使用することです。 TPMの対応するPCRレジスタに元々ロードされたカーネルの暗号化された強力なハッシュを格納します。その後、同じ規則に従い、ハッシュを再計算して一致することを確認できます。一致しない場合は、誰かがカーネルまたはPCRレジスタの値を変調しています。また、ファームウェアは常に使用されている実際のブートコードのハッシュで他のPCRレジスタを埋めるので、ブートローダの変調も確認できます。
(PCRレジスタは選択された値に設定できない方法で実装されています。新しい値は常に古い値+入力された新しいデータの暗号化された強力なハッシュなので、PCRレジスタを値に設定します。既に他のゼロ以外の値がある場合は特定既知の値は非常に難しいでしょう。
TrustedGRUBはGRUBブートローダのTPM対応バージョンです。私は[GRUBレガシーに基づく古いバージョン](https://sourceforge.net/p/trustedgrub/wiki/Home/]。現在一つあるようです。GRUB 2に基づく新しい実装しかし、これまでは伝統的なスタイルのブートだけをサポートしているようです。テストに使用できるすべてのTPMサポートシステムは現在UEFIベースであるため、まだテストしていません。