我需要在我的应用程序内部确定我的Mac中的哪个内部驱动器是启动驱动器。我不确定驱动器或任何特定文件是否有任何特定属性可以帮助我唯一标识内部启动驱动器。 'diskutil info'命令给出了切片的'Bootable'属性,但该属性不够好,因为对于单个驱动器的多个切片或所有驱动器,该属性被返回为true。
答案 0 :(得分:2)
您可以使用“bless”命令,例如
$ /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";
}