Как смонтировать файловую систему ext4 на OS X?
Существует ли безопасное, стабильное приложение для чтения и записи в файловые системы ext4 на Mac OS X?
Если нет, то какой способ получить доступ к содержимому файловой системы ext4 на Mac OS X?
10 ответов
Ответ зависит от того, готов ли вы инвестировать в коммерческое программное обеспечение:
Если вы не тратите деньги на коммерческий продукт , Extagon для Mac от Paragon предоставит вам доступ для чтения и записи в файловые системы ext2 /ext3 /ext4. Версия 11 поддерживает все версии OS X /macOS от 10.10 до 10.13.
Если вы ищете бесплатное решение , вы можете настроить виртуальную машину Linux, объединить свои тома и поделиться им через Samba или (S) FTP. Это сообщение содержит некоторые сведения о том, как достичь этого, используя VirtualBox - бесплатное приложение для виртуальной машины. Обратите внимание, что это не совсем легкое решение, даже если использование готовой виртуальной виртуальной машины VM поможет вам установить и настроить Linux-дистрибутив с нуля.
Основываясь на ответе Кена: я использовал fuse4x и fuse-ext2 , и я рекомендую использовать fuse-ext2 поверх ext4fuse.
ext4fuse был для меня проблемой, потому что он требует ручной компиляции и не поддерживает опции fuse4x, которые позволили бы мне установить контроль доступа. fuse-ext2 предоставляет загружаемые пакеты, а версия 0.0.7 работает отлично. Я без каких-либо проблем скопировал несколько больших ISO.
Можно также полностью установить OSXFUSE через заваривать менеджер пакетов командной строки:
brew install homebrew/fuse/ext4fuse
Обратите внимание, что установка указывает, что некоторые команды должны быть запущены как 'sudo' в дополнение к этому.
С Yosemite лучше взгляните на на . И затем убедитесь, что каталог доступен для чтения вашим пользователем, выполнив это . Для этого мне пришлось использовать группу колес следующим образом:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
С недавними изменениями в homebrew это должно быть просто:
brew cask install osxfuse
brew install ext4fuse
Возможно, вам придется перезагрузиться.
ext4fuse доступен только для чтения, к сожалению. И вам может понадобиться использовать флаг , чтобы заставить его работать как обычный пользователь.
Другие, просматривающие этот вопрос, могут быть заинтересованы в libguestfs . Я не знаю порт OS X, но, учитывая, что VirtualBox имеет API, это не может быть и речи.
Интересно, почему никто не написал слой совместимости, чтобы позволить файловой системе ядра Linux работать в пользовательском пространстве /плавкой предохранитель. Или кто-то?
Только для записи я тестировал драйвер Paragon ExtFS (пробная версия) на своем MacBook Pro для записи в раздел ext4 в Linux. Я обнаружил, что драйвер был очень неустойчивым, и он создал повреждение файловой системы, что fsck
не удалось восстановить ни в Linux, ни в Disk Utility.
Моя идея состояла в том, чтобы иметь доступ к моему разделу /home
из Mac OS X с помощью этого драйвера Paragon, но я не предлагаю эту настройку. До сих пор у меня есть раздел /home
в Linux, отформатированный в hfsplus
без ведения журнала, а затем я могу получить доступ к моим файлам из Mac OS X. Конечно, со времен время я получаю некоторые проблемы в своей FS, но не очень часто. Однако я не предлагаю эту настройку (по крайней мере, у вас есть резервная копия для ежедневной работы).
Наконец, я считаю, что Paragon более подходит, возможно, для использования на внешних жестких дисках, но в любом случае он не очень надежный для того, чтобы быть программным обеспечением, стоимость которого является дорогостоящей.
Обновление: . С мая 2015 года я форматировал my /home для ext4, и я монтирую файловую систему с помощью fuse-ext2 в сочетании с FUSE для OS X. Я могу получить доступ к разделу ext4 для прочти и напиши. Он более прочный, чем тот, который я ранее описал выше.
У меня был USB-диск с форматированием ext4, который я смог смонтировать после установки osxfuse . Чтение с него отлично работает, но я не уверен, что письмо безопасно.
Кроме того, для перемещения файлов из файловой системы OS X ( HFS + ) в ext4 вы можете сначала хотите удалить скрытые файлы .DS_Store файловая система OS X пробирается, поскольку они иногда вызывают вред inodes .
find /my/data/to/move -name '*.DS_Store' -type f -delete
Лучше, чем исправлять их после команды fsck .
Вы можете быстро загрузить Linux VM на своей ОС X с помощью Vagrant . Вам необходимо установить поставщика виртуальной машины, например VirtualBox и Vagrant через файл .dmg с сайта или используя заваривать бочку .
Как только у вас установлена команда vagrant
, запустите ее в любой выбранной папке:
vagrant init ubuntu /trusty64; vagrant up --provider virtualbox
Это создаст конфигурационный файл Vagrantfile
и .vagrant
.
, и вы загрузите ящик Linux в течение нескольких минут (скачайте с Atlas Hashicorp ).
Затем подключиться к ящику с помощью команды: vagrant ssh
и попытаться смонтировать ваше устройство внутри Linux.
По умолчанию ваша текущая папка будет синхронизирована с папкой /vagrant
в виртуальной машине. Для более расширенных параметров вы можете изменить Vagrantfile
с необходимой конфигурацией .
Поэтому, если вы монтируете свою файловую систему в папке /vagrant
, она будет автоматически синхронизирована с вашим MacOS.
В качестве альтернативы вам просто нужно установить VirtualBox , запустить приложение GUI, установить и загрузить минимальную версию Linux, например Ubuntu , чтобы достичь того же, что было описано выше.
Выше неместного решения не идеальны, но по крайней мере ваш macOS будет более стабильным, а не установкой нестабильных расширений ядра, что может вызвать множество сбоев системы.
Если вам интересно, что в командной строке необходимо установить раздел ext4 с использованием плавкого предохранителя и 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, если она используется для монтирования раздела):
umount ~/mount_point
В MacPorts также есть e2fsprog. Я еще не тестировал его сам, но выглядел многообещающим.
Обновленный ответ для (Высокий) 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 и старше (устаревший)
Для поддержки EXT2 /3/4 в OSX необходимы два пакета: OSXFUSE и FUSE-EXT2 .
Формулы homebrew для OSXFUSE и FUSE-EXT2 не работали для меня как для mavericks, так и для yosemite.
Какова была работа:
- Вручную загрузите и установите OSXFUSE DMG из http://osxfuse.github.io/. ВАЖНО . После запуска установщика PKG убедитесь, что вы выбрали уровень совместимости MacFUSE в мастере (по умолчанию он не включен) - без него я получал ошибку, пока пытается установить.
- Вручную скачать FUSE-EXT2 из http://sourceforge.net/projects/fuse-ext2/ или для Sierra /El Capitan от https://github.com/gpz500/fuse -ext2 /релизы и запустить установщик PKG.
После установки обоих OSXFUSE и FUSE-EXT2 вы можете монтировать разделы ext2 /ext3 /ext4, как указано в других ответах:
-
Найдите имя устройства для раздела EXT, который вы хотите подключить (например,
disk0s2
) в следующем примере (UPDATE) в последующих версиях MacOS. Разделы ext3 /ext4 могут быть помечены как Основные данные Microsoft , а не 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 устанавливает osxfuse
без уровня совместимости MacFUSE .
В homebrew есть два пакета osxfuse
:
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
Обе версии не могут монтировать разделы EXT. Скорее всего, версия DMG (Caskroom/cask/osxfuse
) не работает, потому что homebrew устанавливает пакет с настройками по умолчанию, а это означает, что уровень совместимости MacFUSE не включен. Для основной версии osxfuse
, вероятно, необходим специальный параметр установки длявключите совместимость MacFUSE, поэтому до тех пор, пока это не будет исправлено в homebrew, следует использовать ручной метод DMG.
Этот метод работал для меня на mavericks, yosemite, elcapitan и sierra.
скрипт монтирования 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
.