Answers:
答案取决于您是否愿意投资商业软件:
如果您不介意在商业产品上花一些钱,Paragon的Mac版extFS将为您提供对ext2 / ext3 / ext4文件系统的读写权限。当前版本支持从10.10开始的所有OS X / macOS版本。
如果您正在寻找免费解决方案,您可以设置Linux虚拟机,在那里安装卷并通过Samba或(S)FTP 共享它们。这篇文章详细介绍了如何使用免费虚拟机应用程序VirtualBox实现这一目标。请注意,这不是一个轻量级的解决方案,即使使用预先构建的VirtualBox VM也可以免于从头开始安装和配置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
它可能会抱怨无法写入日志文件,但仍应将分区挂载到您的主挂载点。但是如果要将分区挂载到系统目录中,则需要以root身份运行它,例如:
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
如果你在主目录之外安装或者只能由root访问磁盘(/ 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和FUSE for OS X挂载文件系统。我可以访问ext4分区进行读写。它比我之前描述的设置更稳固。
您可以使用Vagrant在OS X上快速启动Linux VM。您需要通过站点中的.dmg文件或使用brew cask安装VM提供程序,如VirtualBox和Vagrant。
一旦你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
作为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。
对于我来说,OSXFUSE和FUSE-EXT2 的自制公式对我来说都不适用于小牛队或优胜美地。
做了以下工作:
一旦安装了OSXFUSE和FUSE-EXT2,就可以安装ext2 / ext3 / ext4分区,如其他答案中所述:
找到要安装的EXT分区的设备名称(例如disk0s2
,在下面的示例中,(UPDATE)在以后的MacOS版本中,ext3 / ext4分区可能标记为Microsoft Basic Data而不是Linux):
# 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
作为普通用户安装对我不起作用。可能这可以通过摆弄权限来修复,但我没有调查它。
注意:我怀疑自制的公式不起作用,因为自制软件安装osxfuse
没有MacFUSE兼容层。
osxfuse
自制软件包有两个包:
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
两个版本都无法安装EXT分区。最有可能的是,DMG版本(Caskroom/cask/osxfuse
)失败,因为自制软件程序使用默认设置安装软件包,这意味着不包括MacFUSE兼容性层。主osxfuse
版本可能需要一些特殊的安装参数才能启用MacFUSE兼容性,因此在自制程序中修复此问题之前,应使用手动DMG方法。
这种方法适用于我的小牛队,优胜美地,elcapitan和山脉。
为了节省一些额外的输入,我使用一个小脚本,它接受分区名称,如下所示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版。