ฉันจะเมาท์ระบบไฟล์ ext4 บน OS X ได้อย่างไร


131

มีแอพพลิเคชั่นที่ปลอดภัยและเสถียรสำหรับการอ่านและเขียนไปยังระบบไฟล์ext4บน Mac OS X หรือไม่?

ถ้าไม่เป็นวิธีที่ดีที่สุดในการเข้าถึงเนื้อหาของระบบไฟล์ ext4 ใน Mac OS X คืออะไร?


มันจะมีประโยชน์มากกว่านี้หากคุณระบุว่าคุณใช้ OS X เวอร์ชันใด มีปัญหาความเข้ากันได้กับวิธีแก้ปัญหาที่มีทั้งนี้ขึ้นอยู่กับการแก้ไขระบบปฏิบัติการ
kopischke

คำตอบ:


60

คำตอบขึ้นอยู่กับคุณว่าต้องการลงทุนในซอฟต์แวร์เชิงพาณิชย์:

ถ้าคุณไม่คิดค่าใช้จ่ายเงินบางส่วนในผลิตภัณฑ์ในเชิงพาณิชย์ , พารากอนextFS สำหรับ Macจะให้คุณอ่านและเขียนการเข้าถึงระบบไฟล์ ext2 / ext3 / ext4 เวอร์ชันปัจจุบันรองรับ OS X / macOS ทุกรุ่นตั้งแต่ 10.10 ขึ้นไป

หากคุณกำลังมองหาวิธีแก้ปัญหาฟรีคุณสามารถติดตั้งเครื่องเสมือน Linux ติดตั้งวอลลุ่มของคุณและแบ่งปันผ่านSambaหรือ (S) FTP โพสต์นี้มีรายละเอียดบางอย่างเกี่ยวกับการบรรลุผลโดยใช้VirtualBoxซึ่งเป็นแอปพลิเคชันเครื่องเสมือนฟรี โปรดทราบว่านี่ไม่ใช่วิธีการแก้ปัญหาที่มีน้ำหนักเบาแม้ว่าการใช้VirtualBox VM ที่สร้างไว้ล่วงหน้าจะสำรองไว้ให้คุณติดตั้งและกำหนดค่าลินุกซ์ distro จากศูนย์


2
แน่นอนมีโซลูชั่น nonvm ฟรีหรือไม่
Pacerier

osboxes.orgให้เวอร์ชันที่ใหม่กว่า vs virtualboxes.org
ทิม

36

คำตอบของเคน: ฉันใช้fuse4xและfuse-ext2สำเร็จแล้วและฉันขอแนะนำ fuse-ext2 สำหรับ ext4fuse

ext4fuse เป็นเรื่องยุ่งยากสำหรับฉันเพราะมันต้องมีการรวบรวมด้วยตนเองและไม่สนับสนุนตัวเลือก fuse4x ที่จะอนุญาตให้ฉันตั้งค่าการควบคุมการเข้าถึง fuse-ext2 ให้แพ็คเกจที่ดาวน์โหลดได้และเวอร์ชั่น 0.0.7 นั้นใช้ได้ดี ฉันคัดลอก ISO ขนาดใหญ่ไปสองสามครั้งโดยไม่มีปัญหาใด ๆ


fuse-ext2 สามารถติดตั้งสิ่งที่เขียนได้หรืออ่านได้อย่างเดียวเท่านั้น?
knocte

25

หนึ่งยังสามารถติดตั้ง OSXFUSE สมบูรณ์ผ่านการชงผู้จัดการคำสั่งแพคเกจบรรทัด:

brew install homebrew/fuse/ext4fuse

โปรดทราบว่าการติดตั้งจะต้องเรียกใช้คำสั่งบางอย่างเป็น 'sudo' เพิ่มเติมจากสิ่งนี้


ด้วยโยเซมิตีให้ดูที่นี่ดีกว่า และจากนั้นให้แน่ใจว่าไดเรกทอรีสามารถอ่านได้โดยผู้ใช้ของคุณโดยการทำเช่นนี้ สำหรับการทำงานฉันต้องใช้กลุ่มล้ออย่างนี้

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

18

ด้วยการเปลี่ยนแปลง homebrew ล่าสุดนี้ควรจะง่ายเหมือน:

brew cask install osxfuse
brew install ext4fuse

คุณอาจต้องรีบูท

ext4fuseเป็นแบบอ่านอย่างเดียวโชคไม่ดี และคุณอาจต้องใช้การตั้งค่าสถานะเพื่อให้มันทำงานในฐานะผู้ใช้ปกติ

อื่น ๆ ดูคำถามนี้อาจจะสนใจในlibguestfs ฉันไม่ทราบถึงพอร์ต OS X แต่เมื่อพิจารณาว่า VirtualBox มี API มันก็ไม่เป็นปัญหา

ฉันสงสัยว่าทำไมไม่มีใครเขียนเลเยอร์ความเข้ากันได้เพื่อให้โค้ดระบบไฟล์เคอร์เนล Linux ทำงานใน userspace / fuse หรือมีใครบางคน?


10

หากคุณสงสัยว่าบรรทัดคำสั่งคือการเมาต์พาร์ติชัน ext4 โดยใช้ฟิวส์และ ext2fuse (เช่นเมื่อติดตั้งโดยใช้ MacPort port install ext2fuse) - ก่อนอื่นคุณต้องหาว่าพาร์ติชัน Linux อยู่ที่ใด:

diskutil list

นี่จะแสดงรายการพาร์ติชั่นทั้งหมดสำหรับดิสก์ทั้งหมดและในบรรดาพาร์ติชั่นเหล่านั้นคุณจะเห็นพาร์ติชั่นที่เกี่ยวข้องซึ่งแสดงรายการอยู่ในคอลัมน์ TYPE เป็น Linux รวม diskX และหมายเลขพาร์ติชัน Y เช่นนี้ / dev / diskXsY - เช่น:

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

ทิโมธีที่กล่าวถึงในความคิดเห็นที่คุณมักจะต้องใช้ก็ต่อsudoเมื่อคุณติดตั้งอยู่นอกไดเรกทอรีหลักหรือดิสก์ (/ dev / diskX) สามารถเข้าถึงได้โดยรูทเท่านั้น:

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 / ราก
Timothy Zorn

เมานต์: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 สำหรับ ... : ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
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 อาจเหมาะสมกว่าที่จะใช้สำหรับฮาร์ดดิสก์ภายนอก แต่อย่างไรก็ตามมันไม่น่าเชื่อถือสำหรับซอฟต์แวร์ที่มีลิขสิทธิ์ราคาแพง

อัปเดต:ณ เดือนพฤษภาคม 2558 ฉันได้ฟอร์แมต / home เป็น ext4 และติดตั้งระบบไฟล์โดยใช้ fuse-ext2 ร่วมกับ FUSE สำหรับ OS X ฉันสามารถเข้าถึงพาร์ติชัน ext4 เพื่ออ่านและเขียน เป็นการตั้งค่าที่แน่นหนากว่าที่ฉันได้อธิบายไว้ข้างต้น


ฉันสามารถยืนยันรายการสุดท้ายที่นี่ซึ่งไดรเวอร์ Paragon ExtFS สามารถสร้างปัญหาที่ไม่ดีให้กับไดรฟ์ linux ของคุณได้ สำหรับฉันใครเป็น dualbooting OSX และ Linux พารากอนได้สร้างความเสียหายในอุปกรณ์ของฉัน นี่เป็นเรื่องง่ายที่จะแก้ไข แต่อย่างไรก็ตามนั่นไม่ใช่ทางออกที่มั่นคง ...

ประสบการณ์ที่เลวร้ายยิ่งขึ้นกับไดรเวอร์ Paragon ExtFS ความตื่นตระหนกของเคอร์เนลที่สอดคล้องกันซึ่งนำไปสู่การรีบูตระบบความเสียหายของระบบไฟล์ (โชคดีที่ fsck บนกล่อง Linux ทำงานได้) ทดลองใช้ไดรฟ์ภายนอกสองตัวที่มีผลลัพธ์เหมือนกัน

9

คุณสามารถบูตลินุกซ์ VMได้อย่างรวดเร็วบน OS X ของคุณโดยใช้คนจรจัด คุณจำเป็นต้องมีการติดตั้งผู้ให้บริการเช่น VM VirtualBoxและคนจรจัดทั้งผ่านทางไฟล์ .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 ติดตั้งและบูตลีนุกซ์รุ่นที่เล็กที่สุดเช่นUbuntuเพื่อให้ได้ผลตามที่อธิบายไว้ข้างต้น


วิธีการแก้ปัญหาที่ไม่ใช่เจ้าของภาษานั้นไม่เหมาะ แต่อย่างน้อย macOS ของคุณจะมีเสถียรภาพมากกว่าการติดตั้งส่วนขยายเคอร์เนลที่ไม่เสถียรซึ่งอาจทำให้ระบบล่มได้


วิ่งvagrant init ubuntu/xenial64; vagrant up --provider virtualboxเป็นubuntu/vivid64ไม่สามารถใช้ได้อีกต่อไป
Fredrik Erlandsson

ลองใช้ubuntu/trusty64แทน
kenorb

8

ผมมีการจัดรูปแบบ ext4 ไดรฟ์ USB ที่ผมสามารถที่จะติดตั้งหลังจากที่ผมติดตั้งosxfuse การอ่านจากมันใช้งานได้ดี แต่ฉันไม่แน่ใจว่าการเขียนนั้นปลอดภัยหรือไม่

นอกจากนี้สำหรับการย้ายไฟล์จากระบบไฟล์ของ OS X ( HFS + ) ไปยัง ext4 คุณอาจต้องการลบไฟล์. DS_Store ที่ซ่อนอยู่เหล่านั้นที่ระบบไฟล์ OS X แอบเข้ามาเนื่องจากบางครั้งมันทำให้inodeเสีย

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

นี่คือสคริปต์ทุบตีซึ่งบางส่วนทำให้กระบวนการโดยอัตโนมัติ เมื่อเปิดตัวมันจะสร้างจุดเชื่อมต่อโดยอัตโนมัติหลังจากคุณได้รับแจ้งให้ป้อนหนึ่งในตัวระบุอุปกรณ์ที่แสดงเช่น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- ถ้าคุณได้รับข้อความว่า unmounting ล้มเหลวแล้วคุณสามารถบังคับ unmounting ด้วยถึงแม้ว่ามันจะทำความสะอาดเพื่อปิดปพลิเคชันที่มีการใช้ไฟล์บนดิสก์และลองใหม่อีกครั้งโดยไม่diskutil umount force /dev/disk2s1 unmountingforce

หากคุณมีไฟล์ที่เป็นเจ้าของ_lpoperator(เห็นได้ชัดว่ามันถูกสร้างขึ้นเมื่อคุณใช้ rsync กับกลุ่มรักษาตัวเลือก) แล้วคำสั่งต่อไปนี้จะช่วยให้คุณเข้าถึงไฟล์เหล่านั้น:

/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator

คำตอบเดิมสำหรับโยเซมิตีและเก่ากว่า (เลิกใช้แล้ว)

สองแพคเกจที่มีความจำเป็นเพื่อให้ EXT2 / 3/4 สนับสนุนใน OSX: OSXFUSEและFUSE-EXT2

homebrewสูตรสำหรับ OSXFUSE และ FUSE-EXT2 ไม่ได้ทำงานสำหรับฉันในทั้ง Mavericks หรือโยเซมิตี

สิ่งที่ได้ผลคือ:

  1. ด้วยตนเองดาวน์โหลดและติดตั้ง OSXFUSE ฮึกเหิมจากhttp://osxfuse.github.io/ สำคัญ : เมื่อคุณเรียกใช้ตัวติดตั้ง PKG ตรวจสอบให้แน่ใจว่าคุณได้เลือกMacFUSE Compatibility Layerในตัวช่วยสร้าง (ไม่ได้เปิดใช้งานตามค่าเริ่มต้น) - โดยที่ฉันไม่ได้รับข้อผิดพลาดขณะพยายามเมาต์
  2. ดาวน์โหลด FUSE-EXT2 จากhttp://sourceforge.net/projects/fuse-ext2/ด้วยตนเองหรือสำหรับ Sierra / El Capitan จากhttps://github.com/gpz500/fuse-ext2/releaseและเรียกใช้โปรแกรมติดตั้ง 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

การติดตั้งในฐานะผู้ใช้ทั่วไปไม่ได้ผลสำหรับฉัน อาจเป็นเช่นนี้สามารถแก้ไขได้โดยเล่นซอกับสิทธิ์ แต่ฉันไม่ได้ดูมัน

หมายเหตุ: ฉันสงสัยว่าสูตรโฮมบรูว์ไม่ได้ทำงานเพราะ homebrew ติดตั้งosxfuseโดยไม่ต้องเลเยอร์ MacFUSE ความเข้ากันได้

มีสองosxfuseแพ็กเกจใน homebrew:

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

ทั้งสองเวอร์ชันไม่สามารถเมาท์พาร์ติชัน EXT ส่วนใหญ่แล้วรุ่น DMG ( Caskroom/cask/osxfuse) จะล้มเหลวเนื่องจาก homebrew ติดตั้งแพ็คเกจด้วยการตั้งค่าเริ่มต้นซึ่งหมายความว่าจะไม่รวมเลเยอร์ความเข้ากันได้ของ MacFUSE osxfuseรุ่นหลักอาจต้องการพารามิเตอร์การติดตั้งพิเศษเพื่อเปิดใช้งานความเข้ากันได้ของ MacFUSE ดังนั้นจนกว่าจะได้รับการแก้ไขในโฮมบรูว์ควรใช้วิธีการ 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 listmount_ext4.sh disk2s3


1
ลองใช้วิธีนี้ แต่ได้รับข้อผิดพลาดFUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(แต่ไม่มีคำอธิบายปัญหาหรือการอ้างอิง) ฉันได้ติดตั้ง Addon Layer ความสามารถในการ ฉันใช้ macOS Sierra แล้วลองใช้รุ่น Github gzp500
Winterflags

6

นอกจากนี้ยังมี e2fsprogs ใน MacPorts ฉันไม่ได้ทำการทดสอบด้วยตัวเอง แต่มันก็ดูดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.