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

131

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

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

Evan Kroske
fuente
Sería más que útil si especificara qué versión de OS X está ejecutando. Hay problemas de compatibilidad con las soluciones disponibles dependiendo de la revisión del sistema operativo.
kopischke

Respuestas:

60

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

Si no le importa gastar dinero en un producto comercial , extFS para Mac de Paragon le dará acceso de lectura y escritura a los sistemas de archivos ext2 / ext3 / ext4. La versión actual admite 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 sus volúmenes allí y compartirlos a través de Samba o (S) FTP. Esta publicación tiene algunos detalles sobre cómo lograr esto usando VirtualBox , una aplicación de máquina virtual gratuita. Tenga en cuenta que esta no es exactamente una solución ligera, incluso si el uso de una VM VirtualBox preconstruida le ahorrará la instalación y configuración de una distribución de Linux desde cero.

kopischke
fuente
2
¿Seguramente hay una solución gratuita que no sea VM?
Pacerier
osboxes.org ofrece versiones más nuevas frente a virtualboxes.org.
Tim
36

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

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

pwnall
fuente
¿puede fuse-ext2 montar cosas como grabables o solo de lectura?
Knocte
25

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

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 mira esto . Y luego asegúrese de que su usuario pueda leer el directorio haciendo esto . Para que funcione, tuve que usar el grupo de ruedas de esta manera:

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

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

brew cask install osxfuse
brew install ext4fuse

Puede que tenga que reiniciar.

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

Otros que vean esta pregunta pueden estar interesados ​​en libguestfs . No conozco un puerto OS X, pero teniendo en cuenta 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?

Ken Arnold
fuente
10

Si se pregunta cuál es la línea de comando para montar una partición ext4 usando fuse y ext2fuse (por ejemplo, cuando se instala usando MacPorts port install ext2fuse), entonces primero debe averiguar dónde está la partición de Linux:

diskutil list

Esto enumerará todas las particiones para todos los discos y entre ellas debería ver las relevantes enumeradas en la columna TIPO como Linux. Combine el diskX y el número de partición Y así / 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í debe montar la partición en su punto de montaje de inicio. Pero si desea montar la partición en un directorio del sistema, entonces 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 características más recientes de ext4, por lo que es mejor usar ext4fuse ( port install ext4fuseo brew install ext4fuse). Use el comando ext4fuse directamente:

ext4fuse /dev/disk1s2 ~/mount_point

También, como mencionó Timothy en los comentarios, generalmente solo necesita usar sudosi está montando fuera de su directorio de inicio o si el disco (/ dev / diskX) solo es accesible desde la raíz:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Cabe señalar que solo puede acceder a ese sistema de archivos montado como root / sudo. p.ej

sudo ls /sys_mount_point

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

umount ~/mount_point
Pierz
fuente
Solo necesita acceder al disco como root si lo monta fuera de su directorio de inicio. Puede cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntsin sudo / root.
Timothy Zorn
mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 for ...: No existe dicho archivo o directorio
Wolfgang Fahl
9

Solo para que conste, 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 creaba daños en el sistema de archivos que fsckno podía reparar ni en Linux ni en Disk Utility.

Mi idea era tener acceso a mi /homepartición desde Mac OS X usando este controlador Paragon, pero no sugiero hacer esta configuración. Hasta ahora, tengo mi /homepartición en Linux formateada hfsplussin 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 tenga una copia de seguridad actualizada para su trabajo diario).

Finalmente, creo que Paragon es más adecuado quizás para usarlo 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 a ext4, y monte el sistema de archivos usando fuse-ext2 en combinación con FUSE para OS X. Puedo acceder a la partición ext4 para leer y escribir. Es una configuración más sólida que la que describí anteriormente.

muammar
fuente
Puedo confirmar la última entrada aquí donde el controlador Paragon ExtFS puede causar problemas en sus unidades de Linux. Para mí, que está iniciando dualmente OSX y Linux, Paragon creó corrupciones en mi / dispositivo. Esto fue fácil de resolver, pero no es una solución estable ...
Más mala experiencia con el controlador Paragon ExtFS. Pánico constante del kernel que conduce al reinicio del sistema, corrupción del sistema de archivos (afortunadamente fsck en Linux box funcionó). Probado en dos unidades externas diferentes con los mismos resultados.
9

Puede iniciar Linux VM rápidamente en su OS X usando Vagrant . Debe instalar un proveedor de VM, como VirtualBox y Vagrant, ya sea a través del archivo .dmg desde el sitio o utilizando brew cask .

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

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

Esto generará el Vagrantfilearchivo de configuración y la .vagrantcarpeta.

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

Luego, conéctese a la caja mediante el comando: vagrant sshe intente montar su dispositivo dentro de Linux.

Por defecto, su carpeta actual se sincronizará con la /vagrantcarpeta en VM. Para opciones más avanzadas, puede modificar Vagrantfilecon la configuración requerida.

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


Alternativamente, solo necesita 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.

kenorb
fuente
Funcionó con vagrant init ubuntu/xenial64; vagrant up --provider virtualboxcomo ubuntu/vivid64ya no está disponible.
Fredrik Erlandsson
Intente usar ubuntu/trusty64en su lugar.
kenorb
8

Tenía una unidad USB con formato ext4 que pude montar después de instalar osxfuse . Leerlo funciona muy bien, pero no estoy seguro de si escribir es seguro.

Además, para mover archivos del sistema de archivos de OS X ( HFS + ) a ext4, es posible que primero desee eliminar esos archivos .DS_Store ocultos en los que se cuela el sistema de archivos de OS X, ya que ocasionalmente causan inodos incorrectos .

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

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

yuvilio
fuente
7

Respuesta actualizada para (Alta) Sierra

Para Sierra y High Sierra, ext4fuse parece funcionar bien solo para acceso de lectura y, por lo tanto, probablemente podría considerarse 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 usuario normal, pero en ese caso solo podrá acceder a archivos legibles en todo el mundo, es por eso que necesita un acceso completo sudo, por ejemplo:

sudo ext4fuse -o allow_other /dev/disk2s1

Aquí hay un script bash que automatiza parcialmente el proceso. Cuando se inicie, creará automáticamente el punto de montaje después de que se le solicite que ingrese uno de los identificadores de dispositivo que se muestran, 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, puede usar, por ejemplo diskutil umount /dev/disk2s1, si recibe un mensaje de que el desmontaje falló, puede forzar el desmontaje con diskutil umount force /dev/disk2s1, aunque sería más limpio cerrar las aplicaciones que están usando archivos en el disco y volver a intentar desmontar sin él force.

Si tiene archivos de propiedad _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 mayores (en desuso)

Se necesitan dos paquetes para habilitar el soporte EXT2 / 3/4 en OSX: OSXFUSE y FUSE-EXT2 .

Los caseros fórmulas para OSXFUSE y el fusible-EXT2 no funcionó para mí en cualquiera de rebeldes o Yosemite.

Lo que funcionó fue lo siguiente:

  1. Descargue e instale manualmente el DMG OSXFUSE desde http://osxfuse.github.io/ . IMPORTANTE : una vez que inicie el instalador de PKG, asegúrese de haber seleccionado la Capa de compatibilidad de MacFUSE en el asistente (no está habilitado de forma predeterminada), sin él recibí un error al intentar montar.
  2. Descargue manualmente FUSE-EXT2 desde http://sourceforge.net/projects/fuse-ext2/ o para Sierra / El Capitan desde https://github.com/gpz500/fuse-ext2/releases y ejecute el instalador PKG.

Una vez que haya instalado OSXFUSE y FUSE-EXT2, 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, disk0s2en el ejemplo a continuación, (ACTUALIZAR) en versiones posteriores de MacOS, las particiones ext3 / ext4 pueden etiquetarse 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 habitual no funcionó para mí. Probablemente esto se puede solucionar jugando con los permisos, pero no lo investigué.

Nota: Mi sospecha es que las fórmulas homebrew no funcionaron porque homebrew se instala osxfusesin la Capa de compatibilidad MacFUSE .

Hay dos osxfusepaquetes en homebrew:

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

Ambas versiones no pueden montar particiones EXT. Lo más probable es que la versión DMG ( Caskroom/cask/osxfuse) falle porque homebrew instala el paquete con la configuración predeterminada, lo que significa que la Capa de compatibilidad MacFUSE no está incluida. La osxfuseversión principal probablemente necesita algún parámetro de instalación especial para habilitar la compatibilidad con MacFUSE, por lo tanto, hasta que esto se solucione en homebrew, se debe usar el método DMG manual.

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

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

Para guardar algo de tipeo adicional, uso un pequeño script que toma el nombre de la partición, como disk0s2y lo monta debajo /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"

La secuencia de comandos se llama con el nombre de la partición que busca diskutil list, por ejemplo mount_ext4.sh disk2s3.

ccpizza
fuente
1
Intenté esto pero desafortunadamente recibí el error FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(pero no hay una descripción o referencia del problema). He instalado el complemento Capa de compatibilidad. Estoy en macOS Sierra, así que probé la versión Github gzp500.
Winterflags
6

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

crysaz
fuente