มีแอพพลิเคชั่นที่ปลอดภัยและเสถียรสำหรับการอ่านและเขียนไปยังระบบไฟล์ext4บน Mac OS X หรือไม่?
ถ้าไม่เป็นวิธีที่ดีที่สุดในการเข้าถึงเนื้อหาของระบบไฟล์ ext4 ใน Mac OS X คืออะไร?
มีแอพพลิเคชั่นที่ปลอดภัยและเสถียรสำหรับการอ่านและเขียนไปยังระบบไฟล์ext4บน Mac OS X หรือไม่?
ถ้าไม่เป็นวิธีที่ดีที่สุดในการเข้าถึงเนื้อหาของระบบไฟล์ ext4 ใน Mac OS X คืออะไร?
คำตอบ:
คำตอบขึ้นอยู่กับคุณว่าต้องการลงทุนในซอฟต์แวร์เชิงพาณิชย์:
ถ้าคุณไม่คิดค่าใช้จ่ายเงินบางส่วนในผลิตภัณฑ์ในเชิงพาณิชย์ , พารากอนextFS สำหรับ Macจะให้คุณอ่านและเขียนการเข้าถึงระบบไฟล์ ext2 / ext3 / ext4 เวอร์ชันปัจจุบันรองรับ OS X / macOS ทุกรุ่นตั้งแต่ 10.10 ขึ้นไป
หากคุณกำลังมองหาวิธีแก้ปัญหาฟรีคุณสามารถติดตั้งเครื่องเสมือน Linux ติดตั้งวอลลุ่มของคุณและแบ่งปันผ่านSambaหรือ (S) FTP โพสต์นี้มีรายละเอียดบางอย่างเกี่ยวกับการบรรลุผลโดยใช้VirtualBoxซึ่งเป็นแอปพลิเคชันเครื่องเสมือนฟรี โปรดทราบว่านี่ไม่ใช่วิธีการแก้ปัญหาที่มีน้ำหนักเบาแม้ว่าการใช้VirtualBox VM ที่สร้างไว้ล่วงหน้าจะสำรองไว้ให้คุณติดตั้งและกำหนดค่าลินุกซ์ distro จากศูนย์
คำตอบของเคน: ฉันใช้fuse4xและfuse-ext2สำเร็จแล้วและฉันขอแนะนำ fuse-ext2 สำหรับ ext4fuse
ext4fuse เป็นเรื่องยุ่งยากสำหรับฉันเพราะมันต้องมีการรวบรวมด้วยตนเองและไม่สนับสนุนตัวเลือก fuse4x ที่จะอนุญาตให้ฉันตั้งค่าการควบคุมการเข้าถึง fuse-ext2 ให้แพ็คเกจที่ดาวน์โหลดได้และเวอร์ชั่น 0.0.7 นั้นใช้ได้ดี ฉันคัดลอก ISO ขนาดใหญ่ไปสองสามครั้งโดยไม่มีปัญหาใด ๆ
หนึ่งยังสามารถติดตั้ง OSXFUSE สมบูรณ์ผ่านการชงผู้จัดการคำสั่งแพคเกจบรรทัด:
brew install homebrew/fuse/ext4fuse
โปรดทราบว่าการติดตั้งจะต้องเรียกใช้คำสั่งบางอย่างเป็น 'sudo' เพิ่มเติมจากสิ่งนี้
ด้วยโยเซมิตีให้ดูที่นี่ดีกว่า และจากนั้นให้แน่ใจว่าไดเรกทอรีสามารถอ่านได้โดยผู้ใช้ของคุณโดยการทำเช่นนี้ สำหรับการทำงานฉันต้องใช้กลุ่มล้ออย่างนี้
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
ด้วยการเปลี่ยนแปลง homebrew ล่าสุดนี้ควรจะง่ายเหมือน:
brew cask install osxfuse
brew install ext4fuse
คุณอาจต้องรีบูท
ext4fuseเป็นแบบอ่านอย่างเดียวโชคไม่ดี และคุณอาจต้องใช้การตั้งค่าสถานะเพื่อให้มันทำงานในฐานะผู้ใช้ปกติ
อื่น ๆ ดูคำถามนี้อาจจะสนใจในlibguestfs ฉันไม่ทราบถึงพอร์ต OS X แต่เมื่อพิจารณาว่า VirtualBox มี API มันก็ไม่เป็นปัญหา
ฉันสงสัยว่าทำไมไม่มีใครเขียนเลเยอร์ความเข้ากันได้เพื่อให้โค้ดระบบไฟล์เคอร์เนล Linux ทำงานใน userspace / fuse หรือมีใครบางคน?
หากคุณสงสัยว่าบรรทัดคำสั่งคือการเมาต์พาร์ติชัน 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 / ราก
เพียงเพื่อบันทึกฉันได้ทดสอบไดรเวอร์ 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 เพื่ออ่านและเขียน เป็นการตั้งค่าที่แน่นหนากว่าที่ฉันได้อธิบายไว้ข้างต้น
คุณสามารถบูตลินุกซ์ 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
ไม่สามารถใช้ได้อีกต่อไป
ubuntu/trusty64
แทน
ผมมีการจัดรูปแบบ ext4 ไดรฟ์ USB ที่ผมสามารถที่จะติดตั้งหลังจากที่ผมติดตั้งosxfuse การอ่านจากมันใช้งานได้ดี แต่ฉันไม่แน่ใจว่าการเขียนนั้นปลอดภัยหรือไม่
นอกจากนี้สำหรับการย้ายไฟล์จากระบบไฟล์ของ OS X ( HFS + ) ไปยัง ext4 คุณอาจต้องการลบไฟล์. DS_Store ที่ซ่อนอยู่เหล่านั้นที่ระบบไฟล์ OS X แอบเข้ามาเนื่องจากบางครั้งมันทำให้inodeเสีย
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
นี่คือสคริปต์ทุบตีซึ่งบางส่วนทำให้กระบวนการโดยอัตโนมัติ เมื่อเปิดตัวมันจะสร้างจุดเชื่อมต่อโดยอัตโนมัติหลังจากคุณได้รับแจ้งให้ป้อนหนึ่งในตัวระบุอุปกรณ์ที่แสดงเช่น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 หรือโยเซมิตี
สิ่งที่ได้ผลคือ:
เมื่อคุณติดตั้งทั้ง 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
การติดตั้งในฐานะผู้ใช้ทั่วไปไม่ได้ผลสำหรับฉัน อาจเป็นเช่นนี้สามารถแก้ไขได้โดยเล่นซอกับสิทธิ์ แต่ฉันไม่ได้ดูมัน
หมายเหตุ: ฉันสงสัยว่าสูตรโฮมบรูว์ไม่ได้ทำงานเพราะ 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
ในการบันทึกการพิมพ์พิเศษบางอย่างฉันใช้สคริปต์เล็ก ๆ ซึ่งใช้ชื่อพาร์ติชันเช่น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:
(แต่ไม่มีคำอธิบายปัญหาหรือการอ้างอิง) ฉันได้ติดตั้ง Addon Layer ความสามารถในการ ฉันใช้ macOS Sierra แล้วลองใช้รุ่น Github gzp500
นอกจากนี้ยังมี e2fsprogs ใน MacPorts ฉันไม่ได้ทำการทดสอบด้วยตัวเอง แต่มันก็ดูดี