簡體   English   中英

如何以編程方式確定哪個Mac驅動器是啟動驅動器?

[英]How do I programmatically determine which Mac drive is the boot drive?

這個問題中有關通過IOKit詢問已安裝驅動器的詳細信息。 但是,是否有辦法確定IOIteratorNext()返回的設備中的IOIteratorNext()是引導驅動器? 或者更好的是,是否有辦法在IOServiceGetMatchingServices()返回的迭代器中僅獲取啟動驅動器?

引導是從介質完成的,而不是從設備本身完成的。 設備有媒體,媒體有卷。 我不相信IOKit中會顯示卷。

使用磁盤仲裁,這可能是最簡單的。 DADiskCreateFromVolumePath()/CFURL使用。 然后調用DADiskCopyDescription()以獲取描述字典。 這將包括卷,介質,設備甚至總線的屬性,如果需要,還包括IOKit路徑。 但是,您要查找的信息很有可能直接在描述字典中。

Mark Setchell引用的NVRAM信息也可以從IOKit獲得,位於路徑IOService:/AppleACPIPlatformExpert/AppleEFIRuntime/AppleEFINVRAM 有一個屬性efi-boot-device 它的值是一個包含服務匹配字典的屬性列表。 如您所見,它將查找IOMedia提供程序類的條目, IOMedia UUID屬性是某個UUID。

您可以使用此:

nvram efi-boot-device

efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>78025031-4C42-4FDE-8DD1-A515A2BF6032</string></dict></dict><key>BLLastBSDName</key><string>disk0s3</string></dict></array>%00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM