Чи є безпечна, стабільна програма для читання та запису файлових систем ext4 на Mac OS X?
Якщо ні, то який найкращий спосіб отримати доступ до вмісту файлової системи ext4 в Mac OS X?
Чи є безпечна, стабільна програма для читання та запису файлових систем ext4 на Mac OS X?
Якщо ні, то який найкращий спосіб отримати доступ до вмісту файлової системи ext4 в Mac OS X?
Відповіді:
Відповідь залежить від готовності інвестувати комерційне програмне забезпечення:
Якщо ви не заперечуєте витратити трохи грошей на комерційний продукт , extFS Paragon для Mac надасть вам доступ для читання та запису файлових систем ext2 / ext3 / ext4. Поточна версія підтримує всі версії OS X / macOS від 10.10 і вище.
Якщо ви шукаєте безкоштовне рішення , ви можете встановити віртуальну машину Linux, встановити там свій об'єм (и) та поділитися ним / ними через Samba або (S) FTP. У цій публікації є кілька подробиць, як цього досягти за допомогою VirtualBox , безкоштовного додатка для віртуальної машини. Зауважте, це не зовсім легке рішення, навіть якщо використання попередньо вбудованого VirtualBox VM позбавить вас від установки та налаштування дистрибутива Linux з нуля.
Спираючись на відповідь Кена: я успішно використовував fuse4x та fuse-ext2 , і рекомендую fuse-ext2 над ext4fuse.
ext4fuse був для мене клопотом, тому що він вимагає ручної компіляції та не підтримує параметри fuse4x, які б дозволили мені встановити контроль доступу. fuse-ext2 надає завантажувані пакети, а версія 0.0.7 спрацювала чудово. Я скопіював декілька великих ISO без проблем.
Також можна повністю встановити OSXFUSE через менеджер пакетів командного рядка brew :
brew install homebrew/fuse/ext4fuse
Зауважте, що інсталяція повідомляє, що певні команди потрібно додатково виконувати як "sudo".
З Yosemite краще погляньте на це . А потім переконайтеся, що каталог читає ваш користувач, зробивши це . Щоб він працював, я повинен був використовувати колесну групу так:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
З недавніми змінами на домашню мову це має бути таким же простим, як:
brew cask install osxfuse
brew install ext4fuse
Можливо, вам доведеться перезавантажити.
На жаль, ext4fuse доступний лише для читання. І вам може знадобитися використовувати прапор, щоб він працював як звичайний користувач.
Інші, хто переглядає це питання, можуть зацікавити libguestfs . Мені не відомо про порт OS X, але враховуючи, що у VirtualBox є API, це не викликає сумніву.
Цікаво, чому ніхто не написав шар сумісності, щоб дозволити код файлової системи ядра Linux запускатися в просторі / запобіжника користувача. Або хтось?
Якщо вам цікаво, що командний рядок - це змонтувати розділ 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
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
без SUDO / корінь.
Тільки для запису я протестував драйвер 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 для читання та запису. Це більш солідна установка, ніж та, яку я раніше описав.
Ви можете швидко завантажувати 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 virtualbox
as ubuntu/vivid64
більше не доступний.
ubuntu/trusty64
замість цього.
У мене був накопичений USB-накопичувач ext4, який я зміг встановити після встановлення осфсфузи . Читання з неї працює чудово, але я не впевнений, чи безпечно писати.
Крім того, для переміщення файлів з файлової системи OS X ( HFS + ) до ext4, ви можете спочатку видалити ці приховані .DS_Store файли, до яких проникає файлова система OS X, оскільки вони час від часу викликають погані введення .
find /my/data/to/move -name '*.DS_Store' -type f -delete
Краще, ніж після виправлення їх за допомогою команди fsck .
Для 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 не працюють для мене або на індивідуалістів або Йосеміті.
Працювало так:
Після встановлення 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.
Цей метод працював для мене на мавериках, йосеміті, елкапітані та Сьєррі.
Для збереження додаткового набору тексту я використовую крихітний скрипт, який бере назву розділу, наприклад, 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.