Linux: Escrevendo em partições NTFS com o NTFS-3g

Linux: Escrevendo em partições NTFS com o NTFS-3g

O suporte a escrita em partições NTFS sempre foi um problema no Linux. Por ser um sistema de arquivos proprietário, não documentado e bastante complexo, desenvolver um driver capaz de escrever em partições Windows formatadas em NTFS, sem risco de corromper os dados gravados, é um desafio formidável.

Isto era um grande problema para quem mantinha o Windows em dual-boot, pois era possível apenas ler os arquivos da partição. Como o Windows também não suporta nenhum dos sistemas de arquivos usados no Linux, você acabava sendo obrigado a instalar o Windows em uma partição FAT32 (o que tem suas desvantagens, já que ele é um sistema muito mais propenso a problemas), ou pelo menos manter uma partição FAT32 disponível, para servir como uma “área de troca” entre os dois sistemas.

Até hoje, o driver que havia chegado mais perto era o Paragon, um software comercial, caro e que ainda por cima tinha a desvantagem de ser bastante lento. Num distante segundo lugar, tínhamos o Captive, que modificava partições NTFS usando o próprio driver do Windows. Apesar de ser aberto, o Captive era complicado de instalar, ainda mais lento que o Paragon e ainda por cima pouco estável, corrompendo com freqüência os dados da partição.

Mas, felizmente tudo isso é coisa do passado. O NTFS-3g pode ser considerável o primeiro driver de escrita em partições NTFS for Linux realmente utilizável, finalmente oferecendo uma solução simples para o antigo problema.

Ao invés de ser um driver complexo, incluído no Kernel, o NTFS-3g roda através do Fuse, um módulo que permite criar drivers para sistemas de arquivo que rodam como programas comuns. Outro bom exemplo de driver que roda sobre o Fuse é o GmailFS, que permite “montar” sua conta do Gmail, usando-a para guardar arquivos.

Graças ao Fuse, você não precisa se preocupar com headers e patches do Kernel. É só instalar e usar.

O primeiro passo é carregar o módulo do Fuse, usando o modprobe. Ele está disponível em qualquer distribuição minimamente atual:

# modprobe fuse

Use o comando abaixo para adicioná-lo no arquivo “/etc/modules” (como root), de forma a garantir que ele vai ser carregado durante o boot:

# echo “fuse” >> /etc/modules

A partir daí, você precisa instalar os pacote “libfuse” (ou “libfuse2”) e “fuse-utils”, necessários para que o ntfs-3g funcione. Se você usa uma distribuição baseada no Debian Etch (incluindo o Kurumin 6.0 e 6.1), ou o Ubuntu 6.6, pode instalar diretamente via apt-get:

# apt-get install libfuse2 fuse-utils

Em outras distribuições, procure pelos pacotes “libfuse” e “fuse-utils, responsáveis pela instalação do Fuse. Por ser um lançamento recente, o ntfs-3g não está disponível em muitas distribuições. Nestes casos, você pode instalá-lo através do código fonte, disponível no:
http://mlf.linux.rulez.org/mlf/ezaz/ntfs-3g-download.html

O pacote é relativamente simples de compilar. Com o Fuse e os compiladores básicos instalados, basta descompactar o arquivo e rodar os tradicionais “./configure”, “make” e “make install”, este último como root.

Enquanto escrevo, o ntfs-3g não está disponível nos repositórios do Debian, nem do Ubuntu, mas é possível instalá-lo (sem precisar recorrer ao código fonte) através do repositório do Kanotix, que inclui pacotes compilados para o Debian Sid.

Para usá-lo, adicione a linha abaixo no final do arquivo “/etc/apt/source.list” e rode o comando “apt-get update”:

deb http://kanotix.com/files/debian sid main contrib non-free

Instale agora o pacote “ntfs-3g” via apt-get. Preste atenção neste passo (sobretudo se estiver instalando sobre o Ubuntu). Caso o apt-get solicite a remoção de outros pacotes, ou proponha baixar um grande número de dependências, aborte a operação (pressionando Ctrl+C) e pesquise no google sobre a disponibilidade de versões atualizadas dos pacotes.

Com os pacotes instalados, falta só montar a partição do Windows, usando o comando “ntfs-3g”. Se o Windows está instalado no driver C:, visto pelo sistema como “/dev/hda1” e você deseja acessar os arquivos através da pasta “/mnt/hda1”, o comando seria:

# ntfs-3g /dev/hda1 /mnt/hda1

(o “/mnt/hda1” pode ser substituído por qualquer outra pasta de sua preferência)

Por padrão, o comando monta a partição com permissão de acesso apenas para o root, o que leva ao problema clássico de você só conseguir acessar ao abrir o gerenciador de arquivos como root. Para corrigir o problema, dando permissão de acesso para todos os usuários, adicione a opção “-o umask=0” ao rodar o comando:

# ntfs-3g -o umask=0 /dev/hda1 /mnt/hda1

Agora você consegue acessar e escrever na partição usando seu login de usuário. Porém, ao copiar arquivos para dentro da partição você recebe uma mensagem chata (para cada arquivo copiado) dizendo que não é possível modificar as permissões do arquivo. Isso é perfeitamente normal, já que o NTFS não suporta as permissões de acesso do Linux, mas é extremamente chato se você precisa copiar um grande número de arquivos.

Para desativar as mensagens, adicione a opção “silent”, como em:

# ntfs-3g -o umask=0,silent /dev/hda1 /mnt/hda1

Um último problema, apontado Pelo Cláudio Loureiro é a falta de suporte a caracteres acentuados, que faz com que arquivos e pastas contendo cedilhas e acentos fiquem ocultos. Felizmente, isso é facilmente contornável. Rode o comando “locale -a” no terminal para verificar qual é a linguagem e conjunto de caracteres usado na sua instalação. Normalmente, ao instalar o sistema em Português do Brasil, será usado o “pt_BR.iso88591”. Adicione o parâmetro “locale=pt_BR.iso88591” no comando, para que o ntfs-3g use a linguagem e o conjunto de caracteres corretos. A partir daí, os arquivos acentuados passam a aparecer normalmente:

# ntfs-3g -o umask=0,silent,locale=pt_BR.iso88591 /dev/hda1 /mnt/hda1

Segundo o Szakacsits Szabolcs, desenvolvedor do ntfs-3g, as próximas versões serão capazes de detectar isso automaticamente, de forma que este parâmetro pode não ser mais necessário no momento em que estiver lendo esta dica.

Concluindo, caso você queira que a partição do Windows seja montada automaticamente durante o boot, existe a opção de adicionar o ponto de montagem no arquivo “/etc/fstab“, que é lido durante o boot. Abra o arquivo (como root) e adicione a linha:

/dev/hda1 /mnt/hda1 ntfs-3g silent,locale=pt_BR.iso88591,umask=0 0 0

Note que a ordem dos parâmetros mudou, mas os argumentos usados continuam os mesmos. É importante notar que você deve tomar cuidado ao editar o fstab, pois ele é um arquivo essencial para o carregamento do sistema. Revise a alteração antes de reiniciar o micro e deixe sempre uma linha em branco no final do arquivo, caso contrário vai receber uma mensagem de erro chata durante o boot ;).

Outra opção ao adicionar o ntfs-3g no /etc/fstab é usar a opção “noauto“, que faz com que a partição não seja montada automaticamente durante o boot. Isso seria mais recomendável do ponto de vista da segurança, pois a partição seria montada apenas quando fosse realmente acessar, evitando danos acidentais. Para acessar a partição, você usaria o comando “mount /dev/hda1” (onde o “hda1” é a partição). No KDE você pode criar ícones para acesso às partições clicando com o botão direto sobre o desktop e acionando a opção “Criar novo > Link para Dispositivo”.

Ao adicionar o “noauto”, a linha no fstab ficaria:

/dev/hda1 /mnt/hda1 ntfs-3g noauto,silent,locale=pt_BR.iso88591,umask=0 0 0

Embora o ntfs-3g ainda seja considerado um software em estágio beta, problemas de corrupção de dados são bastante raros. Forcei uma série de situações potencialmente perigosas durante os testes, movendo pastas com mais de 1000 arquivos e subpastas, interrompendo operações no meio e até desligando o micro no botão durante uma cópia, sem conseguir causar problemas sérios na partição. Dentro da minha experiência, o máximo que poderia acontecer em casos mais extremos seria você precisar passar um scandisk através do próprio Windows para corrigir eventuais problema na estrutura do sistema de arquivos.

Outra coisa que chama a atenção é o desempenho. O ntfs-3g obtém taxas de transferência absurdamente maiores que o Captive e o Paragon, se aproximando do desempenho que seria oferecido por um sistema de arquivos “nativo”.

No Captive, dificilmente se obtém mais de 300 kb/s de taxa de transferência, enquanto o ntfs-3g consegue manter entre 5 e 11 MB/s (oscilando de acordo com o tamanho dos arquivos copiados):

ntfs

Graças ao NTFS-3g, mais uma grave deficiência do sistema foi corrigida. Agora é só questão de tempo para que as principais distribuições passem a oferecer suporte de gravação em partições NTFS por padrão, facilitando a vida de quem mantém o Windows em dual boot, ou trabalha com manutenção. Imagine a praticidade de dar boot através de um live-CD, montar a partição NTFS do Windows e usar o ClamAV para remover os vírus ;).

O Kurumin inclui o suporte ao ntfs-3g a partir dos primeiros betas da versão 7.0. Você pode ativá-lo de duas maneiras: a primeira é usando os comandos manuais, como vimos aqui. A segunda é clicar sobre o ícone “Montar as partições em leitura e escrita”, dentro do “Meu Computador”. O ícone dispara um script que checa sobre a existência de partições NTFS no HD e pergunta se você deseja usar o ntfs-3g para acessá-las em modo leitura e escrita.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X