出於好奇,是否有可能找出哪個引導程式用於啟動給定係統?系統啟動的是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。
您可以使用以下命令來確定您使用的是 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。