Grub2
GRUB2:“nativedisk”和“chainloader”命令
從文件中我知道:
Chain-loading is only supported on PC BIOS and EFI platforms.
是否可以通過命令使用本機驅動程序(由
nativedisk
命令提供)chainloader
?如果不是,為什麼?這個功能還沒有實現還是理論上不可能實現?
據我所知,這兩個功能是相互獨立的。
nativedisk
這只是 GRUB 可以訪問磁碟的一種方式。但是,如果韌體不支持訪問鍊式引導載入程序所在的磁碟,那麼鍊式載入的第二個引導載入程序還需要包含自己的驅動程序……否則它可能無法單獨繼續引導過程,因為它無法訪問它是在沒有外界幫助的情況下從磁碟載入的。(如果第二個引導載入程序依賴於 GRUB 的驅動程序,那麼這不是真正的鍊式載入,而更像是 GRUB 的附加模組。)支持鍊式載入要求 GRUB 能夠以與韌體完全相同的方式載入鍊式引導載入程序。對於 PC BIOS,只需將載入的程式碼複製到已知的記憶體地址並跳轉到該地址即可。在 EFI 的情況下,EFI 引導服務將提供必要的功能:基本上 GRUB2 只是告訴 EFI 韌體“請執行此文件而不是我”,而韌體正是這樣做的。
在其他架構中,韌體可能會在載入 GRUB 的過程中做一些無法輕易撤消的事情。或者,到目前為止,可能還沒有必要為其他一些架構添加鍊式載入支持。
在為新架構實現鍊式載入時,您需要了解並複制韌體在其他情況下會執行的操作。通常,韌體會為引導載入程序提供一些有關其引導的硬體的資訊。如果您使用 GRUB 的
nativedisk
驅動程序來擴展韌體無法執行的功能,您可能會遇到一個問題:如果韌體無法提供必要的引導資訊,那麼您的鍊式載入常式是否能夠為鍊式引導載入程序需要的任何內容提供有意義的替換?所有這些都將是非常特定於平台的:它可能在一個平台上可行,而在另一個平台上則不可能。