O que causa “Ocorreu um erro de leitura do disco, pressione Ctrl + Alt + Del para reiniciar”?

7

Eu tenho uma máquina virtual que contém o Windows XP SP3.

Quando redimensionei o arquivo VHD (e a partição incorporada) e tentei inicializar, recebi:

A disk read error occurred
Press Ctrl + Alt + Del to restart

Algumas notas:

  • FixBoot e FixMBR não ajudam.

  • ChkDsk não ajuda.

  • A partição está realmente ativa.

  • A partição começa no setor 63 (também o fez antes do problema) do cilindro 1, cabeça 1, e é marcado como tipo 0x07 (NTFS)

  • Meu sistema operacional host lê o VHD e a partição completamente bem

  • Estou interessado em conhecer a causa em vez da correção . Portanto, "reformate o disco", "reinstale o Windows", etc., não são soluções válidas.

    Afinal de contas, é uma máquina virtual ... não tenho nada a perder, então não me importo em consertá-la.
    Eu só quero saber o que está causando esse problema, caso eu o encontre novamente em uma máquina física (o que eu fiz antes).

Mais informações:

Eu fiz uma amostra do arquivo VHD ilustrando (quase) o mesmo problema que você pode baixar aqui .

Para reproduzir o problema:

  • Baixe o arquivo (é altamente comprimido, tenha cuidado!), e tente inicializá-lo no VirtualBox (ou em alguma outra VM). Observe que você será informado "Erro ao carregar o sistema operacional". (Embora o erro seja diferente, é o mesmo problema).

  • Agora, tente montar o VHD no Gerenciamento de disco do Windows e execute BootSect.exe /NT60 X: /MBR , em que X: é a letra da unidade do volume montado. (A localização da ferramenta provavelmente será C:\boot\bootsect.exe , mas se ela não estiver lá no seu sistema, você precisará encontrá-la em outro lugar ...) Agora, desative-a e tente inicializar. A inicialização deve agora continuar corretamente. (Embora não encontre o Hal.dll, pelo menos você sabe que está funcionando.)

  • Agora faça a mesma coisa que a última etapa, mas use /NT52 em vez de /NT60 . Agora você será saudado com o primeiro erro - indicando que o carregador do Windows XP não gosta do disco .
    Então, minha pergunta é: Por quê?

por Mehrdad 31.03.2012 / 22:52

6 respostas

2

A causa é que o carregador de inicialização está chamando o BIOS para ler outros setores do disco e essa chamada está falhando, ou o carregador de inicialização não considera a tabela de partição válida.

Se eu não me engano, quando o Windows formata um disco, ele não cria uma pequena partição no final dela, ou deixa uma área não particionada lá? Seu utilitário de redimensionamento recriou isso? Soa bobo, mas esta pode ser a razão pela qual está reclamando. Estranho, mas eu não iria colocá-lo além do Windows (e possivelmente algo em versões mais recentes) para ter essa peculiaridade.

    
por 15.04.2012 / 21:40
2

Sistemas de arquivos são coisas complexas e complexas. Por exemplo, uma cópia antiga do Partition Magic reclama de alguma pequena inconsistência numérica ou algo sobre as partições em um dos meus discos enquanto o Windows (XP) e o Easeus Partition Master e todos os outros funcionam sem problemas. Mesmo uma cópia antiga do Norton Disk Editor não reclama desse disco.

O fato é que existem muitas pequenas coisas que podem dar errado, ou pior, que podem "errar não errado" e ainda estar incorretas (ou seja, um valor incorreto pode não mostrar sintomas) .


O que provavelmente aconteceu foi que quando você redimensionou o arquivo VHD, a ferramenta usada tinha um bug e não atualizava (corretamente?) Um campo em algum lugar nos sistemas de arquivos do disco (tabela de partições? Boot-record? Boot-sector Metarquivos NTFS?)

Como outros apontaram, o erro que você está recebendo geralmente é um erro BIOS ao contrário de um erro do sistema operacional. O que provavelmente está acontecendo é que o campo que não foi atualizado corretamente estava no início do disco (por exemplo, no registro de inicialização ou na tabela de partições), portanto, quando o BIOS da VM tenta ler o disco, está encontrando valores incorretos / inconsistentes e jogando uma exceção. Você não mencionou o tipo de redimensionamento que você fez. Você encolheu ou expandiu?

Minha hipótese é que você redimensionou para baixo , e o BIOS está lendo a tabela de partição e tentando ler além do disco (para setores inexistentes) porque o tamanho do disco não estava propriamente atualizado.

Quanto ao host, eu diria que a razão pela qual ele pode ler corretamente o disco é porque o software que monta o arquivo VHD está, de alguma forma, mascarando o erro. Afinal, para o host, o “disco” não é um disco real e é na verdade apenas um arquivo ( .vhd ), enquanto para o convidado, o disco é supostamente um disco físico real. Como tal, o host pode corrigir problemas de erro que o convidado não pode.


Você pode verificar se há uma versão atualizada da ferramenta ou usar um disco de inicialização como o CloneZilla (ou encontrar uma cópia do PTEdit) para executar na VM e examinar o “disco” de dentro do host.

    
por 15.04.2012 / 22:30
0
╒═════════════════════════════════════════════════════════════════════════════╕
│   Sectors:     3149824          Disk Signature:  0xEE3EEE3E                 │
├─────────────────────────────────────────────────────────────────────────────┤
│Pos Idx Type/Name Size Boot Hide  Start Sector  Total Sectors  DL Vol Label  │
├─── ─── ───────── ──── ──── ──── ────────────── ────────────── ── ───────────┤
│ 1   1  07-NTFS   1.5G  Yes  No              63      3,148,677 F: <None>     │
╘═════════════════════════════════════════════════════════════════════════════╛

3,148,677 / 3,149,824 = 0.999636 = 1 - 0.000364

1.5G * 0.000364 = 0.000546G

Parece haver apenas cerca de 546 KB livres, pode ser possível que não seja possível gravar um arquivo na inicialização.

    
por 16.04.2012 / 07:25
0

Uma possibilidade que vejo é que após o redimensionamento do VHD, existe alguma incompatibilidade entre o que a BIOS acha que sabe sobre o disco rígido e o próprio disco.

Outra possibilidade é que o espaço livre no disco seja muito pequeno ou muito fragmentado para o Windows inicializar. Às vezes, desfragmentar um disco com esse erro torna-o inicializável.

[EDITAR]

De acordo com as informações adicionadas, você reduziu drasticamente o VHD de 127 GB para 1,5 GB, portanto, pode não haver espaço suficiente para o arquivo de paginação. O resizer que você usou pode ter sido muito agressivo, ou pode ter movido arquivos de sistema Windows inamovíveis e, portanto, tornou o disco não inicializável.

Para uma operação adequada, o Windows precisa de muito espaço livre no disco, com parte dele contíguo (pelo menos no arquivo de paginação).

Acho que o procedimento correto deveria ter sido do VHD de 127 GB para desativar no XP o arquivo de paginação e a restauração do sistema, limpar a Lixeira, desfragmentar o disco com um desfragmentador que possa consolidar o espaço usado no topo (ou espaço livre) na parte inferior), em seguida, faça o resize deixando espaço livre que é várias vezes o tamanho de RAM definido.

Com este procedimento, você pode ter um disco viável e inicializável para começar.

Às vezes, esses problemas desaparecem com a reinicialização repetida, talvez pelo Windows finalmente conseguindo reorganizar o disco ao seu gosto.

    
por 15.04.2012 / 22:07
0

(Adicionando outra e outra resposta diferente.)

Você diz que a inicialização com o setor de inicialização NT52 não funciona, mas o NT60 não.

A diferença pode estar no processo de inicialização. O NT52 é o boot do XP que usa o NTLDR, enquanto o NT60 é o método do Vista que usa o Bootmgr.

O NTLDR usa o arquivo boot.ini para localizar discos rígidos e partições. Ele consulta o firmware do computador (BIOS) para descobrir qual unidade de disco rígido é considerada como unidade zero e, em seguida, analisa a tabela de partição na unidade para descobrir qual partição é a número um. Depois de saber a localização da partição, pode encontrar a pasta Windows \ system32 do sistema operacional que foi solicitada a iniciar.

O Bootmgr consulta o arquivo BCD na pasta Boot para obter as informações necessárias para encontrar a unidade e a partição corretas, mas não usa o firmware para localizar o disco rígido ou a tabela de partição para localizar a partição. Em vez disso, ele usa a única assinatura de disco no MBR de um disco rígido e o deslocamento da partição (setor inicial) de uma partição.

Aparentemente, ao redimensionar o disco, você destruiu um elemento que é usado para o processo de inicialização do NTLDR, mas não é usado pelo Bootmgr. Este poderia ser o BIOS, no sentido de que as informações que ele contém sobre o disco rígido não está mais correto, como o número de cilindros ou setores, ou algo no próprio boot.ini.

Além disso, o bootsect atualiza o código de inicialização do volume, não o código de inicialização principal. O código mestre de inicialização faz parte do registro mestre de inicialização (MBR) e há apenas um por disco físico. O código de inicialização do volume faz parte do registro de inicialização do volume e há um por volume. Pode ter sido isso com suas tentativas de tornar o disco inicializável, alguma incompatibilidade surgiu entre os dois, o que requer um conhecimento melhor do que o do processo de inicialização para analisar.

Como o Bootmgr não usa o BIOS ou o boot.ini, ele aparentemente consegue usar o MBR e inicializar.

    
por 16.04.2012 / 10:52
0

Eu tive um problema semelhante. xp com o mesmo erro. O bootsect / nt52 não resolveria o problema. Eu clonei o drive e o clonei de volta, e pronto. A lição é que você tem que ser um especialista em particionamento para identificar o problema. o resto de nós tem que recorrer a hacking e outros enfeites. alguém na internet disse que esse problema pode ser causado por um limite de bios de 137gb. pode ser, mas na verdade tem várias causas.

    
por 31.07.2013 / 07:10