Macos 如何确定mac上的启动驱动器?

Macos 如何确定mac上的启动驱动器?,macos,osx-mountain-lion,Macos,Osx Mountain Lion,我需要在我的应用程序中确定Mac中的哪个内部驱动器是引导驱动器。我不确定驱动器是否有任何特定属性或任何特定文件可以帮助我唯一标识内部启动驱动器。”diskutil info”命令给出了片的“Bootable”属性,但该属性不够好,因为该属性对于单个驱动器的多个片或所有驱动器返回为true。您可以使用“bless”命令,例如 $ /usr/sbin/bless --info --getBoot /dev/disk0s2 更多信息请参见“人类祝福”。使用“-plist”参数,可以轻松地将输出解析为

我需要在我的应用程序中确定Mac中的哪个内部驱动器是引导驱动器。我不确定驱动器是否有任何特定属性或任何特定文件可以帮助我唯一标识内部启动驱动器。”diskutil info”命令给出了片的“Bootable”属性,但该属性不够好,因为该属性对于单个驱动器的多个片或所有驱动器返回为true。

您可以使用“bless”命令,例如

$ /usr/sbin/bless --info --getBoot
/dev/disk0s2
更多信息请参见“人类祝福”。使用“-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);
输出:


这个问题可能属于超级用户交换,我得到以下错误:无法访问“efi引导设备”NVRAMvariable@Mriganka:我测试了代码,它对我有效。您在命令行上尝试过吗?mriganka$bless--info--plist无法访问“efi引导设备”NVRAM变量这是我在命令行上运行它时得到的输出。此外,我的要求是在从外部驱动器引导时找到内部引导驱动器。“你有哪种Mac和哪种操作系统版本?”?我用两种不同的Mac电脑(iMac和MacBookPro)以及10.7和10.8进行了检查。
{
    "Boot Volume" = "/dev/disk0s2";
}