このコラムをチェックするようなMacユーザであれば、Linuxに対する免疫があるはず。ひと昔であればGnomeやKDEといった統合デスクトップ環境の動作環境として、近ごろではRaspberry PiなどのシングルボードコンピュータのOSとして、UNIX系OSに慣れたユーザにとってLinuxは近しい存在だからだ。

一方、WindowsではLinuxサポートが進行している。Windows 10には「Windows Subsystem for Linux(WSL)」が実装され、Linuxディストリビューションをそのまま実行できるようになった。従来から仮想マシンとしてLinuxを動作させることは可能で(それはmacOSも同様)、CygwinやMinGWといったUNIX/Linuxライクな実装も存在するが、WSLではWindowsのシステムから透過的かつオーバーヘッドなしにLinuxの機能にアクセスできる。正直、Macユーザから見てもこの状況は羨ましい。

せめてMacでもLinux標準のファイルシステム「ext4」を直接読み書きできればと思うが、サポートされていない。FAT32やNTFS、exFATがOSレベルでサポートされているのだから……と考えてしまうものの、ライセンスの関係だろうか、期待薄な状況だ。

現状、macOSでext4を扱う選択肢は2つ、「extFS for Mac by Paragon Software(旧Paragon ExtFS for Mac)」を4,490円で購入するか、無償の「ext4fuse」を導入するかだ。前者はマウント/アンマウント処理が可能なGUIフロントエンドも備えており、低価格なわりに高機能なのだが、ここでは敢えて後者のext4fuseを選択しmacOS Mojaveでどのように使えるのか、検証することにした。

  • Microsoft StoreではWSL向けのLinuxディストリビューションが公開されている

まずはセットアップ

ext4fuseを導入するには、パッケージ管理システム「HomeBrew」を利用する。以下のとおりコマンドを実行するだけで、必要な一式が芋づる式にダウンロード/インストールされるため、実にかんたんだ。

$ brew install ext4fuse

続いてはext4ボリュームのマウント……へ進む前に、デバイス名を確認しておこう。ext4ボリュームが含まれるHDDやリムーバブルドライブをMacに接続し(ここではUSB接続を前提に話を進める)、以下のとおりdiskutilコマンドを実行すると、現在macOSに認識されているドライブ/ボリュームがリストアップされるはず。そこに「Linux」と書かれたボリュームが、ext4fuseの対象になる。IDENTIFIER列を見て、「disk2sX」や「disk3sX」といった文字列(デバイスファイル名)をメモしておこう。

$ diskutil list
  • この画面からはext4ボリュームが「disk3s2」と読み取れる

次に、マウントポイントを決定する。macOSは「/Volumes」をマウントポイントとしてリムーバブルディスクを接続するが、ここはアクセス権の関係でext4fsでは使用できないため、適当なディレクトリを作成しよう。なお、既存のディレクトリ、特にデスクトップ(~/Desktop)は使用しないこと。ext4ボリュームをアンマウントするまでデスクトップ上の既存ファイルにアクセスできなくなる(消えたように見える)ため、冷たい汗をかいてしまうはずだ。

  • ファイルが存在するディレクトリをマウントポイントにすると、消えたように見えるので注意

トラップ(?)はもう1つある。はじめてext4fs(正確には「FUSE」)を初めて利用するときには、macOSのセキュリティ機構により実行が拒否されてしまう。システムに許可されていない/App Storeに登録のない開発者は、システム環境設定「セキュリティとプライバシー」パネルにある「一般」パネルで許可を与えなければならないからだ。もっとも、この措置はマウント処理を行いエラーが出たあとに実行することになる。

  • 初めて実行したときは、このようなダイアログが表示される

これで、以下のとおりコマンドラインを実行すればext4ボリュームをマウントできる。筆者の環境では、対象のデバイスファイルを「/dev/disk3s2」、マウントポイントをデスクトップ上に作成した「ext4」(~/Desktop/ext4)としたが、適宜読み替えてほしい。マウントポイントに指定したディレクトリは、Finderで表示すると「FUSE」というロゴがデザインされているため、マウントが成功したことにすぐ気付くはずだ。なお、アンマウントはmacOS付属のumountコマンドに、先ほどのマウントポイントを指定するだけでいい。

$ sudo ext4fuse /dev/disk3s2 ~/Desktop/ext4 -o allow_other


$ sudo umount ~/Desktop/ext4

と、ここで致命的な判断ミスに気付く。そう、ext4fuseはリードオンリー……ファイルシステムを閲覧することはできても、書き込むことができない。ここが、有償の「extFS for Mac by Paragon Software」との最大の違いだ。

ext2用のFUSEドライバ(fuse-ext2)を書き込み許可のうえ強制マウントする方法もあるようだが、ファイルシステムがダメージを受ける可能性があるためお勧めできない。こちらの最新版を使えばよさそうだが、Mojaveでしばらく検証したのちに報告させていただきたい。

  • 無事Macに「ext4」をマウントできたものの……