¿Cómo puedo montar un sistema de archivos ext4 en OS X?

128

¿Existe una aplicación segura y estable para leer y escribir en los sistemas de archivos ext4 en Mac OS X? p>

Si no, ¿cuál es la mejor manera de acceder a los contenidos de un sistema de archivos ext4 en Mac OS X?

    
pregunta Evan Kroske 01.11.2011 - 04:14

10 respuestas

59

La respuesta depende de su disposición a invertir en software comercial:

Si no le importa gastar algo de dinero en un producto comercial , Paragon's extFS para Mac le dará acceso de lectura y escritura a los sistemas de archivos ext2 / ext3 / ext4. La versión actual es compatible con todas las versiones de OS X / macOS desde 10.10 en adelante.

Si está buscando una solución gratuita , puede configurar una máquina virtual Linux, montar su (s) volumen (s) allí (s) y compartirlos a través de Samba o (S) FTP. Esta publicación tiene algunos detalles sobre cómo lograr esto utilizando VirtualBox , una aplicación de máquina virtual gratuita. Tenga en cuenta que esta no es exactamente una solución liviana, incluso si el uso de una precompilado VirtualBox VM evitará que instale y configure una distribución Linux desde cero.

    
respondido por el kopischke 01.11.2011 - 21:55
36

Sobre la base de la respuesta de Ken: usé fuse4x y fuse-ext2 con éxito, y recomiendo fuse-ext2 sobre ext4fuse.

ext4fuse fue una molestia para mí, ya que requiere compilación manual y no tiene soporte para las opciones de fuse4x que me permitirían establecer el control de acceso. fuse-ext2 proporciona paquetes descargables, y la versión 0.0.7 funcionó bien. Copié unas pocas ISOs grandes sin ningún problema.

    
respondido por el pwnall 21.04.2012 - 00:38
25

También se puede instalar OSXFUSE completamente a través del brew administrador de paquetes de la línea de comandos:

brew install homebrew/fuse/ext4fuse

Tenga en cuenta que la instalación indica que ciertos comandos deben ejecutarse como 'sudo' además de esto.

Con Yosemite, mejor eche un vistazo a esto . Y luego, asegúrese de que su usuario pueda leer el directorio haciendo esto . Para que funcionara tuve que usar el grupo de ruedas así:

sudo dscl . append /Groups/wheel GroupMembership $(whoami)
    
respondido por el akauppi 20.04.2014 - 12:58
15

Con los cambios recientes en homebrew, esto debería ser tan simple como:

brew cask install osxfuse
brew install ext4fuse

Es posible que tengas que reiniciar.

ext4fuse es de solo lectura, desafortunadamente. Y es posible que deba usar una marca para que funcione como un usuario normal. p>

Los demás que vean esta pregunta pueden estar interesados en libguestfs . No tengo conocimiento de un puerto OS X, pero considerando que VirtualBox tiene una API, no está fuera de discusión.

Me pregunto por qué nadie ha escrito una capa de compatibilidad para permitir que el código del sistema de archivos del kernel de Linux se ejecute en el espacio de usuario / fusible. ¿O tiene alguien?

    
respondido por el Ken Arnold 02.11.2011 - 15:28
10

Si te estás preguntando cuál es la línea de comandos para montar una partición ext4 con fuse y ext2fuse (por ejemplo, cuando se instala con MacPorts port install ext2fuse ), primero debes averiguar dónde está la partición Linux:

diskutil list

Esto mostrará una lista de todas las particiones para todos los discos y entre ellas debería ver las relevantes en la columna TIPO como Linux. Combine el diskX y el número de partición Y como esto / dev / diskXsY - por ejemplo:

mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point

Puede quejarse de no poder escribir en el archivo de registro, pero aún así debería montar la partición en su punto de montaje principal. Pero si desea montar la partición en un directorio del sistema, debe ejecutarla como root, por ejemplo:

sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point

Si eso no funciona, intente:

sudo ext2fuse /dev/disk1s2 /sys_mount_point

Actualización : más recientemente descubrí que fuse-ext2 tiene problemas con ciertas funciones ext4 más nuevas, por lo que es mejor usar ext4fuse ( port install ext4fuse o %código%). Use el comando ext4fuse directamente:

ext4fuse /dev/disk1s2 ~/mount_point

También como lo menciona Timothy en los comentarios, normalmente solo necesita usar brew install ext4fuse si está montando fuera de su directorio de inicio o si el disco (/ dev / diskX) solo es accesible por root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Debe tenerse en cuenta que solo puede acceder a ese sistema de archivos montado como root / sudo. por ejemplo

sudo ls /sys_mount_point

Y para desmontar el sistema de archivos, simplemente usa el comando normal sudo (con sudo si se usa para montar la partición):

umount ~/mount_point
    
respondido por el Pierz 15.12.2014 - 22:57
9

Solo para el registro, he probado el controlador Paragon ExtFS (versión de prueba) en mi MacBook Pro para escribir en la partición ext4 en Linux. Descubrí que el controlador era muy inestable, y creó daños en el sistema de archivos que fsck no pudo reparar ni en Linux ni en la Utilidad de Discos.

Mi idea fue tener acceso a mi partición /home desde Mac OS X usando este controlador Paragon, pero no sugiero hacer esta configuración. Hasta ahora, tengo mi partición /home en Linux formateada para hfsplus sin registro en diario, y luego puedo acceder a mis archivos desde Mac OS X. Por supuesto, de vez en cuando tengo algunos problemas en mi FS pero no es muy frecuente Sin embargo, tampoco sugiero esta configuración (al menos que tiene una copia de seguridad actualizada para su trabajo diario).

Finalmente, creo que Paragon es más adecuado tal vez para usar en discos duros externos, pero de todos modos no es muy confiable por ser un software cuya licencia es costosa.

Actualización: A partir de mayo de 2015, he formateado mi / home en ext4, y monte el sistema de archivos utilizando fuse-ext2 en combinación con FUSE para OS X. Puedo acceder a la partición ext4 para Lee y escribe. Es una configuración más sólida que la que describí anteriormente.

    
respondido por el muammar 13.11.2013 - 11:53
9

Puede iniciar Linux VM rápidamente en su OS X utilizando Vagrante . Debe instalar un proveedor de máquinas virtuales como VirtualBox y Vagrant mediante el archivo .dmg del sitio o utilizando brew cask .

Una vez que tenga instalado el comando vagrant , ejecute esto en cualquier carpeta seleccionada:

vagrant init ubuntu/trusty64; vagrant up --provider virtualbox

Esto generará Vagrantfile config file y .vagrant folder.

y tendrás la caja de Linux iniciada en pocos minutos (descargada del repositorio Atlas Hashicorp ).

Luego conéctese a la caja a través del comando: vagrant ssh y intente montar su dispositivo dentro de Linux.

Por defecto, su carpeta actual se sincronizará con la carpeta /vagrant en la máquina virtual. Para obtener opciones más avanzadas, puede modificar Vagrantfile con la configuración requerida.

Entonces, si monta su sistema de archivos dentro de la carpeta /vagrant , se sincronizará automáticamente con su macOS.

Alternativamente, solo necesitas instalar un VirtualBox , ejecutar la aplicación GUI, instalar y arrancar una versión mínima de Linux, por ejemplo. Ubuntu para lograr lo mismo que se explicó anteriormente.

Las soluciones no nativas anteriores no son ideales, pero al menos su macOS sería más estable en lugar de instalar extensiones de kernel inestables que pueden causar muchos bloqueos del sistema.

    
respondido por el kenorb 30.05.2014 - 14:05
8

Tuve una unidad USB con formato ext4 que pude montar después de instalar osxfuse . La lectura de esto funciona muy bien, pero no estoy seguro de si escribir es seguro.

También, para mover archivos del sistema de archivos de OS X ( HFS + ) a ext4, es posible que primero desee elimine esos archivos ocultos .DS_Store el sistema de archivos OS X se cuela en ya que ocasionalmente causan malos inodes .

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

Es mejor que tener que corregirlos después con un comando fsck .

    
respondido por el yuvilio 28.12.2012 - 05:12
5

También hay e2fsprogs disponibles en MacPorts. Todavía no lo he probado, pero parece prometedor.

    
respondido por el crysaz 30.11.2012 - 20:23
5

Respuesta actualizada para (Alta) Sierra

Para Sierra y High Sierra ext4fuse parece funcionar bien para acceso de lectura solamente y, por lo tanto, probablemente se considere la opción preferida. Mientras que otras respuestas ya dan algunos ejemplos de uso, lo repetiré una vez más con algunos detalles importantes:

Instale ext4fuse con:

brew install ext4fuse

Puede montar como un usuario normal, pero en ese caso solo podrá acceder a archivos legibles en todo el mundo, por eso, para el acceso completo, necesita usar sudo , por ejemplo:

sudo ext4fuse -o allow_other /dev/disk2s1

Aquí hay un script de bash que automatiza parcialmente el proceso. Cuando se inicie, creará automáticamente el punto de montaje después de que se le solicite ingresar uno de los identificadores de dispositivos mostrados, como 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}

Para desmontar puedes usar, por ejemplo, diskutil umount /dev/disk2s1 : si recibes un mensaje que indica que el desmontaje falló, entonces puedes forzar el desmontaje con diskutil umount force /dev/disk2s1 , aunque sería más limpio cerrar las aplicaciones que usan archivos en el disco y reintentar el desmontaje sin force .

Si tiene archivos que pertenecen a _lpoperator (aparentemente, se crean cuando usa rsync con la opción de preservar grupo), el siguiente comando le permitirá acceder a esos archivos:

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

Respuesta original para Yosemite y anteriores (en desuso)

Se necesitan dos paquetes para habilitar la compatibilidad con EXT2 / 3/4 en OSX: OSXFUSE y FUSE-EXT2 .

Las fórmulas homebrew para OSXFUSE y FUSE-EXT2 no funcionaron para mí en Mavericks o Yosemite.

Lo que funcionó fue lo siguiente:

  1. Descargue e instale manualmente OSXFUSE DMG desde enlace . IMPORTANTE : una vez que inicie el instalador de PKG, asegúrese de haber seleccionado MacFUSE Compatibility Layer en el asistente (no está habilitado de forma predeterminada). Sin él, recibí un error mientras tratando de montar.
  2. Descargue manualmente FUSE-EXT2 desde enlace o para Sierra / El Capitan desde enlace y ejecute el instalador PKG.

Una vez que tenga OSXFUSE y FUSE-EXT2 instalados, puede montar las particiones ext2 / ext3 / ext4 como se menciona en otras respuestas:

  1. Busque el nombre del dispositivo para la partición EXT que desea montar (por ejemplo, disk0s2 en el ejemplo a continuación, (ACTUALIZAR) en versiones posteriores de MacOS, las particiones ext3 / ext4 podrían estar etiquetadas como Datos básicos de Microsoft y no Linux ):

    # diskutil list | grep Linux 1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2

  2. Monte la partición en un punto de montaje existente:

    sudo mkdir -p /Volumes/ext4 sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4

El montaje como usuario regular no funcionó para mí. Probablemente esto pueda solucionarse jugando con los permisos, pero no lo estudié.

Nota: mi sospecha es que las fórmulas de homebrew no funcionaron porque homebrew instala osxfuse sin la MacFUSE Compatibility Layer .

Hay dos paquetes osxfuse en homebrew:

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

Ambas versiones no pueden montar particiones EXT. Probablemente, la versión DMG ( Caskroom/cask/osxfuse ) falla porque homebrew instala el paquete con la configuración predeterminada, lo que significa que no se incluye MacFUSE Compatibility Layer . La versión principal de osxfuse probablemente necesite algún parámetro de instalación especial para habilitar la compatibilidad con MacFUSE, por lo que hasta que esto se solucione en Homebrew, se debe usar el método DMG manual.

Este método me funcionó en mavericks, yosemite, elcapitan y sierra.

EXT2 / 3/4 script de montaje para versiones anteriores de OSX (en desuso)

Para guardar algo de escritura adicional, uso un pequeño script que toma el nombre de la partición como disk0s2 y lo monta bajo /Volumes/disk0s2 , creando la carpeta si es necesario:

### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"

Se llama al script con el nombre de la partición que busca a través de diskutil list , por ejemplo. mount_ext4.sh disk2s3 .

    
respondido por el ccpizza 06.01.2016 - 15:46

Lea otras preguntas en las etiquetas