macOS Catalina でルートフォルダーに自由にシンボリックリンクを作成する
オペレーティングシステム
macOS Catalina で、任意のフォルダーへのシンボリックリンクをルートフォルダーに作成する方法があったので試してみました。
mac で Catalina 以前に使っているアプリでルートからの絶対パスしていでデータの場所を管理しているものがあったのですけれど、Catalina ではルートフォルダーへの書き込みが root
でもできなくなっています。
そうなるとルートフォルダーに任意のフォルダーを作成する方法は無いかあっても強引な方法か⋯みたいに思ってみたのですけれど、 調べてみると Catalina でもその方法が標準で用意されているようだったので、設定してみることにしました。
事前知識
Catalina でルートフォルダーにシンボリックリンクを作成するにあたって、 まずは Catalina 特有のパーティション構成を知っておくとイメージを掴みやすそうです。
Catalina では、ルートフォルダーが Macintosh HD
と Macintosh HD - Data
みたいに 2 つのパーティションで構成されているようです。
パーティションの占有状況から見て、実際のデータファイルは Macintosh HD - Data
に保存されていて、
もうひとつの Macintosh HD
には表向きのフォルダーだけが用意されている様子です。
実際に他の mac を起動してこのパーティションをマウントしてみてもその様子が窺えるのですけれど、
だからといって他の macOS を使って同じようにフォルダーを作成してもルートフォルダー内には表示されてくれませんでした。
この辺りを Catalina では Firmlink という仕組みで管理しているらしく、ルートフォルダーから任意のフォルダーへの
リンクを /etc/synthetic.conf
で管理している様子です。
ルートフォルダーから任意のフォルダーへのリンクを作る
管理の様子がわかったところで、実際にルートフォルダーに別のフォルダーへのシンボリックリンクを作成してみることにします。
実体のフォルダーを用意する
ルートフォルダーからリンクしたいフォルダーは、基本的には通常通りの方法で用意することになる様子です。 普段から使えるどこかのフォルダーにフォルダーを作って、用途に合ったアクセス権限を設定します。
ルートフォルダーにフォルダーを新規作成したいとき
ちなみに、フォルダー自体もルートフォルダーに作成することも一応はできて、
そうしたい場合には /System/Volumes/Data
にマウントされている Macintosh HD - Data
ボリュームにフォルダーを作成すれば良いようです。そして、ここに対してシンボリックリンクを設定することになります。
このフォルダーはシステム権限であれば書き込めるようになっているので、ここに例えば XXX
という
フォルダーを作成するとき、ターミナルを使う場合は次のように操作します。
cd /System/Volumes/Data
sudo mkdir XXX
このフォルダーを普段、自由に読み書きしたいのであれば、次のようにして このフォルダーを自分自身の所有にします。
sudo chown $USER XXX
ルートフォルダーからのリンクを作る
ルートフォルダーから任意のフォルダーへのシンボリックリンクを作るには、/etc/synthetic.conf
ファイルに対して
次の書式で必要な情報を記載します。
ルートフォルダー上のフォルダー名 実際のフォルダーへのリンク
たとえば /System/Volumes/Data/XXX/YYY
というフォルダーを、
ルートフォルダーに YYY
という名前でマウントしたい場合には、
次のように記載します。
YY /System/Volumes/Data/XXX/YYY
こうして設定を終えたら mac を再起動してあげることで、 指定したフォルダーがルートフォルダー上からアクセスできるようになります。
/etc/synthetic.conf
の書き換えには管理権限が必要なので、たとえば ;sudo vi /etc/synthetic.conf
などとして、管理権限で編集します。また、最初はファイルそのものが存在しない様子でしたけれど、普通に新規作成すれば大丈夫でした。
作成したリンクへのアクセス方法
ここまでできれば、あとは普段通りの方法で作成したフォルダーにアクセスできます。 Finder からアクセスする場合は、ルートフォルダーを開けばそこに指定したフォルダーがリンクとして用意されているので、 それを普通に開きます。
ターミナルからアクセスしたい場合には、ルートディレクトリーから辿り着けるようになっているので、 今回の場合であれば次のようにしてアクセスすることが可能です。
cd /YYY