macOSに、Homebrewを使わずにNTFS-3Gをインストールする。
[主題]
macOSに、Homebrewを使わずに、NTFS-3Gをインストールする方法を説明したい。
[背景]
本稿執筆時点では、VMware Fusionは、ARM版Windowsにおいて、まだ共有機能をサポートしていない。このため、VMware FusionにインストールしたARM版Windowsと、Macとの間でファイルをやり取りするには、exFATフォーマット、またはNTFSフォーマットの外付けドライブが必要である。
筆者も、exFATフォーマットのドライブで、ファイルをやり取りしてきたが、Windows側での書き込み速度に不満があった。そこで、外付けドライブをNTFSフォーマットにすることにした。
しかし、その場合、Mac側で書き込み可能にするには、NTFS-3Gなどのサードパーティーのドライバのインストールが必要となる。
本稿は、上記経緯から、NTFS-3Gを、macOSに、Homebrewを使わずインストールした作業記録である。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Ventura 13.5.2
Xcode 14.3.1
CommandLine Tools for Xcode 14.3.1.0.1
[インストール手順]
-
macFUSEのインストール
NTFS-3Gを動作させるためには、FUSE(Filesystem in Userspace)と呼ばれるファイルシステム拡張が必要である。MacではmacFUSEを用いる。macFUSEホームページから、パッケージをダウンロードしてインストールする。
なお、Apple Silicon Macでインストールを完了するためには、macOSの復元/復旧での操作が必要である。(リンク記事のおまけの項参照) -
pkg-configのコンパイルとインストール
curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz tar xf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 ./configure --with-internal-glib make && sudo make install
-
gettextのコンパイルとインストール
gettextの必要性は、後述のエラーで判明したものだが、順序として、先に入れておくべきであるため、ここでインストールする。curl -LO https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.tar.gz tar xf gettext-0.22.tar.gz cd gettext-0.22 ./configure make && sudo make install
-
ntfs-3gのコンパイルとインストール
curl -LO https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz tar xf ntfs-3g_ntfsprogs-2022.10.3.tgz cd ntfs-3g_ntfsprogs-2022.10.3
まず、
./configure
とやると、コンフィギュアは通過してしまう。しかし、
make
とやると、
Undefined symbols for architecture arm64: "_libintl_setlocale", referenced from: _utils_set_locale in utils.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [ntfsfix] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2
とエラーになる。ググってみると、gettextのlibintlが正しく見つけられない問題らしく、
LDFLAGS="-L/usr/local/lib -lintl" \ ./configure
LDFLAGSが必要らしい。で、今度は、
make
できてしまう。しかし、
sudo make install
とやると、今度は、以下のエラーになる。
libtool: install: /usr/bin/install -c .libs/libntfs-3g.a /usr/local/lib/libntfs-3g.a libtool: install: chmod 644 /usr/local/lib/libntfs-3g.a libtool: install: ranlib /usr/local/lib/libntfs-3g.a if [ ! "/lib" -ef "/usr/local/lib" ]; then \ /bin/mv -f "//usr/local/lib"/libntfs-3g.so* "//lib"; \ fi mv: rename //usr/local/lib/libntfs-3g.so* to //lib: No such file or directory make[3]: *** [install-exec-hook] Error 1 make[2]: *** [install-exec-am] Error 2 make[1]: *** [install-am] Error 2 make: *** [install-recursive] Error 1
これも、ググってみると、
- ntfs-3gに含まれるFUSEは、macOSをサポートしない。外部FUSE(macFUSE)を使うように明示する必要がある。
-
macOSでは、
/lib
が存在せず、かつSIPによって作ることができない。–exec-prefix
を設定する必要がある。
事が分かる。結果として、
LDFLAGS="-L/usr/local/lib -lintl" \ ./configure \ --exec-prefix=/usr/local \ --with-fuse=external
が、macOSでの最終的なコンフィギュアオプションになるらしい。
今度こそ!
と念じつつ…。make sudo make install
とやると…やっと、コンパイル及びインストールができた!
以上、敢えてエラーになった部分も書いてきたが、正しい手順をまとめると、次のようになる。
curl -LO https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2022.10.3.tgz tar xf ntfs-3g_ntfsprogs-2022.10.3.tgz cd ntfs-3g_ntfsprogs-2022.10.3 LDFLAGS="-L/usr/local/lib -lintl" \ ./configure \ --exec-prefix=/usr/local \ --with-fuse=external make sudo make install
[NTFSのマウント手順]
やっとの思いで、インストールできたNTFS-3Gだが、NTFSフォーマットの外付けドライブを、書き込み可能でマウントするには、一工夫が必要だった。以下に、それをログる。
-
diskutilによるdisk番号の把握
ターミナル.appで、以下のコマンドを実行する。diskutil list
出力例(抜粋):
/dev/disk4 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *500.3 GB disk4 1: EFI EFI 209.7 MB disk4s1 2: Microsoft Basic Data OWC-Envoy-Pro 500.1 GB disk4s2
-
マウントをトライしてみる
mount -t ntfs-3g /dev/disk4 /Volumes/OWC-Envoy-Pro
エラーになる
mount: /Volumes/OWC-Envoy-Pro: invalid file system.
ntfs-3gで直接トライする
ntfs-3g /dev/disk4 /Volumes/OWC-Envoy-Pro
Unprivileged user can not mount NTFS block devices using the external FUSE library. Either mount the volume as root, or rebuild NTFS-3G with integrated FUSE support and make it setuid root. Please see more information at https://github.com/tuxera/ntfs-3g/wiki/NTFS-3G-FAQ
また怒られた…。
sudo ntfs-3g /dev/disk4 /Volumes/OWC-Envoy-Pro
NTFS signature is missing. Failed to mount '/dev/disk4': Invalid argument The device '/dev/disk4' doesn't seem to have a valid NTFS. Maybe the wrong device is used? Or the whole disk instead of a partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
ここへ来て、やっとディスク番号の指定ミスに気付く
sudo ntfs-3g /dev/disk4s2 /Volumes/OWC-Envoy-Pro
The disk contains an unclean file system (0, 0). The file system wasn't safely closed on Windows. Fixing.
何か言ってるけど、マウントされた!
mountコマンドを介すると…。
sudo mount -t ntfs-3g -o auto_xattr /dev/disk4s2 /Volumes/OWC-Envoy-Pro
mount: /Volumes/OWC-Envoy-Pro: invalid file system.
やっぱりダメだ!
-
書き込みのトライ
マウントされたようなので、書き込みをトライしてみると…。Finderが100102エラーを返した。
これは、上記リンクの2番目の答えが解決してくれた。すなわち、
sudo ntfs-3g -o auto_xattr /dev/disk4s2 /Volumes/OWC-Envoy-Pro
最終形は…。
mkdir -p .mnt/OWC-Envoy-Pro sudo ntfs-3g -o auto_xattr,volname="OWC-Envoy-Pro" /dev/disk4s2 ~/.mnt/OWC-Envoy-Pro
- 以降は、Mounty for NTFSに任せたほうが楽である。
[参考サイト]
- FUSE(Filesystem in Userspace)
- Home – macFUSE
- macOSデフォルトでは対応していないサードパーティのファイルシステムを利用できるようにする「macFUSE」がApple Siliconをサポート。
- Compiling on macOS BigSur · Issue #5 · tuxera/ntfs-3g · GitHub
- [macOS] building errors · Issue #8 · tuxera/ntfs-3g · GitHub
- 14.04 – Can't mount NTFS drive – "NTFS signature is missing." – Ask Ubuntu
- macos – Using NTFS-3G to write to an external hard drive results in error code 100102 – Ask Different
- Mounty for NTFS
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント