尋找引導程式

尋找引導程式

出於好奇,是否有可能找出哪個引導程式用於啟動給定係統?系統啟動的是GRUB,利洛或任何其他引導程式?

我想一定存在一些相同的/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。

                      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

相關內容