在OS X的系统中,不再有Windows用户熟悉的C盘、D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范。MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采用GPT。这种EFI+GPT的方式相比传统的BIOS+MBR的方式有很多好处,具体可以参考我之前写的博客。

1 硬盘分区

默认情况下,MAC OS X把硬盘分成了3个GPT分区。第一个就是GPT标准要求的ESP分区,这个分区很小,200MB,FAT文件系统格式。按照EFI惯例,应该用来存放操作系统的引导程序。但是苹果没有遵守这个惯例,它的引导程序boot.efi并没有存放在ESP中,这个分区只是被苹果用来存放升级固件的文件。第二个分区就是OS X的系统分区了,它占用了大部分磁盘空间,用来存放整个OS X系统和用户数据,分区文件系统格式为HFS+。第三个分区是系统恢复分区,里面存放了一个精简的OS X系统,用来完成系统恢复、安装等任务,类似于WindowsPE。默认情况下,OS X自带的磁盘工具并不能显示ESP分区和恢复分区,需要开启DEBUG菜单才可以。开启方法为:

defaults write com.apple.DiskUtility DUDebugMenuEnabled 1

然后重启“磁盘工具”,菜单栏里会多出一项“调试”菜单,选中此菜单中的“显示所有分区”菜单项,就会在左侧显示出磁盘的隐藏分区。如下图所示:

此时, ESP分区和恢复分区都显示为灰色,因为此分区虽然存在,但是没有被挂载到系统目录树中,右键点击分区,选择挂载就可以正常显示了,而且可以直接在Finder中查看这个分区。

其中ESP分区的目录结构如下:

2 OS X系统分区的目录结构

Mac OS X已经是被认证的Unix系统,所以其目录结构基本符合Unix系统目录结构。但是有很多目录在Finder中并看不到,这是因为这些目录的被设置了隐藏属性,我们可以在终端窗口中利用unix命令查看。

可以看出,根目录下存在着传统的unix系统目录,也存在着一些os x特有的目录。

2.1 符合unix传统的目录

  • /bin 传统unix命令的存放目录,如ls,rm,mv等。
  • /sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等。
  • /usr 第三方程序安装目录。
  • /usr/bin, /usr/sbin, /usr/lib,其中/usr/lib目录中存放了共享库(动态链接库).
  • /etc. 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
  • /dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
  • /tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
  • /var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。
这些标准的Unix目录在Finder中并不可见,如下图所示:
 

2.2 os x特有的目录

OS X系统中,除了标准的unix目录外,还增加了特有的目录。
  • /Applications 应用程序目录,默认所有的GUI应用程序都安装在这里;
  • /Library 系统的数据文件、帮助文件、文档等等;
  • /Network 网络节点存放目录;
  • /System 他只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
  • /Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
  • /Volumes 文件系统挂载点存放目录。
  • /cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
  • /private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。

3 用户的资料应该存放到什么目录?

对于普通OS X用户来说,对系统目录树结构的理解与否并不影响正常使用系统,以至于OS X把很多目录都故意隐藏,让普通用户通过Finder不能看到。用户真正关心的是把自己的资料存放到哪里更加方便和安全。Windows用户通常会把个人资料存放在非系统盘(C)的其他分区中,因为Windows系统一旦死掉,C盘的内容很可能就找不回来了。Mac OS X的用户则不用担心这个问题,OS X发生崩溃和不能启动的概率实在是太低了,就算是系统出现问题,由于用户目录和系统目录是彼此独立的,所以也容易找回。所以通常情况下,用户直接把资料存放在自己的用户目录中,OS X也建议用户这么做,并且已经为用户准备好了常用的子目录,如下图所示:

应用程序,文档,下载,音乐,电影,图片,公共,对于普通用户这些子目录也就够用了,当然如果你觉得不够,可以自己随便添加,例如上图中就增加了Work目录来存放一些工作的项目文件,家庭照片视频则用来存放来自手机、Dv等等的照片视频资料。

从Windows过来的用户,如果还想保持原来的习惯,把用户文件和系统文件存放在不同的分区中,那么就需要利于“磁盘工具”,重新分区,把系统分区调整小一些,留出空间建立一个新的HFS+分区,使用的时候把这个分区挂载到系统目录树上就可以使用了。

Mac OS X 系统目录结构的更多相关文章

  1. Mac OS X 背后的故事

    Mac OS X 背后的故事 作者: 王越  来源: <程序员>  发布时间: 2013-01-22 10:55  阅读: 25840 次  推荐: 49   原文链接   [收藏]   ...

  2. Mac OSX 系统目录结构(转)

    摘要 在OS X的系统中,不再有Windows用户熟悉的C盘.D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范.MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采 ...

  3. MAC系统 - 系统目录结构

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/smstong/article/detai ...

  4. Mac OS平台下应用程序安装包制作工具Packages的使用介绍

    一.介绍 Windows下面开发好的应用程序要进行分发时有很多打包工具可供选择,如Inno Setup, InstallShield, NSIS, Advanced Installer, Qt Ins ...

  5. 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  6. Mac OS X双系统变回虚拟机

    Mac OS X双系统变回虚拟机 自从装了双系统后,感觉不要太好,装了虚拟机就开始有工作的干劲了.不妙的是,我在Win7系统里并没有装office,用不了word文档就写不了笔记和总结.我不太想在Wi ...

  7. Mac OS 配置PHP + mysql 环境

    PHP:使用mac自带的环境.需要在配置文件中打开php模块. IDE使用的是phpstrom,JetBrain公司的神器. Mysql: 使用的是官网 Server version: 5.7.17. ...

  8. Mac OS X上用CoreCLR运行一个真正的.NET控制台程序

    这个真正的控制台程序来自corefxlab,名叫CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软.Linux.苹果的logo. CoreClrHelloWorld ...

  9. [转]Mac OS X framework 解析

    转载地址:http://hi.baidu.com/yonderbyron/item/9838b73472152e009cc65ec8 Mac OS X framework 解析 1.framework ...

随机推荐

  1. iOS 7 自定义Back按钮 与 Pop interactive gesture 问题

    1.自定义Back按钮 iOS中很多时候我们都会自定义返回按钮,也是一件easy的事,类似如下: // 返回按钮 1 - (void)showNavBackButton { UIButton *bac ...

  2. 16、编写适应多个API Level的APK

     确认您是否需要多apk支持 当你试图创建一个支持跨多代android系统的应用程序时,很自然的 你希望你的应用程序可以在新设备上使用新特性,并且不会牺牲向后兼 容.刚开始的时候认为通过创建多个ap ...

  3. duilib入门之贴图描述、类html文本描述、动态换肤、Dll插件、资源打包

    转载自duilib入门文档 贴图描述: Duilib的表现力丰富很大程度上得益于贴图描述的简单强大.Duilib的贴图描述分为简单模式和复杂模式两种. 简单模式使用文件名做为贴图描述内容,在这种方式下 ...

  4. iOS数据存储之属性列表理解

    iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...

  5. Rust 中的继承与代码复用

    在学习Rust过程中突然想到怎么实现继承,特别是用于代码复用的继承,于是在网上查了查,发现不是那么简单的. C++的继承 首先看看c++中是如何做的. 例如要做一个场景结点的Node类和一个Sprit ...

  6. C/C++:类模板

    类模板就是为类声明一种模板,使得类中的某些数据成员,或某些成员函数的参数,又或者是某些成员函数的返回值可以取任意的数据类型,包括基本数据类型和自定义数据类型. 类模板的声明形式如下: template ...

  7. php环境配置中各个模块在网站建设中的功能

    上一篇配置环境的时候,我们注意到,有四个模块需要配置,那么,这四个模块分别有哪些功能呢?   一.php php是我们的用来创建动态网页的强有力的脚本语言,安装过程中我们直接解压到某一个路径就好了,比 ...

  8. Apache Hadoop 镜像地址

    HTTP http://apache.fayea.com/ http://apache.opencas.org/ http://mirror.bit.edu.cn/apache/ http://mir ...

  9. Chapter 1 初探Caffe

    首先下载windows下源码: Microsoft 官方:GitHub - Microsoft/caffe: Caffe on both Linux and Windows 官方源码使用Visual ...

  10. homework-04 单词方阵

    问题描述 本次作业的题目要求利用给定的一组单词生成一个矩阵,矩阵的每个位置由一个字母填充,单词表中的每一个单词可以匹配矩阵中一段连续的序列,这段序列可以是横向,纵向或者是45度斜角方向,单词可以由左向 ...