macOS Catalinaで/publicフォルダを作成するところでつまづきました。
sh-3.2# mkdir -p /public
mkdir: /public: Read-only file system
macOS Catalina では、ファイルやデータを読み取り専用のシステムボリュームに保存したり、コマンドライン (ターミナルなど) から「ルート」ディレクトリ ( / ) 書き込んだりすることはできなくなりました。
macOS Catalina の読み取り専用のシステムボリュームについて
ここでは、SIPをOFFにすることなくmacOS Catalinaでルート( / )にpublicフォルダを作る手順が分かります。
手順は、フォルダを作って、設定、再起動の流れになります。基本的にターミナルアプリを使って作業します。
手順1:必要なフォルダを作る
基本、読み込み、書き込みができることが前提かと思います。
/System/Volumes/Data/フォルダ下にフォルダを作る必要があります(外付けはダメってことですね)。
実際publicフォルダをどこに?後々のことを考えるとAppleの慣例に合わせておいた方が面倒ごとが減るかと思っています。
homeは/System/Volumes/Data/home
コマンド( ls -l / )でルートフォルダがどのように形成されているのかが分かります。
home -> /System/Volumes/Data/home
/homeの実体は、/System/Volumes/Data/homeにあることが分かります。
作成するフォルダはこの規則に合わせて作ります。
これに合わせて、今回作成するpublicフォルダは、/System/Volumes/Data/publicに作成します。
◯ フォルダを作成する
sudo mkdir -p /System/Volumes/Data/publicこの時点では、自分がこのフォルダ内に書き込むことができません。アクセス権がないためです。
◯ アクセス権を与える。自分がオーナーとなるように調整します。
自分のIDを調べます。
id -unmacyarounanoka <= 次に利用するコマンドに使います。
このコマンドでオーナーを自分に変更できます。
sudo chown macyarounanoka /System/Volumes/Data/public↓のように一括でやることもできます。'ではありません。`逆シングルコートです。
sudo chwon `id -un` /System/Volumes/Data/public公開予定のpublicフォルダの作成、アクセス権の設定ができました。
手順2:ルート(/)にシンボリックリンクを作成する設定を行います。
通常lnコマンドでシンボリックリンクを作成することができます。このコマンドも「 Read-only file system」エラーになります。
lnコマンドの代わりにmacOS Catalinaからは
/etc/synthetic.conf設定ファイルが必要になりました。
man synthetic.confで設定方法の詳細が分かります。
設定方法は例えばpublicを公開する場合、
public(公開したいフォルダ名)[tab]/System/Volumes/Data/public(実体のフォルダ)
public System/Volumes/Data/public
Sysmteの先頭には/がないことに注意してください。
以下のようなコマンドで設定することも可能です。
echo -e 'public\tSystem/Volumes/Data/public' | sudo tee -a /etc/synthetic.confこのコマンドは、ファイルがなければ新規作成、ファイルがある場合追記します。
設定された内容は以下コマンドで確認することができます。
cat /etc/synthetic.conf手順3:macOSを再起動し、設定を適用する。
今回設定した内容は、macOS起動時に反映されます。
再起動の準備ができたところで、macOSを再起動してください。
再起動後、/publicフォルダができていることが確認できます。
作った設定が間違っていた、ルートに公開したフォルダをやめる方法
まずは設定済みの内容を確認します。
cat /etc/synthetic.conf自分で設定したもの1行だけある
=>設定ファイルを削除します。
sudo rm /etc/synthetic.conf今回複数ある中から1つだけ削除したい
=>vi で編集する必要があります。
sudo vi /etc/synthetic.confviで削除対象の行の先頭に#をつける、またはその行を削除し保存してください。
設定した内容は、macOS起動時に反映されます。
再起動の準備ができたところで、macOSを再起動してください。
まとめ
SIPをOFFにすることなくmacOS Catalinaでルート( / )にpublicフォルダを作る手順が分かったかと思います。
この記事の内容は2020/1/10の「[macOS Catalina] 困ったことの対処方法」に書いた内容をリライトしたものです。今回困って探して以前書いた内容にようやくたどり着きました。探すキーワードで見つかるようにしました。