답변:
대답은 상용 소프트웨어에 투자하려는 의지에 달려 있습니다.
당신이 상용 제품에 돈을 지출 괜찮다면 , 파라곤의 Mac 용 extFS은 읽고 EXT2 / EXT3 / ext4 파일 시스템에 쓰기 액세스를 제공 할 것입니다. 현재 버전은 10.10 이상에서 모든 버전의 OS X / macOS를 지원합니다.
무료 솔루션을 찾고 있다면 Linux 가상 머신을 설정하고 볼륨을 마운트 한 후 Samba 또는 (S) FTP 를 통해 공유 할 수 있습니다 . 이 게시물 에는 무료 가상 머신 애플리케이션 인 VirtualBox를 사용하여이를 달성하는 방법에 대한 세부 사항이 있습니다. 사전 구축 된 VirtualBox VM 을 사용하여 Linux 배포판을 처음부터 설치 및 구성 할 필요가 없더라도이 솔루션은 가벼운 솔루션이 아닙니다 .
Ken의 대답을 바탕으로 : fuse4x 및 fuse-ext2를 성공적으로 사용 했으며 ext4fuse 보다 fuse-ext2를 권장합니다.
ext4fuse는 수동 컴파일이 필요하고 액세스 제어를 설정할 수있는 fuse4x 옵션을 지원하지 않기 때문에 번거 롭습니다. fuse-ext2는 다운로드 가능한 패키지를 제공하며 0.0.7 버전은 정상적으로 작동했습니다. 문제없이 몇 가지 큰 ISO를 복사했습니다.
최근에 homebrew가 변경되면 다음과 같이 간단해야합니다.
brew cask install osxfuse
brew install ext4fuse
재부팅해야 할 수도 있습니다.
ext4fuse 는 불행히도 읽기 전용입니다. 그리고 일반 사용자로 작동하려면 플래그 를 사용해야 할 수도 있습니다 .
이 질문을 보는 다른 사람들은 libguestfs에 관심이있을 수 있습니다 . OS X 포트는 모르지만 VirtualBox에 API가 있다고 생각하면 문제가되지 않습니다.
Linux 커널 파일 시스템 코드를 사용자 공간 / 퓨즈에서 실행할 수 있도록 호환성 계층을 작성한 사람이없는 이유가 궁금합니다. 아니면 누군가가 있습니까?
퓨즈와 ext2fuse를 사용하여 ext4 파티션을 마운트하는 명령 줄이 무엇인지 궁금하다면 (예 : MacPorts를 사용하여 설치 할 때 port install ext2fuse
) Linux 파티션이 어디에 있는지 알아 내야합니다.
diskutil list
여기에는 모든 디스크의 모든 파티션이 나열되며 그 중 TYPE 열 아래에 관련 파티션이 Linux로 표시됩니다. / dev / diskXsY와 같이 diskX와 파티션 번호 Y를 결합하십시오. 예 :
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
로그 파일에 쓸 수 없다고 불평 할 수 있지만 여전히 파티션을 홈 마운트 지점에 마운트해야합니다. 그러나 파티션을 시스템 디렉토리에 마운트하려면 루트로 실행해야합니다. 예 :
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
또한 주석에서 Timothy가 언급 한 것처럼 sudo
홈 디렉토리 외부에 마운트하거나 디스크 (/ dev / diskX)가 루트로만 액세스 할 수있는 경우에만 사용해야합니다.
sudo ext4fuse /dev/disk1s2 /sys_mount_point
마운트 된 파일 시스템에만 루트 / 스 도로 액세스 할 수 있습니다. 예 :
sudo ls /sys_mount_point
파일 시스템을 마운트 해제하려면 일반적인 umount
명령을 사용하십시오 (파티션을 마운트하는 데 사용되는 경우 sudo 사용).
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
sudo는 / 루트없이.
필자는 기록을 위해 MacBook Pro에서 Paragon ExtFS 드라이버 (평가판)를 테스트하여 Linux의 ext4 파티션에 썼습니다. 드라이버가 매우 불안정 fsck
하여 Linux 나 디스크 유틸리티에서 복구 할 수없는 파일 시스템이 손상되었습니다 .
내 생각은 /home
이 Paragon 드라이버를 사용하여 Mac OS X에서 파티션에 액세스하는 것이었지만이 설정을 권장하지는 않습니다. 지금까지 저널링없이 /home
포맷 된 Linux 파티션 이 있고 hfsplus
Mac OS X에서 파일에 액세스 할 수 있습니다. 물론, 때때로 FS에 문제가 있지만 자주는 아닙니다. 그러나, 나는이 설정을 제안하지 않습니다 (적어도 일상적인 작업을위한 최신 백업이 있어야 함).
마지막으로 Paragon이 외부 하드 디스크에 사용하기에 더 적합하다고 생각하지만 라이센스가 비싼 소프트웨어 인 경우에는 그다지 신뢰할 수 없습니다.
업데이트 : 2015 년 5 월 현재 / home을 ext4로 포맷했으며 퓨즈 X를 OS X 용 FUSE와 함께 사용하여 파일 시스템을 마운트합니다. ext4 파티션에 액세스하여 읽고 쓸 수 있습니다. 위에서 설명한 것보다 더 견고한 설정입니다.
Vagrant를 사용하여 OS X에서 Linux VM을 빠르게 부팅 할 수 있습니다 . 사이트에서 .dmg 파일을 통해 또는 brew cask를 사용하여 VirtualBox 및 Vagrant 와 같은 VM 공급자를 설치해야합니다 .
vagrant
명령이 설치 되면 선택한 폴더에서이를 실행하십시오.
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Vagrantfile
구성 파일과 .vagrant
폴더 가 생성됩니다 .
몇 분 내에 Linux 박스를 부팅 할 수 있습니다 ( Atlas Hashicorp 저장소 에서 다운로드 ).
그런 다음 상자에 연결 명령을 통해 : vagrant ssh
및 장치를 탑재하려고 리눅스 내부.
기본적으로 현재 폴더는 /vagrant
VM의 폴더 와 동기화됩니다 . 고급 옵션의 경우 Vagrantfile
필요한 구성으로 수정할 수 있습니다.
따라서 파일 시스템을 /vagrant
폴더에 마운트하면 자동으로 macOS에 다시 동기화됩니다.
또는 VirtualBox 를 설치 하고 GUI 앱을 실행하고 위에서 설명한 것과 동일한 것을 달성하기 위해 Ubuntu 와 같은 최소 버전의 Linux를 설치하고 부팅해야 합니다.
위의 비원시 솔루션은 이상적이지 않지만 적어도 시스템 충돌을 일으킬 수있는 불안정한 커널 확장을 설치하는 것보다 macOS가 더 안정적입니다.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
으로 ubuntu/vivid64
더 이상 사용할 수 없습니다.
ubuntu/trusty64
대신 사용해보십시오 .
osxfuse 를 설치 한 후 마운트 할 수있는 ext4 형식의 USB 드라이브가있었습니다 . 그 책을 읽는 것은 훌륭하지만 글이 안전한지 잘 모르겠습니다.
또한, 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
OSX에서 EXT2 / 3 / 4 지원을 활성화하려면 OSXFUSE 및 FUSE-EXT2의 두 가지 패키지가 필요합니다 .
OSXFUSE 및 FUSE-EXT2 의 홈 브루 수식 은 매버릭스 또는 요세미티에서 작동하지 않았습니다 .
일한 것은 다음과 같습니다.
OSXFUSE와 FUSE-EXT2가 모두 설치되면 다른 답변에서 언급 한대로 ext2 / ext3 / ext4 파티션을 마운트 할 수 있습니다.
마운트하려는 EXT 파티션의 장치 이름을 찾으십시오 (예 : disk0s2
아래의 예 에서, 이후 MacOS 버전에서 (UPDATE) ext3 / ext4 파티션은 Linux가 아닌 Microsoft Basic Data 로 표시 될 수 있습니다 ).
# 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
일반 사용자로 마운트해도 효과가 없었습니다. 아마도 이것은 권한으로 조정하여 해결할 수는 있지만 조사하지는 않았습니다.
참고 : MacFUSE Compatibility Layerosxfuse
없이 homebrew를 설치하기 때문에 homebrew 공식이 작동하지 않았다고 생각합니다 .
osxfuse
homebrew 에는 두 가지 패키지 가 있습니다 .
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
두 버전 모두 EXT 파티션을 마운트하지 못합니다. Caskroom/cask/osxfuse
homebrew가 기본 설정으로 패키지를 설치하기 때문에 DMG 버전 ( )이 실패 할 가능성이 높습니다. 이는 MacFUSE 호환성 계층 이 포함되어 있지 않음 을 의미합니다 . 주 osxfuse
버전에는 MacFUSE 호환성을 활성화하기 위해 특별한 설치 매개 변수가 필요할 수 있으므로 홈 브루에서 수정 될 때까지 수동 DMG 방법을 사용해야합니다.
이 방법은 mavericks, yosemite, elcapitan 및 sierra에서 저에게 효과적이었습니다.
여분의 타이핑을 저장하기 위해 작은 스크립트를 사용하여 파티션 이름을 가져 와서 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:
(그러나 문제 설명이나 참조는 없습니다). Compability Layer 애드온을 설치했습니다. macOS Sierra에 있으므로 Github gzp500 버전을 사용해보십시오.