Как смонтировать файловую систему ext4 на OS X?

Существует ли безопасное, стабильное приложение для чтения и записи в файловые системы ext4 на Mac OS X?

Если нет, то какой способ получить доступ к содержимому файловой системы ext4 на Mac OS X?

125 голосов | спросил Evan Kroske 1 22011vEurope/Moscow11bEurope/MoscowTue, 01 Nov 2011 07:14:51 +0400 2011, 07:14:51

10 ответов


59

Ответ зависит от того, готов ли вы инвестировать в коммерческое программное обеспечение:

Если вы не тратите деньги на коммерческий продукт , Extagon для Mac от Paragon предоставит вам доступ для чтения и записи в файловые системы ext2 /ext3 /ext4. Версия 11 поддерживает все версии OS X /macOS от 10.10 до 10.13.

Если вы ищете бесплатное решение , вы можете настроить виртуальную машину Linux, объединить свои тома и поделиться им через Samba или (S) FTP. Это сообщение содержит некоторые сведения о том, как достичь этого, используя VirtualBox - бесплатное приложение для виртуальной машины. Обратите внимание, что это не совсем легкое решение, даже если использование готовой виртуальной виртуальной машины VM поможет вам установить и настроить Linux-дистрибутив с нуля.

ответил kopischke 2 32011vEurope/Moscow11bEurope/MoscowWed, 02 Nov 2011 00:55:45 +0400 2011, 00:55:45
36

Основываясь на ответе Кена: я использовал fuse4x и fuse-ext2 , и я рекомендую использовать fuse-ext2 поверх ext4fuse.

ext4fuse был для меня проблемой, потому что он требует ручной компиляции и не поддерживает опции fuse4x, которые позволили бы мне установить контроль доступа. fuse-ext2 предоставляет загружаемые пакеты, а версия 0.0.7 работает отлично. Я без каких-либо проблем скопировал несколько больших ISO.

ответил pwnall 21 AMpSat, 21 Apr 2012 02:38:20 +040038Saturday 2012, 02:38:20
24

Можно также полностью установить OSXFUSE через заваривать менеджер пакетов командной строки:

brew install homebrew/fuse/ext4fuse

Обратите внимание, что установка указывает, что некоторые команды должны быть запущены как 'sudo' в дополнение к этому.


С Yosemite лучше взгляните на на . И затем убедитесь, что каталог доступен для чтения вашим пользователем, выполнив это . Для этого мне пришлось использовать группу колес следующим образом:

sudo dscl . append /Groups/wheel GroupMembership $(whoami)
ответил akauppi 20 PMpSun, 20 Apr 2014 14:58:43 +040058Sunday 2014, 14:58:43
12

С недавними изменениями в homebrew это должно быть просто:

brew cask install osxfuse brew install ext4fuse

Возможно, вам придется перезагрузиться.

ext4fuse доступен только для чтения, к сожалению. И вам может понадобиться использовать флаг , чтобы заставить его работать как обычный пользователь.

Другие, просматривающие этот вопрос, могут быть заинтересованы в libguestfs . Я не знаю порт OS X, но, учитывая, что VirtualBox имеет API, это не может быть и речи.

Интересно, почему никто не написал слой совместимости, чтобы позволить файловой системе ядра Linux работать в пользовательском пространстве /плавкой предохранитель. Или кто-то?

ответил Ken Arnold 2 32011vEurope/Moscow11bEurope/MoscowWed, 02 Nov 2011 18:28:21 +0400 2011, 18:28:21
8

Только для записи я тестировал драйвер 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 для прочти и напиши. Он более прочный, чем тот, который я ранее описал выше.

ответил muammar 13 32013vEurope/Moscow11bEurope/MoscowWed, 13 Nov 2013 14:53:02 +0400 2013, 14:53:02
7

У меня был USB-диск с форматированием ext4, который я смог смонтировать после установки osxfuse . Чтение с него отлично работает, но я не уверен, что письмо безопасно.

Кроме того, для перемещения файлов из файловой системы OS X ( HFS + ) в ext4 вы можете сначала хотите удалить скрытые файлы .DS_Store файловая система OS X пробирается, поскольку они иногда вызывают вред inodes .

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

Лучше, чем исправлять их после команды fsck .

ответил yuvilio 28 FriEurope/Moscow2012-12-28T08:12:29+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 08:12:29 +0400 2012, 08:12:29
7

Вы можете быстро загрузить 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 будет более стабильным, а не установкой нестабильных расширений ядра, что может вызвать множество сбоев системы.

ответил kenorb 30 Maypm14 2014, 16:05:54
7

Если вам интересно, что в командной строке необходимо установить раздел 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
ответил Pierz 16 TueEurope/Moscow2014-12-16T00:57:02+03:00Europe/Moscow12bEurope/MoscowTue, 16 Dec 2014 00:57:02 +0300 2014, 00:57:02
5

В MacPorts также есть e2fsprog. Я еще не тестировал его сам, но выглядел многообещающим.

ответил crysaz 30 52012vEurope/Moscow11bEurope/MoscowFri, 30 Nov 2012 23:23:35 +0400 2012, 23:23:35
3

Обновленный ответ для (Высокий) 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.

Какова была работа:

  1. Вручную загрузите и установите OSXFUSE DMG из http://osxfuse.github.io/. ВАЖНО . После запуска установщика PKG убедитесь, что вы выбрали уровень совместимости MacFUSE в мастере (по умолчанию он не включен) - без него я получал ошибку, пока пытается установить.
  2. Вручную скачать FUSE-EXT2 из http://sourceforge.net/projects/fuse-ext2/ или для Sierra /El Capitan от https://github.com/gpz500/fuse -ext2 /релизы и запустить установщик PKG.

После установки обоих OSXFUSE и FUSE-EXT2 вы можете монтировать разделы ext2 /ext3 /ext4, как указано в других ответах:

  1. Найдите имя устройства для раздела 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

  2. Подключите раздел к существующей точке монтирования:

    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.

ответил ccpizza 6 Jpm1000000pmWed, 06 Jan 2016 17:46:34 +030016 2016, 17:46:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132