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:
- 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.
- 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:
-
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
-
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
asubuntu/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.