Як я можу встановити файлову систему ext4 на OS X?


131

Чи є безпечна, стабільна програма для читання та запису файлових систем ext4 на Mac OS X?

Якщо ні, то який найкращий спосіб отримати доступ до вмісту файлової системи ext4 в Mac OS X?


Було б більш ніж корисно, якби ви вказали, яку версію ОС X ви використовуєте. Існують проблеми сумісності з доступними рішеннями залежно від версії ОС.
kopischke

Відповіді:


60

Відповідь залежить від готовності інвестувати комерційне програмне забезпечення:

Якщо ви не заперечуєте витратити трохи грошей на комерційний продукт , extFS Paragon для Mac надасть вам доступ для читання та запису файлових систем ext2 / ext3 / ext4. Поточна версія підтримує всі версії OS X / macOS від 10.10 і вище.

Якщо ви шукаєте безкоштовне рішення , ви можете встановити віртуальну машину Linux, встановити там свій об'єм (и) та поділитися ним / ними через Samba або (S) FTP. У цій публікації є кілька подробиць, як цього досягти за допомогою VirtualBox , безкоштовного додатка для віртуальної машини. Зауважте, це не зовсім легке рішення, навіть якщо використання попередньо вбудованого VirtualBox VM позбавить вас від установки та налаштування дистрибутива Linux з нуля.


2
Напевно, є безкоштовне рішення nonvm?
Pacerier

osboxes.org надає новіші версії vs virtualboxes.org.
Тім

36

Спираючись на відповідь Кена: я успішно використовував fuse4x та fuse-ext2 , і рекомендую fuse-ext2 над ext4fuse.

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


може запобіжник-ext2 монтувати речі в якості запису або лише лише для читання?
knocte

25

Також можна повністю встановити OSXFUSE через менеджер пакетів командного рядка brew :

brew install homebrew/fuse/ext4fuse

Зауважте, що інсталяція повідомляє, що певні команди потрібно додатково виконувати як "sudo".


З Yosemite краще погляньте на це . А потім переконайтеся, що каталог читає ваш користувач, зробивши це . Щоб він працював, я повинен був використовувати колесну групу так:

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

18

З недавніми змінами на домашню мову це має бути таким же простим, як:

brew cask install osxfuse
brew install ext4fuse

Можливо, вам доведеться перезавантажити.

На жаль, ext4fuse доступний лише для читання. І вам може знадобитися використовувати прапор, щоб він працював як звичайний користувач.

Інші, хто переглядає це питання, можуть зацікавити libguestfs . Мені не відомо про порт OS X, але враховуючи, що у VirtualBox є API, це не викликає сумніву.

Цікаво, чому ніхто не написав шар сумісності, щоб дозволити код файлової системи ядра Linux запускатися в просторі / запобіжника користувача. Або хтось?


10

Якщо вам цікаво, що командний рядок - це змонтувати розділ 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

Вам потрібно отримати доступ до накопичувача як root, лише якщо встановити його за межами домашнього каталогу. Ви можете cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntбез SUDO / корінь.
Тимофій Зорн

mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 for ...: Такого файлу чи каталогу немає
Wolfgang Fahl

9

Тільки для запису я протестував драйвер Paragon ExtFS (пробна версія) на своєму MacBook Pro для запису на розділ 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 VM на вашій OS X за допомогою Vagrant . Вам потрібно встановити провайдера VM, таких як VirtualBox та Vagrant, або через файл .dmg з сайту, або за допомогою пивоваріння .

Після встановлення 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 virtualboxas ubuntu/vivid64більше не доступний.
Фредрік Ерландссон

Спробуйте використовувати ubuntu/trusty64замість цього.
kenorb

8

У мене був накопичений USB-накопичувач ext4, який я зміг встановити після встановлення осфсфузи . Читання з неї працює чудово, але я не впевнений, чи безпечно писати.

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

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

Краще, ніж після виправлення їх за допомогою команди fsck .


7

Оновлена ​​відповідь за (Висока) Сьєрра

Для 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

Оригінальна відповідь для Йосеміті та старших (застарілий)

Два пакети потрібні для того, щоб включити підтримку EXT2 / 3/4 в OSX: OSXFUSE та FUSE-EXT2 .

У доморощених формулах для OSXFUSE і FUSE-EXT2 не працюють для мене або на індивідуалістів або Йосеміті.

Працювало так:

  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 Basic Data, а не 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

Монтаж як звичайний користувач не працював для мене. Можливо, це можна виправити, поширюючись з дозволами, але я не переглядав це.

Примітка. Я підозрюю, що формули домівки не працювали, тому osxfuseщо домівка встановлена без рівня сумісності MacFUSE .

На osxfuseдомашній мові є два пакети:

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

В обох версіях не вдалося встановити розділи EXT. Швидше за все, версія DMG ( Caskroom/cask/osxfuse) виходить з ладу, тому що домівка встановлює пакет із налаштуваннями за замовчуванням, а це означає, що рівень сумісності MacFUSE не включений. Основна osxfuseверсія, ймовірно, потребує певного параметра встановлення для забезпечення сумісності з MacFUSE, тому, поки це не буде зафіксовано домашньою мовою, слід використовувати ручний метод 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.


1
Спробував це, але, на жаль, отримав помилку FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(але немає опису проблеми чи посилання). Я встановив аддон рівня шару порівнянності. Я на macOS Sierra, тому я спробував версію Github gzp500.
Winterflags

6

Також в MacPorts доступні e2fsprogs. Я ще цього не перевіряв, але виглядає перспективно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.