Suporte a escrita em partições NTFS no Linux com o Captive
Há mais de um ano escrevi um texto que explicava como montar partições NTFS no linux e dar acesso (apenas de leitura) a qualquer usuário ou grupo de
usuários.
Desde então frequentemente recebo emails de leitores querendo saber como fazer para poder ter acesso de escrita nessas partições. Alguns, provavelmente leitores de tÃtulos, escrevem reclamando do fato de não conseguirem criar, modificar e apagar arquivos em tais partições, mesmo eu tendo deixado bem claro no texto que o suporte a NTFS no kernel era apenas de leitura e o pouco suporte a escrita que foi conseguido no kernel 2.6 é extremamente limitado (permite apenas modificar aquivos, desde que se mantenha o mesmo tamanho, ou seja, é inútil).
Antes de continuar, devo deixar claro que o fato de o kernel do Linux não ter suporte completo a escrita em NTFS não é culpa de seus desenvolvedores. o NTFS é um sistema de arquivos proprietário, fechado, e o pouco suporte conseguido até hoje se deve a trabalhos de engenharia reversa.
Mas nem tudo está perdido. Se você realmente precisa escrever em suas partições NTFS pelo linux há hoje duas ferramentas — pelo menos que eu conheça — para realizar esta tarefa. São elas o Captive e o Paragon NTFS For Linux.
O Paragon NTFS For Linux é uma ferramenta proprietária e sua versão demo tem apenas suporte a leitura. Portanto não pude testá-lo.
Já o Captive é uma ferramenta livre e grátis, que usa um processo bem parecido com o que o Wine usa para rodar programas windows no linux. Ou seja, utiliza arquivos de sistema do windows para proporcionar acesso total de leitura e escrita a partições NTFS.
Vamos dar uma olhada nele.
Infelizmente o Captive é muito mal documentado. A informação contida em sua página é insuficiente e até mesmo confusa. Fiz algumas buscas pelo google e também não achei nada que pudesse me ajudar muito. Portanto o jeito foi baixar o programa e meter a mão na massa pra ver se funciona e como funciona.
Eu instalei o Captive em um sistema Debian Sarge, portanto não posso garantir que o processo que usei vá funcionar em outras distribuições. Pelo que é dito na página do Captive, o pacote RPM que é disponibilizado foi testado nas distribuições Red Hat (8 e 9), SuSe (9.0 e 9.1) e Mandrake 9.1.
Outra alternativa é baixar o pacote binário, contido em um arquivo .tar.gz. Mas eu preferi pegar o RPM, que costuma dar menos dor de cabeça para instalar.
Instalando RPMs no Debian
Se você for usuário de Debian, deve saber que o sistema de pacotes usado por ele não é o RPM e sim o DEB. Mas, instalar pacotes RPM é bem simples, com a ajuda de uma ferramenta chamada Alien.
Se você não tiver o alien instalado, faça um apt-get install alien.
Baixe o arquivo RPM disponibilizado na página do Captive e converta-o para DEB, com o comando alien --to-deb captive-static-1.1.5-0.i386.rpm. Será gerado o arquivo captive-static_1.1.5-1_i386.deb
Instalando e usando o Captive
Tendo gerado o arquivo captive-static_1.1.5-1_i386.deb, instale-o com o comando dpkg -i captive-static_1.1.5-1_i386.deb.
Agora você vai precisar de alguns arquivos do windows para que o Captive funcione. São eles: ntfs.sys, cdfs.sys, fastfat.sys, localizados em C:WINDOWSsystem32drivers (assumindo que seu windows está instalado em C:WINDOWS) e ntoskrnl.exe, localizado em C:WINDOWSsystem32.
Nota: O windows que tenho instalado é o XP Service Pack 2 em português. Se o seu for o mesmo, os seus arquivos não vão funcionar com o Captive, por motivos que desconheço. A solução é tentar baixar estes arquivos na internet ou, como eu fiz, utilizar os arquivos que estão no CD de instalação do Windows em /I386/. Perceba que alguns arquivos têm a extensão terminada em _, como FASTFAT.SY_ e NTOSKRNL.EX_. Simplesmente renomeie-os, no caso para fastfat.sys e ntoskrnl.exe, respectivamente.
Copie todos esses arquivos para uma pasta qualquer, por exemplo, /home/user/ntfs/ (claro, substituindo user pelo nome do seu usuário no linux).
O próximo passo é executar uma ferramenta chamada captive-install-acquire, que vai buscar por esses arquivos em seu HD e jogá-los para o lugar onde devem ficar. Por padrão, o captive-install-acquire tem uma interface gráfica em Gtk, que não te dá opção nenhuma a não ser deixá-lo procurar pelos arquivos em seu HD, processo que travou minha máquina por duas vezes. Portanto, use sua versão de texto, captive-install-acquire --text.
Responda não (N) à primeira pergunta Quickly scan your local disks to find needed drivers?, e à segunda Fully scan all directories of your local disks?. O próximo passo te pede para entrar um diretório especÃfico para ser escaneado. Digite o caminho do diretório onde você gravou os arquivos do windows, no nosso caso, /home/user/ntfs/.
Se você copiou os arquivos certos para esse diretório, o captive vai encontrá-los e informar isso a você. Após isso, a pergunta anterior será feita mais uma vez. Responda Done (D), finalizando este processo.
Pronto. O captive está instalado e deve funcionar a contento.
Para montar a partição, use o comando mount -t captive-ntfs /dev/hda1 /win (supondo que a sua partição NTFS está em /dev/hda1 e o ponto de montagem é /win). Para montar a partição com acesso para usuários comuns, use o processo descrito em Como montar partições NTFS no linux, trocando apenas ntfs por captive-ntfs.
Disclaimer: Não posso garantir que esse processo funcione em qualquer distribuição linux e sob qualquer condição. Apenas estou descrevendo o processo que usei em minha máquina, usando um Debian Sarge. Espero que funcione para você também, mas simplesmente não posso garantir nada. Use por sua conta e risco.
Desempenho
Não posso dizer nada conclusivo sobre o desempenho do Captive ao escrever arquivos em partições NTFS. Fiz apenas um teste, copiando um arquivo de 36MB (source do kernel do linux) e o resultado foi:
# time cp linux-2.6.12.2.tar.bz2 /win/
real 3m26.402s user 0m0.087s sys 0m1.322s
Para efeito de comparação, copiei o mesmo arquivo para uma partição FAT32, usando o suporte do próprio kernel do linux:
# time cp linux-2.6.12.2.tar.bz2 /winfat/
real 0m0.430s user 0m0.002s sys 0m0.173s
Como podem ver, o desempenho do Captive é um pouco decepcionante, pelo menos à primeira vista. Mas se você tem real necessidade de ter suporte a escrita em suas partições NTFS pelo Linux, o Captive pode ser uma boa solução. As operações com arquivos pequenos ocorreram normalmente. Não há sensação de lentidão no processo.
Segurança
Não encontrei praticamente nada referente à segurança do Captive. Pelo que li em sua página, o fato de ele usar os arquivos do próprio windows para oferecer suporte a escrita torna o processo mais seguro. Mas, ninguém garante que os seus arquivos estarão 100% seguros.
Eu fiz algumas operações básicas, montei e desmontei a partição algumas vezes, copiei, apaguei e modifiquei alguns arquivos e nada de mau aconteceu.
Uma coisa importante é que é preciso desmontar o volume antes de desligar ou reiniciar a máquina. Pelo que li isso é imprescindÃvel, portanto, se você acha que não vai lembrar de desmontar suas partições antes de desligar, coloque o comando umount /win (mais uma vez, assumindo que o ponto de montagem é /win) em um script que vá rodar nos runlevels 0 (desligar) e 6 (reboot).
No debian, faça o seguinte:
# echo "umount /win" > /etc/init.d/umountntfs
# ln -s /etc/init.d/umountntfs /etc/rc0.d/K01umountntfs
# ln -s /etc/init.d/umountntfs /etc/rc6.d/K01umountntfs
Concluindo, o Captive está longe de ser a solução perfeita para ter acesso completo de escrita em partições NTFS, mas é a única solução livre e grátis discponÃvel, até onde sei. Faça bom proveito.
Opa Bruno!!
Queria te perguntar uma coisa…
Montar uma rede com o Sistema Operacional Linux é mais dificil do que com o Windows???
Estarei aguardando!
Ate +