ブートローダーを見つける

ブートローダーを見つける

興味深いことに、特定のシステムを起動するためにどのブートローダが使用されたかを知ることは可能ですか?システムはグラブリロまたは他のブートローダーですか?

同じものに対して何らかの変数が/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システムがどのデバイスで起動されたかわかっている場合は、ブートローダーの内容をダンプし、grepGRUB または LILO のいずれかを使用できます。

                      ss #1

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 が正しく認識されました。

答え3

ブートローダーIDを取得するにはブートローダタイプ

echo $((`cat /proc/sys/kernel/bootloader_type`>>4)) 

あなたのブートローダーID

関連情報