3

アプリ内で、Mac のどの内蔵ドライブがブート ドライブであるかを判断する必要があります。ドライブの特定のプロパティや、内部ブート ドライブを一意に識別するのに役立つ特定のファイルがあるかどうかはわかりません。「diskutil info」コマンドはスライスの「起動可能」プロパティを提供しますが、そのプロパティは単一ドライブの複数のスライスまたはすべてのドライブに対して true として返されるため、十分ではありません。

4

1 に答える 1

2

「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);

出力:

{
    "Boot Volume" = "/dev/disk0s2";
}
于 2013-03-26T03:22:03.953 に答える