Macのシステムフォルダーを理解する

システムフォルダーは、ユーザーがアクセスすることを意図していないフォルダーです。これらはアプリケーションやオペレーティングシステムが動作するためのサポートやリソースを提供します。ユーザーがアプリケーションやプログラムを通じてホストを操作できるようにする層です。一部は隠れており、一部はそうではありませんが、ほぼすべてはユーザーに何らかの形でアクセス可能です。

しかし、異なるシステムフォルダーはそれぞれ何のためにあるのでしょうか?「bin」とは何ですか、そしてそれはコンピュータにどのように役立つのでしょうか?最も一般的に参照されるシステムフォルダーについて以下で検討します。

Macの「/System」フォルダー自体にはあまり何も含まれていません。まずはその内容を見てから、他の深いシステムフォルダーに移りましょう。

注意: システムフォルダーやファイルに追加したり、削除したり、変更したりしないでください。安全にブラウジングできますが、ファイルを追加・削除・変更したり、フォルダー自体を変更したりすると、予測できない結果、時にはシステムに致命的な影響を与えることがあります。実験が必要な場合は、進む前にMacのブータブルクローンを作成してください。

ライブラリフォルダー: /System/Library と ~/Library

mac-system-folders-extensions-both-library

ライブラリフォルダーはユーザーに最も近いフォルダーです。これらはアプリケーションによって作成され、アプリケーションはその操作の過程でファイルを追加、削除、変更します。率直に言えば、ここでの整理プロセスは少し混沌としているかもしれません。アプリケーションは基本的にライブラリ内のファイル配置について自由ですが、ほとんどはかなり似たようなプロセスに従います。

ユーザーライブラリフォルダー(「~/Library」で見つかります)とシステムライブラリフォルダー(「/System/Library」で見つかります)には、非常に多様なファイルとフォルダーが保存されています。これらのファイルは、設定、アプリケーションデータベース、メタデータ、プラグイン、保存されたアプリケーションの状態、システムプロファイル、クッキーなど、多くのものを保存します。

アプリケーションサポート

mac-system-folders-library-application-support-folder

「~/Library/Application Support」フォルダーは、最も頻繁にアクセスされるライブラリフォルダーです。ここでは、アプリケーションがその操作に必要なファイルを保存します。ユーザーデータフォルダーから離れた場所にあるため、これらのファイルは汚染や変更を避けるために隔離できます。

ユーザーがこのフォルダーにアクセスするのは、プログラムのデフォルト設定ではサポートされていない方法で動作を変更したり、キャッシュやデータベースのエラーを修正したりするためです。プログラムのApplication Supportフォルダーを削除すると、プログラムをデフォルトの状態にリセットし、クリーンなスタートを強いる良い方法です。また、アプリケーション内でハッキングしたい場合は、早い段階でそのプログラムのApplication Supportフォルダーに入ることになるでしょう。

/System/Libraryと~/Libraryの違いは何ですか?

なぜmacOSには二つのライブラリフォルダーが必要なのでしょうか?システムライブラリは、すべてのユーザーがシステム全体のニーズに使用します。すべてのユーザーがアクセス可能です。一方、ユーザーライブラリはその特定のユーザーだけがアクセスできます。

Unixフォルダー: /bin, /sbin, /usr, /var, /private

mac-system-folders-unix-folders

macOSはUnixカーネルの上に構築されています。これは、その深い機能の多くがUnix機能に基づいていることを意味します。そのため、高レベルのmacOSシステムフォルダーに加えて、Unixフォルダーも見つけることができます。これらのフォルダーは普遍的に隠れているため、ツアーを続けるには隠しファイルを表示する必要があります。

ホームディレクトリにはいくつかのUnixフォルダーがあります。最も顕著なものは「/bin」と「/sbin」、「/usr」、「/var」、「/private」です。

mac-system-folders-bin-sbin-folders

「/bin」と「/sbin」には両方ともバイナリが含まれています。「sbin」には、ファイルシステムがマウントされていなくても、システムをブート、復元、回復、および修復するために必要なバイナリが含まれています。「/bin」には、すべてのユーザーが使用するための基本的なユーザーコマンドが含まれています。「bin」はbinariesの略であり、「sbin」はsystem binariesを意味します。

macOSでは、/sbinにあるほとんどのファイルシステムマウント用バイナリは、/System/Library/FilesystemsフォルダーにあるmacOSファイルシステムプラグインにシンボリックリンクされています。

mac-system-folders-usr-folder

「/usr」には、通常のシステム操作中に使用されるバイナリやライブラリが含まれています。ここにあるファイルは、ファイルシステムがマウントされた後に使用されます。「usr」は「user」またはUnix System Resourcesの略です。

mac-system-folders-var-folder

「/var」には、システムがその操作の過程で書き込むファイルが含まれており、キャッシュ、データライブラリ、ログなどがあります。Varはvariableの略で、通常はコアレベルのシステムアプリケーションによってのみ書き込まれます。macOSでは「/var」は「/private/var」にシンボリックリンクされています。

mac-system-folders-private-folder

「/private」には、デーモンやコマンドラインツールの設定、キャッシュ、変数、仮想メモリスワップファイル、一時ファイル、スリープイメージが含まれています。一部のUnixシステムフォルダー(/etcや/tmpなど)は、その内容のために/privateに同名のディレクトリにシンボリックリンクされています。

これらのフォルダーの内容について学びたい場合は、MacのUnixフォルダーに関する詳細な内訳を確認してください。

拡張機能

mac-system-folders-extensions-kexts

Hackintoshを構築したことがあるなら、「System/Library/Extensions」というフォルダーを聞いたことがあるでしょう。一般に「S/L/E」と略されるこのフォルダーには、macOSカーネルの機能を拡張する「kext」(カーネル拡張)が含まれています。kextを追加することで、macOSカーネルが新しいハードウェアと通信できるようになります。Windowsから来た方には、kextはドライバのようなものです。

このフォルダーの内容を変更するのは難しい作業で、慎重な権限管理が必要です。macOSでkextを追加または削除したい場合は、正しく行うようにしてください。

エージェントとデーモン

デーモンとエージェントはバックグラウンドで実行され、ユーザーからの対話なしにタスクを実行します。異常な名前(「デーモン」と発音される)は、マクスウェルのデーモンに由来しています。

デーモンはシステム操作を実行し、ルートによって実行されます。一方、エージェントは現在ログインしているユーザーによって実行されます。グローバルエージェントとデーモンは、任意のユーザーの代理としてアクセスおよび実行できますが、ユーザーエージェントはそのライブラリファイルを所有するユーザーの代理としてのみ実行できます。

  • 「~/Library/LaunchAgents」には、ログインしているユーザーの代理として実行されるユーザーエージェントが含まれています
  • 「/Library/LaunchAgents」には、ログインしているユーザーの代理として実行されるグローバルエージェントが含まれています
  • 「/System/Library/LaunchAgents」には、ログインしているユーザーの代理として実行されるシステムエージェントが含まれています
  • 「/Library/LaunchDaemons」には、ルートによって実行されるグローバルデーモンが含まれています
  • 「/System/Library/LaunchDaemons」には、ルートによって実行されるシステムデーモンが含まれています

新しいデーモンを作成したり、既存のデーモンを設定したりするには、コマンドラインプログラムlaunchctlを使用できます。

結論

あなたのMacには他にもユーザーではないフォルダーが隠れていますが、上記が最も一般的にアクセスされるものです。Unixファイルシステムがどのように組織されているかについてもっと知りたい場合は、Unixに似たファイルおよびディレクトリ配置の要求とガイドラインを説明したファイルシステム階層標準を確認してください。