Было бы более полезно, если бы вы указали, какую версию OS X вы используете. Существуют проблемы совместимости с доступными решениями в зависимости от версии ОС.
копище
Ответы:
60
Ответ зависит от вашей готовности инвестировать в коммерческое программное обеспечение:
Если вы не возражаете тратить деньги на коммерческий продукт , Paragon в ExtFS для Mac даст вам доступ к чтению и ext2 / ext3 файлов / ext4 систем писать. Текущая версия поддерживает все версии OS X / macOS от 10.10 и выше.
Если вы ищете бесплатное решение , вы можете настроить виртуальную машину Linux, смонтировать там свои тома и поделиться ими / ими через Samba или (S) FTP. В этом посте есть некоторые подробности о том, как этого добиться, используя VirtualBox , бесплатное приложение виртуальной машины. Обратите внимание, что это не совсем легкое решение, даже если использование готовой виртуальной машины VirtualBox избавит вас от установки и настройки дистрибутива Linux с нуля.
osboxes.org предоставляет более новые версии по сравнению с virtualboxes.org.
Tim
36
Опираясь на ответ Кена: я успешно использовал fuse4x и fuse-ext2 , и я рекомендую использовать fuse-ext2 вместо ext4fuse.
Ext4fuse был для меня хлопотом, потому что он требует ручной компиляции и не поддерживает опции fuse4x, которые позволили бы мне установить контроль доступа. fuse-ext2 предоставляет загружаемые пакеты, а версия 0.0.7 работала просто отлично. Я скопировал несколько больших ISO-файлов без каких-либо проблем.
может ли fuse-ext2 монтировать вещи как доступные для записи или только для чтения?
knocte
25
Также можно полностью установить OSXFUSE через менеджер пакетов командной строки brew :
brew install homebrew/fuse/ext4fuse
Обратите внимание, что при установке сообщается, что некоторые команды необходимо запускать как «sudo» в дополнение к этому.
С Йосемити лучше взглянуть на это . Затем убедитесь, что ваш пользователь может прочитать этот каталог . Чтобы это работало, я должен был использовать группу колес вот так:
Другие, просматривающие этот вопрос, могут быть заинтересованы в libguestfs . Я не знаю о порте OS X, но, учитывая, что VirtualBox имеет API, это не исключено.
Интересно, почему никто не написал слой совместимости, позволяющий запускать код файловой системы ядра Linux в userspace / fuse. Или есть кто-то?
Если вам интересно, что такое командная строка для монтирования раздела ext4 с использованием fuse и ext2fuse (например, при установке с использованием MacPorts port install ext2fuse) - тогда, во-первых, вам нужно выяснить, где находится раздел Linux:
diskutil list
Это перечислит все разделы для всех дисков, и среди них вы должны увидеть соответствующие разделы, перечисленные в столбце TYPE как Linux. Объедините diskX и номер раздела Y следующим образом / dev / diskXsY - например:
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
Также, как отметил Тимоти в комментариях, вам обычно нужно использовать только sudoесли вы монтируете за пределами вашего домашнего каталога или диск (/ dev / diskX) доступен только root:
sudo ext4fuse /dev/disk1s2 /sys_mount_point
Следует отметить, что вы можете получить доступ только к этой смонтированной файловой системе как root / sudo. например
sudo ls /sys_mount_point
А для размонтирования файловой системы вы просто используете обычную umountкоманду (с sudo, если она используется для монтирования раздела):
Вам нужно получить доступ к диску как root, если вы монтируете его вне вашей домашней директории. Вы можете cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntбез SUDO / корень.
Тимоти Цорн
mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 для ...: Нет такого файла или каталога
Вольфганг
9
Для справки: на моем MacBook Pro я протестировал драйвер Paragon ExtFS (пробная версия) для записи в раздел ext4 в Linux. Я обнаружил, что драйвер был очень нестабильным, и это приводило к повреждению файловой системы, которую fsckне удалось исправить ни в Linux, ни в Disk Utility.
Моя идея состояла в том, чтобы получить доступ к моему /homeразделу из Mac OS X с помощью этого драйвера Paragon, но я не предлагаю делать эту настройку. Пока что мой /homeраздел в Linux отформатирован hfsplusбез ведения журнала, и затем я могу получить доступ к своим файлам из Mac OS X. Конечно, время от времени у меня возникают некоторые проблемы с моей FS, но это происходит не очень часто. Однако я не предлагаю эту настройку (по крайней мере, у вас есть актуальная резервная копия для вашей повседневной работы).
Наконец, я считаю, что Paragon более подходит для внешних жестких дисков, но в любом случае он не очень надежен для программного обеспечения, лицензия которого стоит дорого.
Обновление: по состоянию на май 2015 года я отформатировал мой / home в ext4, и я смонтировал файловую систему с помощью fuse-ext2 в сочетании с FUSE для OS X. Я могу получить доступ к разделу ext4 для чтения и записи. Это более надежная настройка, чем та, которую я описал выше.
Я могу подтвердить последнюю запись здесь, где драйвер Paragon ExtFS может создать некоторые проблемы на ваших Linux-дисках. Для меня, который выполняет двойную загрузку OSX и Linux, Paragon создал повреждения на моем устройстве. Это было легко решить, но это не стабильное решение ...
Дальнейший неудачный опыт работы с драйвером Paragon ExtFS. Постоянная паника ядра, приводящая к перезагрузке системы, повреждению файловой системы (к счастью, fsck на Linux box работал). Пробовал на двух разных внешних дисках с одинаковыми результатами.
9
Вы можете быстро загрузить виртуальную машину Linux на OS X, используя Vagrant . Вам необходимо установить VM провайдера, такого как VirtualBox и Vagrant, либо через файл .dmg с сайта, либо с помощью brew cask .
После того, как вы установили vagrantкоманду, запустите ее в любой выбранной папке:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Это создаст Vagrantfileфайл конфигурации и .vagrantпапку.
и через несколько минут загрузится Linux box (скачанный из репозитория Atlas Hashicorp ).
Затем подключитесь к коробке с помощью команды: vagrant sshи попробуйте смонтировать устройство в Linux.
По умолчанию ваша текущая папка будет синхронизирована с /vagrantпапкой в ВМ. Для более продвинутых опций, вы можете изменить Vagrantfileс необходимой конфигурацией.
Поэтому, если вы смонтируете свою файловую систему в /vagrantпапке, она будет автоматически синхронизирована с вашей macOS.
В качестве альтернативы вам просто нужно установить VirtualBox , запустить приложение с графическим интерфейсом, установить и загрузить минимальную версию Linux, например Ubuntu , чтобы добиться того же, что описано выше.
Приведенные выше неродные решения не идеальны, но, по крайней мере, ваша macOS будет более стабильной, чем установка нестабильных расширений ядра, которые могут вызвать множество сбоев системы.
Побежал с vagrant init ubuntu/xenial64; vagrant up --provider virtualboxas ubuntu/vivid64больше не доступно.
Фредрик Эрландссон
Попробуйте использовать ubuntu/trusty64вместо этого.
kenorb
8
У меня был USB-накопитель в формате ext4, который я смог смонтировать после установки osxfuse . Чтение из него прекрасно работает, но я не уверен, безопасно ли писать.
Для Sierra и High Sierra 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
Оригинальный ответ для Йосемити и старше (не рекомендуется)
Для включения поддержки EXT2 / 3/4 в OSX необходимы два пакета: OSXFUSE и FUSE-EXT2 .
В доморощенных формулах для OSXFUSE и FUSE-EXT2 не работают для меня либо на индивидуалистах или Йосемити.
То, что работало, было следующим:
Вручную загрузите и установите OSXFUSE DMG с http://osxfuse.github.io/ . ВАЖНО : После запуска установщика PKG убедитесь, что в мастере выбран уровень совместимости MacFUSE (по умолчанию он не включен) - без него при попытке монтирования я получал ошибку.
После установки 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
Монтаж как обычный пользователь у меня не работал. Возможно, это можно исправить, поигравшись с разрешениями, но я не рассматривал это.
Примечание. Я подозреваю, что формулы homebrew не сработали, поскольку homebrew устанавливается osxfuseбез слоя совместимости MacFUSE .
Обе версии не могут монтировать разделы EXT. Скорее всего, версия DMG ( Caskroom/cask/osxfuse) дает сбой, потому что homebrew устанавливает пакет с настройками по умолчанию, что означает, что уровень совместимости MacFUSE не включен. Основная osxfuseверсия, вероятно, нуждается в каком-то особом параметре установки, чтобы включить совместимость с MacFUSE, поэтому до тех пор, пока это не будет исправлено в homebrew, следует использовать метод DMG вручную.
Этот метод работал для меня на Маверикс, Йосемити, Элькапитан и Сьерра.
Сценарий монтирования EXT2 / 3/4 для более старых версий OSX (устарело)
Чтобы сэкономить лишний набор текста, я использую крошечный скрипт, который берет имя раздела, например, 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:(но нет описания проблемы или ссылки). Я установил аддон уровня совместимости. Я на macOS Sierra, поэтому попробовал версию Github GZP500.
Winterflags
6
В MacPorts есть также e2fsprogs. Я еще не проверял это сам, но выглядит многообещающим.
Ответы:
Ответ зависит от вашей готовности инвестировать в коммерческое программное обеспечение:
Если вы не возражаете тратить деньги на коммерческий продукт , Paragon в ExtFS для Mac даст вам доступ к чтению и ext2 / ext3 файлов / ext4 систем писать. Текущая версия поддерживает все версии OS X / macOS от 10.10 и выше.
Если вы ищете бесплатное решение , вы можете настроить виртуальную машину Linux, смонтировать там свои тома и поделиться ими / ими через Samba или (S) FTP. В этом посте есть некоторые подробности о том, как этого добиться, используя VirtualBox , бесплатное приложение виртуальной машины. Обратите внимание, что это не совсем легкое решение, даже если использование готовой виртуальной машины VirtualBox избавит вас от установки и настройки дистрибутива Linux с нуля.
источник
Опираясь на ответ Кена: я успешно использовал fuse4x и fuse-ext2 , и я рекомендую использовать fuse-ext2 вместо ext4fuse.
Ext4fuse был для меня хлопотом, потому что он требует ручной компиляции и не поддерживает опции fuse4x, которые позволили бы мне установить контроль доступа. fuse-ext2 предоставляет загружаемые пакеты, а версия 0.0.7 работала просто отлично. Я скопировал несколько больших ISO-файлов без каких-либо проблем.
источник
Также можно полностью установить OSXFUSE через менеджер пакетов командной строки brew :
Обратите внимание, что при установке сообщается, что некоторые команды необходимо запускать как «sudo» в дополнение к этому.
С Йосемити лучше взглянуть на это . Затем убедитесь, что ваш пользователь может прочитать этот каталог . Чтобы это работало, я должен был использовать группу колес вот так:
источник
С недавними изменениями в homebrew это должно быть так просто, как:
Возможно, вам придется перезагрузить компьютер.
К сожалению, ext4fuse только для чтения. И вам может понадобиться использовать флаг, чтобы заставить его работать как обычный пользователь.
Другие, просматривающие этот вопрос, могут быть заинтересованы в libguestfs . Я не знаю о порте OS X, но, учитывая, что VirtualBox имеет API, это не исключено.
Интересно, почему никто не написал слой совместимости, позволяющий запускать код файловой системы ядра Linux в userspace / fuse. Или есть кто-то?
источник
Если вам интересно, что такое командная строка для монтирования раздела ext4 с использованием fuse и ext2fuse (например, при установке с использованием MacPorts
port install ext2fuse
) - тогда, во-первых, вам нужно выяснить, где находится раздел Linux:Это перечислит все разделы для всех дисков, и среди них вы должны увидеть соответствующие разделы, перечисленные в столбце TYPE как Linux. Объедините diskX и номер раздела Y следующим образом / dev / diskXsY - например:
Он может жаловаться на невозможность записи в файл журнала, но он все равно должен монтировать раздел в вашу домашнюю точку монтирования. Но если вы хотите смонтировать раздел в системный каталог, вам нужно запустить его как root, например:
Если это не сработает, попробуйте:
Обновление : совсем недавно я обнаружил, что у fuse-ext2 есть проблемы с некоторыми новыми функциями ext4, поэтому вместо него лучше использовать ext4fuse (
port install ext4fuse
илиbrew install ext4fuse
). Используйте команду ext4fuse напрямую:Также, как отметил Тимоти в комментариях, вам обычно нужно использовать только
sudo
если вы монтируете за пределами вашего домашнего каталога или диск (/ dev / diskX) доступен только root:Следует отметить, что вы можете получить доступ только к этой смонтированной файловой системе как root / sudo. например
А для размонтирования файловой системы вы просто используете обычную
umount
команду (с sudo, если она используется для монтирования раздела):источник
cd ~
,mkdir mnt
,ext4fuse /dev/diskXsY mnt
,ls -la mnt
без SUDO / корень.Для справки: на моем MacBook Pro я протестировал драйвер Paragon ExtFS (пробная версия) для записи в раздел ext4 в Linux. Я обнаружил, что драйвер был очень нестабильным, и это приводило к повреждению файловой системы, которую
fsck
не удалось исправить ни в Linux, ни в Disk Utility.Моя идея состояла в том, чтобы получить доступ к моему
/home
разделу из Mac OS X с помощью этого драйвера Paragon, но я не предлагаю делать эту настройку. Пока что мой/home
раздел в Linux отформатированhfsplus
без ведения журнала, и затем я могу получить доступ к своим файлам из Mac OS X. Конечно, время от времени у меня возникают некоторые проблемы с моей FS, но это происходит не очень часто. Однако я не предлагаю эту настройку (по крайней мере, у вас есть актуальная резервная копия для вашей повседневной работы).Наконец, я считаю, что Paragon более подходит для внешних жестких дисков, но в любом случае он не очень надежен для программного обеспечения, лицензия которого стоит дорого.
Обновление: по состоянию на май 2015 года я отформатировал мой / home в ext4, и я смонтировал файловую систему с помощью fuse-ext2 в сочетании с FUSE для OS X. Я могу получить доступ к разделу ext4 для чтения и записи. Это более надежная настройка, чем та, которую я описал выше.
источник
Вы можете быстро загрузить виртуальную машину Linux на OS X, используя Vagrant . Вам необходимо установить VM провайдера, такого как VirtualBox и Vagrant, либо через файл .dmg с сайта, либо с помощью brew cask .
После того, как вы установили
vagrant
команду, запустите ее в любой выбранной папке:Это создаст
Vagrantfile
файл конфигурации и.vagrant
папку.и через несколько минут загрузится Linux box (скачанный из репозитория Atlas Hashicorp ).
Затем подключитесь к коробке с помощью команды:
vagrant ssh
и попробуйте смонтировать устройство в Linux.По умолчанию ваша текущая папка будет синхронизирована с
/vagrant
папкой в ВМ. Для более продвинутых опций, вы можете изменитьVagrantfile
с необходимой конфигурацией.Поэтому, если вы смонтируете свою файловую систему в
/vagrant
папке, она будет автоматически синхронизирована с вашей macOS.В качестве альтернативы вам просто нужно установить VirtualBox , запустить приложение с графическим интерфейсом, установить и загрузить минимальную версию Linux, например Ubuntu , чтобы добиться того же, что описано выше.
Приведенные выше неродные решения не идеальны, но, по крайней мере, ваша macOS будет более стабильной, чем установка нестабильных расширений ядра, которые могут вызвать множество сбоев системы.
источник
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
asubuntu/vivid64
больше не доступно.ubuntu/trusty64
вместо этого.У меня был USB-накопитель в формате ext4, который я смог смонтировать после установки osxfuse . Чтение из него прекрасно работает, но я не уверен, безопасно ли писать.
Кроме того, для перемещения файлов из файловой системы OS X ( HFS + ) в ext4 вы, возможно, сначала захотите удалить те скрытые файлы .DS_Store, в которые проникла файловая система OS X, поскольку они иногда приводят к некорректным inode .
Это лучше, чем исправлять их после команды fsck .
источник
Обновленный ответ для (Высокой) Сьерры
Для Sierra и High Sierra ext4fuse, кажется, хорошо работает только для доступа к чтению, и поэтому его, вероятно, можно считать предпочтительным вариантом. В то время как другие ответы уже дают некоторые примеры использования, я повторю это еще раз с некоторыми важными деталями:
Установите ext4fuse с помощью:
Вы можете подключиться как обычный пользователь, но в этом случае вы сможете получить доступ только к файлам, доступным для чтения, поэтому для полного доступа вам необходимо использовать
sudo
, например:Вот скрипт bash, который частично автоматизирует процесс. При запуске он автоматически создает точку монтирования после того, как вам будет предложено ввести один из отображаемых идентификаторов устройства, например
disk2s1
:Для размонтирования вы можете использовать, например
diskutil umount /dev/disk2s1
- если вы получите сообщение о том, что размонтирование не удалось, вы можете принудительно размонтировать егоdiskutil umount force /dev/disk2s1
, хотя было бы удобнее закрыть приложения, использующие файлы на диске, и повторить попытку размонтирования без негоforce
.Если у вас есть файлы, которыми владеют
_lpoperator
(по-видимому, они создаются при использовании rsync с опцией сохранения группы), то следующая команда позволит вам получить доступ к этим файлам:Оригинальный ответ для Йосемити и старше (не рекомендуется)
Для включения поддержки EXT2 / 3/4 в OSX необходимы два пакета: 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
Монтаж как обычный пользователь у меня не работал. Возможно, это можно исправить, поигравшись с разрешениями, но я не рассматривал это.
Примечание. Я подозреваю, что формулы homebrew не сработали, поскольку homebrew устанавливается
osxfuse
без слоя совместимости MacFUSE .В
osxfuse
доморощенном пиве есть две упаковки:Обе версии не могут монтировать разделы EXT. Скорее всего, версия DMG (
Caskroom/cask/osxfuse
) дает сбой, потому что homebrew устанавливает пакет с настройками по умолчанию, что означает, что уровень совместимости MacFUSE не включен. Основнаяosxfuse
версия, вероятно, нуждается в каком-то особом параметре установки, чтобы включить совместимость с MacFUSE, поэтому до тех пор, пока это не будет исправлено в homebrew, следует использовать метод DMG вручную.Этот метод работал для меня на Маверикс, Йосемити, Элькапитан и Сьерра.
Сценарий монтирования EXT2 / 3/4 для более старых версий OSX (устарело)
Чтобы сэкономить лишний набор текста, я использую крошечный скрипт, который берет имя раздела, например,
disk0s2
и монтирует его/Volumes/disk0s2
, создавая папку при необходимости:Сценарий вызывается с именем раздела, с помощью которого вы ищите
diskutil list
, напримерmount_ext4.sh disk2s3
.источник
FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:
(но нет описания проблемы или ссылки). Я установил аддон уровня совместимости. Я на macOS Sierra, поэтому попробовал версию Github GZP500.В MacPorts есть также e2fsprogs. Я еще не проверял это сам, но выглядит многообещающим.
источник