回答:
答えは、商用ソフトウェアに投資する意思に依存します。
商用製品にお金をかけることを気にしないのであれば、ParagonのextFS for Macはext2 / ext3 / ext4ファイルシステムへの読み取りおよび書き込みアクセスを提供します。現在のバージョンは、10.10以降のOS X / macOSのすべてのバージョンをサポートしています。
無料のソリューションを探している場合は、Linux仮想マシンをセットアップし、そこにボリュームをマウントして、Sambaまたは(S)FTPを介して共有することができます。この投稿には、無料の仮想マシンアプリケーションであるVirtualBoxを使用してこれを実現する方法に関する詳細が記載されています。これは、ビルド済みのVirtualBox VMを使用してLinuxディストリビューションを最初からインストールおよび構成する必要がない場合でも、正確な軽量ソリューションではないことに注意してください。
Kenの答えに基づいて:私はfuse4xとfuse-ext2を正常に使用しました。ext4fuseよりfuse-ext2をお勧めします。
ext4fuseは手作業でコンパイルする必要があり、アクセス制御を設定できるfuse4xオプションをサポートしていないため、手間がかかりました。fuse-ext2はダウンロード可能なパッケージを提供し、0.0.7バージョンは問題なく機能しました。問題なくいくつかの大きなISOをコピーしました。
brewコマンドラインパッケージマネージャーを使用してOSXFUSEを完全にインストールすることもできます。
brew install homebrew/fuse/ext4fuse
インストールでは、これに加えて特定のコマンドを「sudo」として実行する必要があることが示されていることに注意してください。
ヨセミテでこれをよく見てください。そして、ディレクトリが行うことによって、ユーザーが読み取り可能であることを確認し、これを。それが機能するためには、次のようにホイールグループを使用する必要がありました。
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
homebrewの最近の変更により、これは次のように簡単になります。
brew cask install osxfuse
brew install ext4fuse
再起動が必要な場合があります。
ext4fuseは、残念ながら読み取り専用です。また、フラグを使用して、通常のユーザーとして機能させる必要がある場合があります。
この質問を見ている他の人はlibguestfsに興味があるかもしれません。OS Xの移植については知りませんが、VirtualBoxにはAPIがあることを考えると、それは問題ではありません。
Linuxカーネルファイルシステムコードをユーザースペース/ヒューズで実行できるようにする互換性レイヤーを誰も書いていないのはなぜだろうか。または誰かがいますか?
fuseとext2fuseを使用してext4パーティションをマウントするためのコマンドラインが何なのか疑問に思っている場合(たとえば、MacPortsを使用してインストールする場合port install ext2fuse
)-まず、Linuxパーティションの場所を特定する必要があります。
diskutil list
これにより、すべてのディスクのすべてのパーティションが一覧表示され、その中で、TYPE列の下にLinuxとして一覧表示された関連するパーティションが表示されます。この/ dev / diskXsYのようにdiskXとパーティション番号Yを組み合わせます-例:
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
ログファイルに書き込めないというエラーが表示される場合がありますが、パーティションをホームマウントポイントにマウントする必要があります。ただし、パーティションをシステムディレクトリにマウントする場合は、ルートとして実行する必要があります。例:
sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point
それがうまくいかない場合は試してください:
sudo ext2fuse /dev/disk1s2 /sys_mount_point
更新:最近、fuse-ext2には特定の新しいext4機能に問題があることがわかったため、代わりにext4fuse(port install ext4fuse
またはbrew install ext4fuse
)を使用することをお勧めします。ext4fuseコマンドを直接使用します。
ext4fuse /dev/disk1s2 ~/mount_point
また、Timothyがコメントで述べたように、通常はsudo
ホームディレクトリの外にマウントするか、ディスク(/ dev / diskX)がルートからのみアクセスできる場合にのみ使用する必要があります。
sudo ext4fuse /dev/disk1s2 /sys_mount_point
マウントされたファイルシステムにはroot / sudoとしてのみアクセスできることに注意してください。例えば
sudo ls /sys_mount_point
ファイルシステムをアンマウントするには、通常のumount
コマンドを使用します(パーティションのマウントに使用する場合はsudoを使用)。
umount ~/mount_point
cd ~
、mkdir mnt
、ext4fuse /dev/diskXsY mnt
、ls -la mnt
sudoを/ルートなし。
記録のために、MacBook ProでParagon ExtFSドライバー(試用版)をテストして、Linuxのext4パーティションに書き込みました。ドライバーは非常に不安定で、fsck
Linuxでもディスクユーティリティでも修復できないファイルシステムの破損を引き起こしました。
私の考えは、/home
このParagonドライバーを使用してMac OS Xから私のパーティションにアクセスできるようにすることでしたが、このセットアップを行うことはお勧めしません。これまでのところ、ジャーナリングなしで/home
フォーマットされたLinuxのパーティションを持っているのでhfsplus
、Mac OS Xからファイルにアクセスできます。もちろん、時々FSで問題が発生しますが、それほど頻繁ではありません。ただし、このセットアップもお勧めしません(少なくとも、毎日の作業のために最新のバックアップがあることを確認してください)。
最後に、Paragonは外付けハードディスクに使用するのに適していると思いますが、とにかくライセンスが高価なソフトウェアであるという点ではあまり信頼性がありません。
更新: 2015年5月現在、/ homeをext4にフォーマットし、fuse-ext2とOS XのFUSEを組み合わせてファイルシステムをマウントしています。ext4パーティションにアクセスして読み書きできます。前に説明したものよりもしっかりしたセットアップです。
Vagrantを使用して、OS XでLinux VMをすばやく起動できます。サイトから.dmgファイルを使用するか、brew caskを使用して、VirtualBoxやVagrantなどのVMプロバイダーをインストールする必要があります。
vagrant
コマンドをインストールしたら、選択したフォルダーでこれを実行します。
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
これにより、構成Vagrantfile
ファイルと.vagrant
フォルダーが生成されます。
数分以内にLinuxボックスが起動します(Atlas Hashicorpリポジトリからダウンロードされます)。
そして、ボックスに接続するコマンドを使って:vagrant ssh
とあなたのデバイスをマウントしようと Linuxの内側。
デフォルトでは、現在のフォルダーは/vagrant
VM内のフォルダーと同期されます。より高度なオプションについてはVagrantfile
、必要な構成で変更できます。
そのため、ファイルシステムを/vagrant
フォルダー内にマウントすると、自動的にmacOSに同期されます。
または、VirtualBoxをインストールし、GUIアプリを実行し、Linuxの最小バージョン(Ubuntuなど)をインストールして起動するだけで、上記で説明したのと同じことを実現できます。
上記の非ネイティブソリューションは理想的ではありませんが、少なくとも多くのシステムクラッシュを引き起こす可能性のある不安定なカーネル拡張機能をインストールするよりも、少なくともmacOSはより安定しています。
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
as ubuntu/vivid64
を使用したランはもう使用できません。
ubuntu/trusty64
代わりに使用してみてください。
SierraおよびHigh Sierra では、ext4fuseは読み取りアクセスでのみ機能するようであるため、おそらく優先オプションと見なすことができます。他の回答はすでにいくつかの使用例を示していますが、いくつかの重要な詳細でもう一度繰り返します。
ext4fuseのインストール:
brew install ext4fuse
通常のユーザーとしてマウントできますが、その場合は、誰でも読み取り可能なファイルにしかアクセスできません。そのため、フルアクセスにはを使用する必要がありますsudo
。例:
sudo ext4fuse -o allow_other /dev/disk2s1
以下は、プロセスを部分的に自動化するbashスクリプトです。起動すると、disk2s1
次のような表示されたデバイス識別子のいずれかを入力するように求められたら、マウントポイントが自動的に作成されます。
diskutil list
read -p "Please type the EXT4 device identifier: " disk_id
MOUNT_POINT=~/mnt/$disk_id
mkdir -p ${MOUNT_POINT}
sudo ext4fuse -o allow_other /dev/$disk_id ${MOUNT_POINT}
echo "***TO UNMOUNT USE***: 'diskutil umount ${MOUNT_POINT}'"
open ${MOUNT_POINT}
アンマウントするには、たとえば、次を使用できます。diskutil umount /dev/disk2s1
アンマウントに失敗したというメッセージが表示された場合は、強制的にアンマウントできdiskutil umount force /dev/disk2s1
ますが、ディスク上のファイルを使用しているアプリを閉じて、なしでアンマウントを再試行する方がクリーンですforce
。
ファイルを所有している場合_lpoperator
(グループを保持するオプションでrsyncを使用すると、明らかにファイルが作成されます)、次のコマンドを使用してそれらのファイルにアクセスできます。
/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator
OSXでEXT2 / 3/4サポートを有効にするには、OSXFUSEとFUSE-EXT2の 2つのパッケージが必要です。
OSXFUSEとFUSE-EXT2 の自作式は、マーベリックでもヨセミテでも機能しませんでした。
効果があったのは次のとおりです。
OSXFUSEとFUSE-EXT2の両方をインストールしたら、他の回答に記載されているようにext2 / ext3 / ext4パーティションをマウントできます。
マウントするEXTパーティションのデバイス名を見つけます(たとえばdisk0s2
、次の例では、MacOSの新しいバージョンでは(UPDATE)ext3 / ext4パーティションにはLinuxではなくMicrosoft Basic Dataというラベルが付いている場合があります)。
# diskutil list | grep Linux
1: Linux_Swap 8.2 GB disk0s1
2: Linux 119.9 GB disk0s2
パーティションを既存のマウントポイントにマウントします。
sudo mkdir -p /Volumes/ext4
sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4
通常のユーザーとしてマウントしてもうまくいきませんでした。おそらくこれはパーミッションをいじることで修正できるかもしれませんが、私はそれを調査しませんでした。
注:私の疑いは、homebrew osxfuse
がMacFUSE互換性レイヤーなしでインストールされるため、homebrewの数式が機能しなかったことです。
osxfuse
homebrewには2つのパッケージがあります。
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
どちらのバージョンもEXTパーティションのマウントに失敗します。ほとんどのCaskroom/cask/osxfuse
場合、homebrewはデフォルト設定でパッケージをインストールするため、DMGバージョン()は失敗します。これは、MacFUSE互換性レイヤーが含まれていないことを意味します。メインosxfuse
バージョンでは、おそらくMacFUSEの互換性を有効にするために特別なインストールパラメーターが必要になるため、homebrewで修正されるまで、手動のDMGメソッドを使用する必要があります。
この方法は、マーベリック、ヨセミテ、エルカピタン、およびシエラで有効でした。
余分な入力を節約するために、次のようなパーティション名disk0s2
を取得し/Volumes/disk0s2
、必要に応じてフォルダーを作成する小さなスクリプトを使用します。
### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"
スクリプトはdiskutil list
、たとえばを介してルックアップするパーティション名で呼び出されますmount_ext4.sh disk2s3
。
FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:
が発生します(ただし、問題の説明や参照はありません)。Compability Layerアドオンをインストールしました。私はmacOS Sierraにいるので、Github gzp500バージョンを試してみました。