Por que o BIOS só pode ler e executar código e dados apenas do cilindro 0, da faixa 0 e do setor 1?

3

Eu estava lendo sobre todo o processo de inicialização em computadores e estou curioso para saber por que o BIOS só pode ler e executar código e dados apenas do cilindro 0, da faixa 0 e do setor 1 do disco sendo inicializado? Por que a BIOS não pode ler de qualquer outro local de disco?

    
por cobi 25.02.2011 / 01:45

3 respostas

2

Sua leitura foi de documentação que está claramente entre uma e uma década e meia desatualizada. É apenas no antigo firmware PC98 (e PC97 e PC / AT antes dele) que suas suposições e as informações fornecidas anonimamente em outra resposta são verdadeiras. Existem três classes principais de firmwares para computadores pessoais / workstations (embora existam vários outros menos conhecidos também, para os quais uma resposta a uma pergunta marcada como "linux" deveria também cobrir também se fosse completa):

  • Firmware PC98 Nos sistemas PC98, o firmware não compreende as partições de disco ou os formatos do sistema de arquivos. Nem sequer sabe o que é a tabela de partições (MBR) no bloco # 0, apesar de carregar e executar o código no bloco # 0. É o código no bloco # 0 que sabe procurar dentro de si por uma partição primária ativa e carregar e executar seu registro de inicialização de volume. É somente nessa classe de firmware que suas suposições e as informações nas outras respostas são verdadeiras.
  • Firmware ARC Nos sistemas ARC, o firmware compreende as partições de disco e, pelo menos, um formato de sistema de arquivos, FAT. Em tais sistemas, o firmware não carrega e executa o bloco # 0. Em vez disso, carrega e executa uma imagem de programa executável. carrega e executa uma imagem de programa executável de um arquivo comum em um volume de disco FAT . Esse programa executável será um carregador de inicialização que, por sua vez, carrega e executa o kernel do Linux a partir de outro arquivo comum em um volume de disco (não necessariamente FAT, se o carregador de inicialização tiver seus próprios drivers de sistema de arquivos extras).
  • Firmware EFI Em sistemas EFI, o firmware compreende as partições de disco e, pelo menos, um formato de sistema de arquivos, FAT. Em tais sistemas, o firmware não carrega e executa o bloco # 0. Em vez disso, ele foi construído em um gerenciador de inicialização que permite escolher a partir de um menu de imagens de programas executáveis a partir de arquivos comuns em volumes de discos FAT . Esse programa executável será um carregador de inicialização que, por sua vez, carrega e executa o kernel do Linux a partir de outro arquivo comum em um volume de disco (não necessariamente FAT, se o carregador de inicialização tiver seus próprios drivers de sistema de arquivos extras). Se o disco for particionado com a tabela de partições EFI, o firmware (dependendo de quão estritamente ele se apega à especificação EFI) não precisa necessariamente ler o bloco # 0 do disco de todo .

Deve-se ter uma idéia de como algumas das informações que você pode ler, e que são passadas adiante, nesta área, devem ser notadas que o "98" em "PC98" realmente significa 1998. mudou, e a noção de que firmwares não entendem esquemas de particionamento de disco, não entendem formatos de sistemas de arquivos, e só sabem ler e carregar um bloco de um disco, está muito desatualizada.

    
por 28.02.2011 / 00:24
5

Cilindro 0, faixa 0, setor 1 basicamente significa iniciar no início lógico do disco rígido. Durante o processo de inicialização, o ROM BIOS depois de fazer o POST procura carregar o registro de inicialização. No estado em que está, o carregador de inicialização não tem quase nada para trabalhar - tudo o que ele faz é ir para um ponto predeterminado e começar a carregar o código do sistema operacional. A localização codificada é 0-0-1. Assim como se eu te desse um livro, a expectativa seria que você começasse a ler a partir da primeira página, não da página 25, então o gerenciador de partida inicia neste local de início.

    
por 25.02.2011 / 07:16
4

Em teoria, o BIOS pode ler em qualquer lugar no disco. Mas por que isso? Não tem ideia do que qualquer um desses bits significa. Seria um BIOS terrível que era completamente incompatível com a criptografia de discos completos, porque tentava interagir diretamente com coisas fora do bloco de inicialização.

Ter o (para todos os intentos e propósitos codificados na placa-mãe) o BIOS somente interage com o bloco de inicialização significa que o resto do disco pode conter qualquer coisa , porque você pode simplesmente colocar o código para interpretar isso no bloco de inicialização a ser executado. E se você quiser colocar algo diferente (e incompatível) no disco, basta atualizar o bloco de inicialização apropriadamente.

    
por 25.02.2011 / 01:53

Tags