¿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?
¿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?
Respuestas:
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.
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.
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)
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?
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 ext4fuse
o 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 sudo
si 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 umount
comando normal (con sudo si se usa para montar la partición):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
sin sudo / root.
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 fsck
no podía reparar ni en Linux ni en Disk Utility.
Mi idea era tener acceso a mi /home
partición desde Mac OS X usando este controlador Paragon, pero no sugiero hacer esta configuración. Hasta ahora, tengo mi /home
partición en Linux formateada hfsplus
sin 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.
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 vagrant
comando instalado, ejecute esto en cualquier carpeta seleccionada:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Esto generará el Vagrantfile
archivo de configuración y la .vagrant
carpeta.
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 ssh
e intente montar su dispositivo dentro de Linux.
Por defecto, su carpeta actual se sincronizará con la /vagrant
carpeta en VM. Para opciones más avanzadas, puede modificar Vagrantfile
con la configuración requerida.
Entonces, si monta su sistema de archivos dentro de la /vagrant
carpeta, 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.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
como ubuntu/vivid64
ya no está disponible.
ubuntu/trusty64
en su lugar.
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 .
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
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:
Una vez que haya instalado OSXFUSE y FUSE-EXT2, puede montar las particiones ext2 / ext3 / ext4 como se menciona en otras respuestas:
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 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
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 osxfuse
sin la Capa de compatibilidad MacFUSE .
Hay dos osxfuse
paquetes 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 osxfuse
versió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.
Para guardar algo de tipeo adicional, uso un pequeño script que toma el nombre de la partición, como disk0s2
y 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
.
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.