【问题标题】:Objective C Mac: detect if main drive has more than one partition?Objective C Mac:检测主驱动器是否有多个分区?
【发布时间】:2015-11-10 10:52:16
【问题描述】:

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

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

【问题讨论】:

  • 我认为“正确”的答案将取决于您实际想要完成的任务。 OS X 启动磁盘的布局可能会有很大差异,具体取决于磁盘格式、分区表以及是否使用 CoreStorage 卷组。
  • @MarkBessey 感谢您的回答。这个想法是能够检测用户的计算机是否有超过原始分区,并且对每一个新的 Mac 型号都这样做。我有一个软件,只有在计算机处于初始配置(未添加分区)时才需要运行。

标签: objective-c macos boot partition


【解决方案1】:

除了标准的 HFS+ 分区外,OS X 还为各种事物使用特殊的隐藏分区,例如 EFI/开放固件 RAID 驱动程序等。这甚至还没有考虑到 CoreStorage。

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

  • 操作系统会根据硬件配置定期静默更改分区数量,以响应软件更新、固件更新等小事。
  • 用户可以轻松地从外部驱动器启动另一个操作系统,因此无论您试图通过寻找另一个操作系统来防止(某种复制保护,也许是?),您都不会成功以这种方式防止它。

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

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

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

但是说真的,不要那样做。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 2010-09-14
      • 2013-06-22
      相关资源
      最近更新 更多