2013-03-26 59 views
1

我需要在我的應用程序中確定我的Mac中的哪些內置驅動器是啓動驅動器。我不確定是否有驅動器的任何特定屬性或任何可以幫助我唯一標識內部啓動驅動器的特定文件。 'diskutil info'命令給出了該片的'Bootable'屬性,但是該屬性不夠好,因爲該屬性對於單個驅動器或所有驅動器的多個片段返回爲true。如何確定Mac上的啓動驅動器?

+0

這個問題可能屬於對超級用戶exchange,http://superuser.com – 2013-03-26 02:53:19

回答

2

您可以使用「祝福」命令,例如

$ /usr/sbin/bless --info --getBoot 
/dev/disk0s2 

有關更多信息,請參閱「man bless」。隨着「--plist」參數,輸出可以很容易地解析成NSDictionary,以下示例代碼演示此:

NSTask *task = [[NSTask alloc] init]; 
[task setLaunchPath:@"/usr/sbin/bless"]; 
[task setArguments:@[@"--info", @"--getBoot", @"--plist"]]; 
NSPipe * out = [NSPipe pipe]; 
[task setStandardOutput:out]; 

[task launch]; 
[task waitUntilExit]; 

NSFileHandle *read = [out fileHandleForReading]; 
NSData *data = [read readDataToEndOfFile]; 
NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:data options:0 format:NULL error:NULL]; 
NSLog(@"output: %@", plist); 

輸出:

{ 
    "Boot Volume" = "/dev/disk0s2"; 
} 
+1

我收到以下錯誤:無法訪問「efi-boot-device」NVRAM變量 – Mriganka 2013-03-26 03:57:12

+0

@Mriganka:我測試了代碼,它對我很有用。你在命令行上試過了嗎? – 2013-03-26 03:58:59

+0

mriganka $ bless --info --plist 無法訪問「efi-boot-device」NVRAM變量 – Mriganka 2013-03-26 04:02:55