ext4ファイルシステムをOS Xにマウントするにはどうすればよいですか?


131

Mac OS Xでext4ファイルシステムの読み取りと書き込みを行うための安全で安定したアプリケーションはありますか?

そうでない場合、Mac OS X上のext4ファイルシステムのコンテンツにアクセスする最良の方法は何ですか?


実行しているOS Xのバージョンを指定しておくと便利です。OSのリビジョンによっては、利用可能なソリューションとの互換性の問題があります。
kopischke

回答:


60

答えは、商用ソフトウェアに投資する意思に依存します。

商用製品にお金をかけることを気にしないのであればParagonのextFS for Macはext2 / ext3 / ext4ファイルシステムへの読み取りおよび書き込みアクセスを提供します。現在のバージョンは、10.10以降のOS X / macOSのすべてのバージョンをサポートしています。

無料のソリューションを探している場合は、Linux仮想マシンをセットアップし、そこにボリュームをマウントして、Sambaまたは(S)FTPを介して共有することができます。この投稿には、無料の仮想マシンアプリケーションであるVirtualBoxを使用してこれを実現する方法に関する詳細が記載されています。これは、ビルド済みのVirtualBox VMを使用してLinuxディストリビューションを最初からインストールおよび構成する必要がない場合でも、正確な軽量ソリューションではないことに注意してください。


2
確かに無料のnonvmソリューションはありますか?
17

osboxes.orgは、virtualboxes.orgより新しいバージョンを提供します。
ティム

36

Kenの答えに基づいて:私はfuse4xfuse-ext2を正常に使用しました。ext4fuseよりfuse-ext2をお勧めします。

ext4fuseは手作業でコンパイルする必要があり、アクセス制御を設定できるfuse4xオプションをサポートしていないため、手間がかかりました。fuse-ext2はダウンロード可能なパッケージを提供し、0.0.7バージョンは問題なく機能しました。問題なくいくつかの大きなISOをコピーしました。


fuse-ext2を書き込み可能または読み取り専用としてマウントできますか?
knocte

25

brewコマンドラインパッケージマネージャーを使用してOSXFUSEを完全にインストールすることもできます。

brew install homebrew/fuse/ext4fuse

インストールでは、これに加えて特定のコマンドを「sudo」として実行する必要があることが示されていることに注意してください。


ヨセミテでこれをよく見てください。そして、ディレクトリが行うことによって、ユーザーが読み取り可能であることを確認し、これを。それが機能するためには、次のようにホイールグループを使用する必要がありました。

sudo dscl . append /Groups/wheel GroupMembership $(whoami)

18

homebrewの最近の変更により、これは次のように簡単になります。

brew cask install osxfuse
brew install ext4fuse

再起動が必要な場合があります。

ext4fuseは、残念ながら読み取り専用です。また、フラグ使用して、通常のユーザーとして機能させる必要がある場合があります。

この質問を見ている他の人はlibguestfsに興味があるかもしれません。OS Xの移植については知りませんが、VirtualBoxにはAPIがあることを考えると、それは問題ではありません。

Linuxカーネルファイルシステムコードをユーザースペース/ヒューズで実行できるようにする互換性レイヤーを誰も書いていないのはなぜだろうか。または誰かがいますか?


10

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機能に問題があることがわかったため、代わりにext4fuseport 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 mntext4fuse /dev/diskXsY mntls -la mntsudoを/ルートなし。
ティモシーゾン

マウント:用... EXEC /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2:そのようなファイルやディレクトリはありませんが
ヴォルフガングFahl

9

記録のために、MacBook ProでParagon ExtFSドライバー(試用版)をテストして、Linuxのext4パーティションに書き込みました。ドライバーは非常に不安定で、fsckLinuxでもディスクユーティリティでも修復できないファイルシステムの破損を引き起こしました。

私の考えは、/homeこのParagonドライバーを使用してMac OS Xから私のパーティションにアクセスできるようにすることでしたが、このセットアップを行うことはお勧めしません。これまでのところ、ジャーナリングなしで/homeフォーマットされたLinuxのパーティションを持っているのでhfsplus、Mac OS Xからファイルにアクセスできます。もちろん、時々FSで問題が発生しますが、それほど頻繁ではありません。ただし、このセットアップもお勧めしません(少なくとも、毎日の作業のために最新のバックアップがあることを確認してください)。

最後に、Paragonは外付けハードディスクに使用するのに適していると思いますが、とにかくライセンスが高価なソフトウェアであるという点ではあまり信頼性がありません。

更新: 2015年5月現在、/ homeをext4にフォーマットし、fuse-ext2とOS XのFUSEを組み合わせてファイルシステムをマウントしています。ext4パーティションにアクセスして読み書きできます。前に説明したものよりもしっかりしたセットアップです。


ここで、Paragon ExtFSドライバーがLinuxドライブで何らかの問題を引き起こす可能性がある最後のエントリを確認できます。OSXとLinuxをデュアルブートしている私にとって、paragonは/デバイスで破損を作成しました。これは、解決するのは簡単だったが、しかし...安定な溶液をないthatsの

Paragon ExtFSドライバーのさらに悪い経験。一貫したカーネルパニックにより、システムの再起動、ファイルシステムの破損が発生します(幸運なことに、Linuxボックスのfsckは機能しました)。2つの異なる外部ドライブで同じ結果を試しました。

9

Vagrantを使用して、OS XでLinux VMをすばやく起動できます。サイトから.dmgファイルを使用するか、brew caskを使用して、VirtualBoxVagrantなどのVMプロバイダーをインストールする必要があります。

vagrantコマンドをインストールしたら、選択したフォルダーでこれを実行します。

vagrant init ubuntu/trusty64; vagrant up --provider virtualbox

これにより、構成Vagrantfileファイルと.vagrantフォルダーが生成されます。

数分以内にLinuxボックスが起動します(Atlas Hashicorpリポジトリからダウンロードされます)。

そして、ボックスに接続するコマンドを使って:vagrant sshあなたのデバイスをマウントしようと Linuxの内側。

デフォルトでは、現在のフォルダーは/vagrantVM内のフォルダーと同期されます。より高度なオプションについてはVagrantfile、必要な構成で変更できます。

そのため、ファイルシステムを/vagrantフォルダー内にマウントすると、自動的にmacOSに同期されます。


または、VirtualBoxをインストールし、GUIアプリを実行し、Linuxの最小バージョン(Ubuntuなど)をインストールして起動するだけで、上記で説明したのと同じことを実現できます。


上記の非ネイティブソリューションは理想的ではありませんが、少なくとも多くのシステムクラッシュを引き起こす可能性のある不安定なカーネル拡張機能をインストールするよりも、少なくともmacOSはより安定しています。


vagrant init ubuntu/xenial64; vagrant up --provider virtualboxas ubuntu/vivid64を使用したランはもう使用できません。
フレドリクアーランソン

ubuntu/trusty64代わりに使用してみてください。
ケノーブ

8

osxfuseをインストールした後、ext4でフォーマットされたUSBドライブをマウントできました。それから読むことはうまくいきますが、書き込みが安全かどうかはわかりません。

また、ファイルをOS Xのファイルシステム(HFS +)からext4に移動する場合、OS Xファイルシステムが不正なiノードを引き起こすことがあるため、まずこれらの隠し.DS_Storeファイル削除することをお勧めします

find /my/data/to/move -name '*.DS_Store' -type f -delete

fsckコマンドを使用して修正するよりも優れています。


7

(高)Sierraの回答を更新

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

Yosemite以前の元の回答(非推奨)

OSXでEXT2 / 3/4サポートを有効にするには、OSXFUSEFUSE-EXT2の 2つのパッケージが必要です。

OSXFUSEとFUSE-EXT2 の自作式は、マーベリックでもヨセミテでも機能しませんでした。

効果があったのは次のとおりです。

  1. http://osxfuse.github.io/からOSXFUSE DMGを手動でダウンロードしてインストールします。重要:PKGインストーラーを起動したら、ウィザードでMacFUSE互換性レイヤーを選択していることを確認してください(デフォルトでは有効になっていません)-これがないと、マウントしようとしたときにエラーが発生しました。
  2. FUSE-EXT2をhttp://sourceforge.net/projects/fuse-ext2/から、またはSierra / El Capitanの場合はhttps://github.com/gpz500/fuse-ext2/releasesから手動でダウンロードし、PKGインストーラーを実行します

OSXFUSEとFUSE-EXT2の両方をインストールしたら、他の回答に記載されているようにext2 / ext3 / ext4パーティションをマウントできます。

  1. マウントする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

  2. パーティションを既存のマウントポイントにマウントします。

    sudo mkdir -p /Volumes/ext4 sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4

通常のユーザーとしてマウントしてもうまくいきませんでした。おそらくこれはパーミッションをいじることで修正できるかもしれませんが、私はそれを調査しませんでした。

注:私の疑いは、homebrew osxfuseMacFUSE互換性レイヤーなしでインストールされるため、homebrewの数式が機能しなかったことです。

osxfusehomebrewには2つのパッケージがあります。

# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse

どちらのバージョンもEXTパーティションのマウントに失敗します。ほとんどのCaskroom/cask/osxfuse場合、homebrewはデフォルト設定でパッケージをインストールするため、DMGバージョン()は失敗します。これは、MacFUSE互換性レイヤーが含まれていないことを意味します。メインosxfuseバージョンでは、おそらくMacFUSEの互換性を有効にするために特別なインストールパラメーターが必要になるため、homebrewで修正されるまで、手動のDMGメソッドを使用する必要があります。

この方法は、マーベリック、ヨセミテ、エルカピタン、およびシエラで有効でした。

古いOSXバージョンのEXT2 / 3/4マウントスクリプト(非推奨)

余分な入力を節約するために、次のようなパーティション名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


1
これを試してみましたが、残念ながらエラーFUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:が発生します(ただし、問題の説明や参照はありません)。Compability Layerアドオンをインストールしました。私はmacOS Sierraにいるので、Github gzp500バージョンを試してみました。
Winterflags

6

MacPortsで利用可能なe2fsprogsもあります。私はまだ自分でテストしていませんが、有望に見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.