Existe um aplicativo seguro e estável para ler e gravar em sistemas de arquivos ext4 no Mac   OS   X?

Se não, qual é a melhor maneira de acessar o conteúdo do um sistema de arquivos ext4 no Mac   OS   X?

Comentários

  • Seria mais do que útil se você especificasse qual versão do OS X está executando. Existem problemas de compatibilidade com as soluções disponíveis, dependendo da revisão do sistema operacional.

Resposta

A resposta depende da sua disposição de investir em software comercial:

Se você não se importa em gastar algum dinheiro em um produto comercial , extFS para Mac da Paragon lhe dará acesso de leitura e gravação aos sistemas de arquivos ext2 / ext3 / ext4. O suporte à versão atual s todas as versões do OS X / macOS de 10.10 em diante.

Se você estiver procurando por uma solução gratuita , você pode configurar uma máquina virtual Linux, montar seu (s) volume (s) lá e compartilhá-los via Samba ou (S) FTP. Esta postagem contém alguns detalhes sobre como fazer isso usando o VirtualBox , um aplicativo de máquina virtual gratuito . Observe que esta não é exatamente uma solução leve, mesmo se usar uma VirtualBox VM pré-construída irá poupar você de instalar e configurar uma distribuição Linux do zero.

Comentários

  • Certamente existe ‘ uma solução não vm gratuita?
  • osboxes.org fornece versões mais recentes vs virtualboxes.org.

Resposta

Com base na resposta de Ken: usei fuse4x e fuse-ext2 com sucesso e Eu recomendo fuse-ext2 em vez de ext4fuse. Fuse-ext2 fornece acesso de gravação, enquanto ext4fuse fornece apenas acesso de leitura. Observe que, apesar de seu nome, fuse-ext2 oferece suporte a EXT2 / EXT3 / EXT4.

ext4fuse foi um aborrecimento para mim , porque requer compilação manual e não tem suporte para opções de fuse4x que me permitiriam definir o controle de acesso. fuse-ext2 fornece pacotes para download e a versão 0.0.7 funcionou apenas fi ne. Copiei algumas ISOs grandes sem nenhum problema.

Comentários

  • o fuse-ext2 pode montar coisas como graváveis ou somente leitura?

Resposta

Também é possível instalar o OSXFUSE completamente por meio da brew gerenciador de pacotes de linha de comando:

brew install homebrew/fuse/ext4fuse 

Observe que a instalação diz que certos comandos precisam ser executados como “sudo” além disso.


Com o Yosemite, é melhor dar uma olhada isso . E então certifique-se de que o diretório pode ser lido pelo seu usuário fazendo isto . Para que funcionasse, tive que usar o grupo wheel como este:

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

Resposta

Com as recentes mudanças no homebrew, isso deve ser tão simples quanto:

brew cask install osxfuse brew install ext4fuse 

Você pode ter que reiniciar.

ext4fuse é somente leitura, infelizmente. E você pode precisar usar um sinalizador para fazê-lo funcionar como um usuário normal.

Outros vendo esta questão podem estar interessados em libguestfs . Não estou ciente de uma porta OS X, mas considerando que o VirtualBox tem uma API, não está fora de questão.

Eu me pergunto por que ninguém escreveu uma camada de compatibilidade para permitir o sistema de arquivos do kernel Linux código a ser executado no espaço do usuário / fusível. Ou alguém?

Resposta

Resposta atualizada para (High) Sierra

Para Sierra e High Sierra ext4fuse parece funcionar bem para acesso somente leitura e, portanto, provavelmente poderia ser considerada a opção preferida. Embora outras respostas já dêem alguns exemplos de uso, irei repeti-lo mais uma vez com alguns detalhes importantes:

Instale o ext4fuse com:

 brew install ext4fuse  

Você pode montar como um usuário normal, mas nesse caso você “só poderá acessar arquivos legíveis por todos, por isso, para acesso total, você precisa usar sudo, por exemplo:

 sudo ext4fuse -o allow_other /dev/disk2s1  

Aqui está um script bash que automatiza parcialmente o processo.Quando iniciado, ele criará automaticamente o ponto de montagem após você ser solicitado a inserir um dos identificadores de dispositivo exibidos, 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, você pode usar, por exemplo, diskutil umount /dev/disk2s1 – se receber uma mensagem de desmontagem falhou, então você pode forçar a desmontagem com diskutil umount force /dev/disk2s1, embora seja mais limpo fechar os aplicativos que estão usando os arquivos no disco e tentar desmontar novamente sem force.

Se você tiver arquivos pertencentes a _lpoperator (aparentemente, eles são criados quando você usa rsync com a opção preservar grupo), o seguinte comando permitirá o acesso a esses arquivos:

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

Resposta original para Yosemite e mais antigos * ( obsoleto)

Os pacotes T * wo são necessários para habilitar o suporte EXT2 / 3/4 no OSX: OSXFUSE e FUSE-EXT2 .

O homebrew fórmulas para OSXFUSE e FUSE-EXT2 não funcionou para mim em mavericks ou yosemite.

O que funcionou foi o seguinte:

  1. Baixar e instalar manualmente o OSXFUSE DMG em http://osxfuse.github.io/ . IMPORTANTE : depois de iniciar o instalador PKG, certifique-se de selecionar MacFUSE Compatibility Layer no assistente (não está habilitado por padrão) – sem ele, eu estava recebendo um erro ao tentar montar.
  2. Baixe manualmente FUSE-EXT2 em http://sourceforge.net/projects/fuse-ext2/ ou para Sierra / El Capitan de https://github.com/gpz500/fuse-ext2/releases e execute o Instalador PKG.

Depois de instalar o OSXFUSE e o FUSE-EXT2, você pode montar as partições ext2 / ext3 / ext4 conforme mencionado em outras respostas:

  1. Encontre o nome do dispositivo para a partição EXT que deseja montar (por exemplo, disk0s2 no exemplo abaixo, (ATUALIZAÇÃO) em versões posteriores do MacOS, partições ext3 / ext4 podem ser rotuladas como Microsoft Basic Data e não Linux ):

     1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2  
  2. Monte a partição em um ponto de montagem existente:

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

Montagem como um usuário regular não funcionou para mim. Provavelmente, isso pode ser corrigido alterando as permissões, mas eu não olhei para isso.

Observação: Minha suspeita é que as fórmulas do homebrew não funcionaram porque o homebrew instala osxfuse sem a MacFUSE Compatibility Layer .

Existem dois osxfuse pacotes no homebrew:

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

Ambas as versões falham ao montar partições EXT. Provavelmente, a versão DMG (Caskroom/cask/osxfuse) falha porque o homebrew instala o pacote com as configurações padrão, o que significa que a MacFUSE Compatibility Layer não está incluída. A versão osxfuse principal provavelmente precisa alguns parâmetros de instalação especiais para habilitar a compatibilidade do MacFUSE, então até que isso seja corrigido no homebrew, o método DMG manual deve ser usado.

Este método funcionou em mavericks, yosemite, el capitan e sierra.

Script de montagem EXT2 / 3/4 para versões OSX mais antigas (obsoleto)

Para economizar digitação extra, uso um pequeno script que pega o nome da partição como disk0s2 e o monta em /Volumes/disk0s2, criando a pasta, se necessário:

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

O script é chamado com o nome da partição que você procura por meio de diskutil list, por exemplo mount_ext4.sh disk2s3.

Comentários

  • Tentei, mas infelizmente recebi o erro FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred: (mas não há descrição ou referência do problema). Instalei o complemento Compability Layer. Eu ‘ m no macOS Sierra, então tentei a versão Github gzp500.

Resposta

Se você” está se perguntando qual é a linha de comando para montar uma partição ext4 usando fuse e ext2fuse (por exemplo, quando instalado usando MacPorts port install ext2fuse) – então primeiro você precisa trabalhar onde está a partição Linux:

diskutil list 

Isto irá listar todas as partições para todos os discos e entre elas você deve ver as relevantes listadas na coluna TYPE como Linux Combine o diskX e o número da partição Y assim / dev / diskXsY – e.g:

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

Ele pode reclamar de não ser capaz de gravar no arquivo de log, mas ainda deve montar a partição em seu ponto de montagem inicial. Mas se você deseja montar a partição em um diretório de sistema, você precisa executá-la como root, por exemplo:

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

Se isso não funcionar, tente:

sudo ext2fuse /dev/disk1s2 /sys_mount_point 

Atualização : Mais recentemente, descobri esse fuse-ext2 tem problemas com certos recursos ext4 mais novos, então, em vez disso, é melhor usar ext4fuse (port install ext4fuse ou brew install ext4fuse). Use o comando ext4fuse diretamente:

ext4fuse /dev/disk1s2 ~/mount_point 

Também conforme mencionado por Timothy nos comentários, você normalmente só precisa usar sudo se você estiver montando fora do seu diretório pessoal ou o disco (/ dev / diskX) está acessível apenas pelo root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point 

Deve-se notar que você só pode acessar esse sistema de arquivos montado como root / sudo. Ex:

sudo ls /sys_mount_point 

E para desmontar o sistema de arquivos, você apenas usa o umount (com sudo se usado para montar a partição):

umount ~/mount_point 

Comentários

  • Você só precisa acessar a unidade como root se montá-la fora de seu diretório inicial. Você pode cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mnt sem sudo / root.
  • mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/ mount_fuse-ext2 para …: Não existe tal arquivo ou diretório

Resposta

Só para constar, testei o driver Paragon ExtFS (versão de teste) em meu MacBook Pro para gravar em partição ext4 no Linux. Descobri que o driver estava muito instável e criou corrupções no sistema de arquivos que fsck não foi capaz de reparar nem no Linux nem no Utilitário de disco.

Meu idéia era ter acesso à minha partição /home do Mac OS X usando este driver Paragon, mas não sugiro fazer esta configuração. Até agora, tenho meu /home partição no Linux formatada para hfsplus sem registro no diário, e então posso acessar meus arquivos do Mac OS X. Claro, de vez em quando eu consigo alguns problemas no meu FS mas não é muito frequente. No entanto, também não sugiro esta configuração (pelo menos que tenha uma cópia de segurança actualizada para o seu trabalho diário).

Por fim, acredito que Paragon é mais adequado talvez para uso em discos rígidos externos, mas de qualquer forma não é muito confiável por ser um software cuja licença é cara.

Atualização: Em maio de 2015, formatei meu / home para ext4, e eu monto o sistema de arquivos usando fuse-ext2 em combinação com FUSE para OS X. Eu posso acessar a partição ext4 para ler e escrever. É uma configuração mais sólida do que a que descrevi anteriormente.

Comentários

  • Posso confirmar a última entrada aqui onde o driver Paragon ExtFS pode causar alguns problemas graves em seus discos Linux. Para mim, que estou executando dualbooting OSX e Linux, o Paragon criou corrupções no meu / dispositivo. Isso foi fácil de resolver, mas não é uma solução estável …
  • Mais más experiências com o driver Paragon ExtFS. Pânicos consistentes no kernel levando à reinicialização do sistema, corrupção do sistema de arquivos (felizmente o fsck no Linux box funcionou). Tentei em duas unidades externas diferentes com os mesmos resultados.

Resposta

Você pode inicializar Linux VM rapidamente em seu OS X usando o Vagrant . Você precisa instalar o provedor de VM, como VirtualBox e Vagrant por meio do arquivo .dmg do site ou usando o barril de cerveja .

Depois de ter o vagrant comando instalado, execute-o em qualquer pasta selecionada:

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

Isso irá gerar Vagrantfile arquivo de configuração e .vagrant pasta.

e você terá o Linux box inicializado em alguns minutos (baixado de Atlas Hashicorp repositório).

Em seguida, conecte-se à caixa por meio do comando: vagrant ssh e tentam montar seu dispositivo dentro do Linux.

Por padrão, sua pasta atual será sincronizado com a pasta /vagrant na VM. Para opções mais avançadas, você pode modificar com a configuração necessária.

Portanto, se você montar seu sistema de arquivos dentro da pasta /vagrant, ele será automaticamente sincronizado de volta para seu macOS.


Como alternativa, você só precisa instalar um VirtualBox , executar o aplicativo GUI, instalar e inicializar uma versão mínima do Linux, por exemplo, Ubuntu para obter o mesmo que explicado acima.


As soluções não nativas acima não são ideais, mas pelo menos sua O macOS seria mais estável do que instalar extensões de kernel instáveis, o que pode causar muitas falhas no sistema.

Comentários

  • Executado com vagrant init ubuntu/xenial64; vagrant up --provider virtualbox as ubuntu/vivid64 não está mais disponível.
  • Tente usar ubuntu/trusty64 em vez disso.

Resposta

Eu tinha uma unidade USB formatada em ext4 que consegui montar depois de instalar osxfuse . Ler dele funciona muito bem, mas não tenho certeza se escrever é seguro.

Além disso, para mover arquivos do sistema de arquivos do OS X ( HFS + ) para ext4, você pode primeiro querer remover os arquivos .DS_Store ocultos que o sistema de arquivos OS X entra furtivamente, pois eles ocasionalmente causam inodes .

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

É melhor do que ter que corrigi-los depois com um fsck .

Resposta

Há também e2fsprogs disponível em MacPorts. Eu não “t testei sozinho, mas parece promissor.

Resposta

Dê uma olhada em – > https://github.com/alperakcan/fuse-ext2

Isso é o que tentarei a seguir.

Para ext2, existe uma versão macports: https://ports.macports.org/port/ext2fuse/summary

Existe um módulo ext4 para osxfuse (que você pode em travar via macports), mas é somente leitura!

A infinidade de versões é um pouco confusa, mas em um ponto eu consegui fazê-lo funcionar, tentarei novamente e atualizarei esta resposta se funcionar . 🙂

o osxfuse está disponível em macports e como um pacote independente. Não sei qual funciona melhor ainda nas versões mais recentes do OS X, mas prefiro macports para meu software livre no OS X.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *