アーキテクチャをスマートに。

株式会社ネオジニア代表。ITアーキテクトとしてのお仕事や考えていることなどをたまに綴っています。(記事の内容は個人の見解に基づくものであり、所属組織を代表するものではありません)

Mac OS X で ext4 マウントする方法(ext4fuse)

先日、諸事情によりメインマシンを Ubuntu on ThinkPad X220 から MacBook Pro に乗り換えたんですが、Mac OS Xext4 パーティションのマウントがうまく出来なかったのでその記録。


環境:

追記:
2014/08/31現在では、ext4fuseは32bitを超えるBlock numberをサポートしていないようです。テラバイト級のパーティションでは32bitを超えるので注意が必要です。自分の場合は、ファイルと同じ名前のディレクトリが見えて、ファイルを開くと謎のディレクトリを開こうとしてエラーになる、みたいな怪奇現象が発生しました。
ext4fuseのREADMEの最後に書かれていました。orz

結論

ext4fuse をインストールして、operator グループに自分のユーザを追加すればOK。
すなわち、

brew install ext4fuse
sudo dscl . append /Groups/operator GroupMembership <your-user-name>

あとは、mount コマンドの代わりに ext4fuse コマンドでマウントできます。

ext4fuse <device> <mount-point>

device は、物理ディスクならば diskutil コマンドで調べられます。
mount-point は任意のパスです。空のフォルダでないとダメです。
例えば /dev/disk2s3 を ~/mnt にマウントする場合は、

ext4fuse /dev/disk2s3 ~/mnt

となります。

経緯

もともと Ubuntu ユーザなので、どうせ homebew で e2fsprogs やら fuse やら入れればマウント出来るんやろ?みたいな感じで考えてたんですが、適当にインストールしてやってみてもうまくいかず。
数日後、落ち着いたところで再チャレンジ。今度はやみくもにコマンド打ちまくるのではなく、ググりながら情報を集め、ext4fuse を使えば良さそうだという情報が多かったので試してみるも、やはりうまくいかず。
どういうことかというと、

$ sudo ext4fuse /dev/disk2s3 ~/mnt
Password:
$ ls -l ~/mnt
ls: mnt: No such file or directory
$

となってしまって、マウントまではエラーなく通っているように見えるのですが、マウント先を ls すると見えない、という状態。

色々調べたあげく、github にある ext4fuse のソースツリーから最新版をダウンロードして自分でビルドしてみよう、ということに。
でソースツリーに含まれる README を開いてみると、なんと Mac OS X での使用方法が一番最初に載ってるじゃないっすか!?
それによると、まず brew でインストールして、Leopard 以降の場合は operator グループにユーザを追加せよ、とのこと。
こんなもん、普段 何も考えずに brew でサクッと入れちゃう人たちには全くわからん。わかるわけがないでしょう。

というわけで後に続く人たちのための備忘録でした。

蛇足

USB接続のハードディスクをマウントしたかったので、最初は VirtualBox 上の Ubuntu に認識させれば楽勝!!とか思って VirtualBox の USB フィルタをごにょごにょしてゲストOSにUSBデバイスを認識させようとしていたのですが、それもうまくいかず。
何と VirtualBox では USB 3.0 コントローラに対応していないとか。。。
MacBook だと USB 3.0 しかないのでツライ。。。