興味深いことに、特定のシステムを起動するためにどのブートローダが使用されたかを知ることは可能ですか?システムはグラブ、リロまたは他のブートローダーですか?
同じものに対して何らかの変数が/sys
存在するはずですよね?/proc
編集:
ブート情報の概要: => Lilo は /dev/sda の MBR にインストールされています
sda1: ___________________________________________________________________
File system: Boot sector type: Unknown Boot sector info: Mounting failed: mount: unknown filesystem type ''
/dev/sda
起動に使用できる唯一のデバイスです。
唯一利用可能な単一のパーティションに既知のファイル システムがない場合、どうやって起動できたのでしょうか?
答え1
/sys
この情報は、またはでは意味のある方法で追跡されていないと思います/proc
。起動後にこの情報にアクセスできる唯一の方法は、GRUBまたはLilo構成ファイルが存在するかどうかを確認するか、次のようなスクリプトを使用してシステムを照会することです。bootinfoscript
。
例 - ブートデバイスの確認
dd
システムがどのデバイスで起動されたかわかっている場合は、ブートローダーの内容をダンプし、grep
GRUB または LILO のいずれかを使用できます。
GRUB と LILO のどちらを使用しているかを確認するには、次のコマンドを使用します。
$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep GRUB
$ sudo dd if=/dev/sda bs=512 count=1 2>&1 | grep LILO
この文字列を返すものが、使用しているブートローダーです。
Binary file (standard input) matches
例 - bootinfoscript の使用
$ sudo ./bootinfoscript --stdout
Boot Info Script 0.61 [1 April 2012]
============================= Boot Info Summary: ===============================
=> Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of
the same hard drive for core.img, but core.img can not be found at this
location.
sda1: __________________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System:
Boot files: /grub2/grub.cfg
...
ただし、複数のブートローダが共存する可能性があるため、どちらのアプローチも「決定的」ではありませんが、少なくとも「使用されている可能性のある」ブートローダについて大まかなアイデアが得られます。
参考文献
答え2
見るこれただし、このスクリプトは Bash で記述されているため、組み込みプラットフォームで実行する必要がある場合は変更する必要があります。このスクリプトをテストしたところ、Ubuntu 上の GRUB と Slackware 上の LILO が正しく認識されました。