Ntfs-3g

De DebianMS

Conteúdo

Introdução

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, suportava um espaço formatado bem menor e correntemente fragmentava), 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.

O NTFS-3g pode ser considerado o primeiro driver de escrita em partições NTFS para Linux realmente utilizável.

Ao invés de ser um driver complexo, incluído no Kernel, o NTFS-3g funciona em cima do Fuse, um módulo que permite criar drivers para sistemas de arquivo que rodam como programas comuns do lado do usuário. Outro bom exemplo de driver que roda sobre o Fuse é o EncFS que permite montar diretórios criptografados no seu sistema ou o GmailFS que permite que você monte seu email do gmail como se fosse um diretório no seu Linux.

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

Vale lembrar que a leitura em NTFS já existia para o super usuário.


Instalando programas necessários

O Debian Etch 4.0 não saiu com o suporte ao NTFS-3g, mas o seu irmão mais novo o Debian o 'lenny', já tem o pacote que fará a alegria dos usuários do Etch. Muitos podem perguntar sobre incompatibilidades e problemas, mas não precisam se preocupar, pois o NTFS-3g não depende de nenhum pacote além dos já conhecidos do Etch.

Então vamos lá, primeiramente é necessário editar o arquivo dos seus repositórios:

  # vi /etc/apt/sources.list

para tal, agora adicione a linha abaixo no seu arquivo:

  deb http://ftp.br.debian.org/debian/ testing main contrib non-free

feito isso, é necessário atualizar o repositório de pacotes:

  # apt-get update

para instalar o NTFS-3g direto do 'testing' sem precisar de muita loucura:

  # apt-get install -t testing ntfs-3g

pronto, o programa necessário está instalado, remova a linha adicionada no '/etc/apt/sources.list' e de o comando:

  # apt-get update

novamente. Um detalhe, para que tudo isso funcione é necessário que o FUSE esteja instalado e funcionando, então execute os comandos de instalação do FUSE abaixo como root só para confirmar:

  # apt-get install fuse-utils libfuse2

ainda faltam alguns passos antes da mágica.


Configurações necessárias

Antes de poder montar como usuário, você deve adicionar o seu usuário ao grupo 'fuse' para que ele possa se valer dos programas que funcionam sobre ele da seguinte forma, como root:

  # adduser <usuário> fuse


Montando o dispositivo NTFS

Agora podemos nos deliciar montando o dispositivo NTFS como usuário. Para facilitar ao leitor, que faltamente não vai saber qual o dispositivo que contém sua partição NTFS, podemos executar o seguinte comando como root:

  # fdisk -l
  Disk /dev/hda: 120.0 GB, 120034123776 bytes
  255 heads, 63 sectors/track, 14593 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  
   Device   Boot      Start         End      Blocks   Id  System
  /dev/hda1   *           1        1275    10241406    7  HPFS/NTFS
  /dev/hda3            1276       13604    99032692+  83  Linux
  /dev/hda4           13605       14593     7944142+  83  Linux

como podemos ver, no meu caso, o dispositivo NTFS é o '/dev/hda1', onde no 'System' diz HPFS/NTFS. Feito isso, como usuário normal vamos montar o dispositivo NTFS da seguinte forma:

  $ mkdir ~/Windows
  $ ntfs-3g /dev/hda1 ~/Windows

quando você fizer isso, vai ver o seguinte 'AVISO':

  WARNING: Deficient Linux kernel detected. Some driver features are
        not available (swap file on NTFS, boot from NTFS by LILO), and
        unmount is not safe unless it's made sure the ntfs-3g process
        naturally terminates after calling 'umount'. If you wish this
        message to disappear then you should upgrade to at least kernel
        version 2.6.20, or request help from your distribution to fix
        the kernel problem. The below web page has more information:
        http://www.ntfs-3g.org/support.html#fuse26

esse aviso quer dizer que o kernel Linux 2.6.18-4-686 que você provavelmente está utilizando não suporta que você utilize uma partição NTFS para 'swap' nem 'boot' para o Linux, e o processo de desmontar pode não ser totalmente seguro caso você não espere o comando 'umount' realmente terminar. Para que essa mensagem desapareça devemos utilizar um kernel Linux 2.6.20 ou superior, coisa que será explicada no nosso artigo Compilando o Kernel para o Debian. Mas podem ficar despreocupados, o kernel Linux 2.6.18 suporta todas as operações sem problemas. Ao realizar este comando sua partição NTFS estará totalmente funcional, tanto para escrita, quanto para leitura.


Montando no Boot

Você também pode usar o '/etc/fstab' para montar o Windows para um determinado usuário poderíamos inserir uma linha como a abaixo para montar o /home/usuario/Windows como mostrado antes:

  /dev/hda1 /home/usario/Windows ntfs-3g ro,uid=1000 0 0

onde o uid é o uid do usuário que vai acessar como escrita o dispositivo. O uid do usuário pode ser encontrado no arquivo '/etc/passwd' que vai conter informações no formato:

  usuario:x:1000:1000:Nome do Usuário,,,:/home/usuario:/bin/bash

o primeiro '1000' é o uid e o segundo é o gid, basta então colocar o uid no fstab e tudo pronto, ao iniciar o seu Linux, o diretório do Windows já estará devidamente montado.


Artigos Relacionados

  • GmailFS - montando seu email do Google para aproveitar os 2Gb oferecidos.
  • EncFS - criando diretórios que podem armazenar informações sigilosas num ambiente criptografado.
  • Afuse - montando automaticamente sistemas de arquivos implementados que utilizem o FUSE.


--Condector 23:18, 15 Maio 2007 (AMT)

Ferramentas pessoais