如何确定Mac上的启动驱动器?

3

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


这个问题可能更适合在Superuser交流平台上提问,http://superuser.com。 - Mike Gardner
1个回答

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";
}

2
我遇到了以下错误:无法访问“efi-boot-device”NVRAM变量。 - Mriganka
@Mriganka:我测试了这段代码,它对我有效。你在命令行上试过吗? - Martin R
mriganka $ bless --info --plist 无法访问“efi-boot-device”NVRAM变量。 - Mriganka
这是我在命令行上运行时得到的输出。此外,我的要求是在从外部驱动器引导时找到内部引导驱动器。 - Mriganka
你用的是哪种Mac电脑和哪个操作系统版本?我已经检查了两台不同的Mac电脑(iMac和MacBook Pro),分别使用了10.7和10.8版本。 - Martin R
有很多谷歌搜索结果与“无法访问“efi-boot-device”NVRAM变量”相关,或许可以找到一些帮助。- 很抱歉我的解决方案对你没有起作用。 - Martin R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接