Objective C Mac:检测主驱动器是否有多个分区?

时间:2015-08-17 17:41:35

标签: objective-c macos boot partition

如何检测计算机主驱动器是否有多个分区? (例如:Bootcamp,linux双启动或其他Mac OS分区)

我尝试使用磁盘仲裁框架(加载所有磁盘和分区然后计数),但是根据计算机,我在主驱动器上检测到3个(Mavericks)或0个(Yosemite)分区(其挂载路径为& #34; /&#34)。我想这是由于CoreStorage。

2 个答案:

答案 0 :(得分:1)

除了标准的HFS +分区之外,OS X还为EFI / Open Firmware RAID驱动程序等各种事物使用特殊的隐藏分区。而这甚至不是CoreStorage的因素。

无论你想做什么,都可能注定要失败,原因有两个:

  • 操作系统会定期更改分区数,具体取决于硬件配置,以响应软件更新,固件更新等次要内容。
  • 用户可以轻松地从外部驱动器启动另一个操作系统,所以无论你想通过寻找另一个操作系统来防止(某种类型的复制保护,可能?),你都不会成功以这种方式阻止它。

换句话说,我强烈的建议是甚至不要考虑走那条路。这就是疯狂。

您可以实际做的最好的事情是拥有您忽略的分区类型和/或GUID的黑名单,包括EFI,Apple_Boot(恢复),Apple_CoreStorage,GUID_partition_scheme以及其他一些,具体取决于您是否要允许RAID。以下是可能有用的GUID列表:

https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs

但严重的是,就是不要这样做。

答案 1 :(得分:0)

您可以使用一些开源库。我认为最好的候选人是分手。