Descompactando arquivos em um volume NTFS do Linux

2

Recentemente, fiz algo estúpido no meu laptop de inicialização dupla, onde eu comprimi o volume inteiro para criar espaço para uma partição do Linux. Por alguma razão, o Windows me permite compactar C:\ntldr . Agora preciso descompactar para que o Windows seja inicializado.

Aqui estão algumas das restrições operacionais que tenho:

  • Eu não tenho acesso ao BIOS.
  • Não consigo inicializar a partir do CD / USB / disquete. (Eu instalei o Linux através do PXE)
  • Não tem acesso à rede.

Existe alguma maneira de especificar que o driver ntfs-3g não deve compactar arquivos mesmo que ache que deveria (se o diretório estiver compactado) ao montar o volume?

Ou existe uma maneira de modificar os atributos de um diretório usando o ntfsprogs?

    
por amphetamachine 02.05.2010 / 19:09

4 respostas

2

Ok, acho que resolvi isso. O problema está no driver ntfs-3g; tenta muito difícil prever o que o usuário quer.

Eu resolvi o problema montando o volume em /mnt/windows usando o driver ntfs-3g e, em seguida, copiando o arquivo ntldr do volume.

# mount -t ntfs-3g /dev/sda1 /mnt/windows
# cp -p /mnt/windows/ntldr ~/ntldr
# mv /mnt/windows/ntldr{,.bak}
# umount /mnt/windows

Em seguida, usando ntfsprogs ' ntfscp , copiei novamente o arquivo no sistema de arquivos:

# ntfscp -f /dev/sda1 ~/ntldr ntldr

Então, quando eu fiz um ntfsinfo nele, ele não tinha mais o atributo compactado presente.

    
por 02.05.2010 / 23:03
1

Não é possível inicializar a partir de uma unidade externa para que o reparo de USB / CD seja desativado ... não é possível obter acesso à rede ... hum ... Não sei de nada que possa corrigí-lo diretamente do Linux. O suporte a NTFS para qualquer coisa além de ler e escrever (e relativamente falar que até mesmo o suporte de gravação foi duvidoso até bem recentemente) é escasso, já que a atitude da comunidade Linux é que o NTFS é para o Windows nativo.

Eu sugeriria usar VMWare ou VirtualBox para inicializar o Windows em uma VM e dar acesso à partição; que poderia consertá-lo, mas você disse que não tinha acesso à rede para instalar um hypervisor da VM.

Se você realmente precisar dos dados, a única coisa que eu poderia sugerir é remover fisicamente a unidade e colocá-la em um adaptador para permitir que ela funcione como uma unidade USB externa em uma máquina com o Windows e descompactar / executar um reparo de lá. Caso contrário, restaure a partir do backup ...

    
por 02.05.2010 / 20:43
1

The problem lies in the ntfs-3g driver; it tries too hard to predict what the user wants.

Tanto quanto eu posso ver, o ntfs-3g fez o que o usuário queria. Ele comprime o arquivo porque o usuário configurou o diretório compactado.

O problema, na verdade, está no ntfcp, que não segue a especificação NTFS.

    
por 03.05.2010 / 02:47
0

(I installed Linux through PXE)

It does not have network access.

Estou confuso, mas ok ..

A chave para obter o Linux instalado em qualquer máquina é

  1. que a maioria das máquinas tem alguma forma de seleção de inicialização
  2. o processo de inicialização não está vinculado ao sistema operacional (para que você possa inicializar algo diferente do windows)

Como todos os vetores de inicialização "normais" parecem não estar disponíveis para você, eu diria, puxe a unidade neste ponto e conecte-a a outra máquina.

Acompanhamento baseado em comentário (s):

Então, vamos revisar:

  1. A inicialização externa está fora. Isso elimina qualquer chance de usar um dispositivo USB, reparo de CD, CD de inicialização ao vivo, etc.
  2. A remoção do disco rígido é possível, mas altamente indesejável
  3. A inicialização via PXE é possível sob certas circunstâncias

Então, parece que o PXE (o mesmo método que você usou para colocar o dual-boot em funcionamento) será a sua aposta mais fácil. Você pode descobrir qual é o endereço do servidor PXE que estava usando? Nesse caso, você pode conseguir um pouco de hack ... você precisará de um computador que funcione como um servidor PXE e um hub com fio que não esteja conectado a nenhuma outra rede.

  1. Configure seu ambiente de servidor PXE
  2. configura o servidor PXE para ter o mesmo endereço que o esperado pelo BIOS
  3. inicialize o laptop via PXE
  4. forneça o laptop com o ambiente de sua escolha

Não tenho certeza se você pode inicializar ao vivo um CD do Windows dessa maneira (eu só fiz inicializações antigas de DHCP / BOOTP / TFTP, não de PXE), mas, se você puder, talvez consiga acessar consola de reparação, o que seria a sua melhor aposta. Sua segunda opção seria obter um CD de inicialização ao vivo do Linux no laptop e tentar repará-lo a partir daí, embora eu suspeite que você tenha sucesso limitado. Como último esforço, você sempre pode migrar os dados para outro dispositivo (agora que o laptop está funcional novamente).

    
por 02.05.2010 / 21:03