Por que precisamos de um gerenciador de inicialização?

28

Depois que o BIOS, ou algo similar que serve como firmware, é iniciado, o controle é passado para o bootloader, até onde eu sei.

Por que o BIOS não pode carregar o kernel do sistema operacional diretamente?

Além disso, o manual do GRUB diz: brevemente, um gerenciador de partida é o primeiro programa de software que é executado quando um computador é iniciado . O BIOS não é o primeiro programa executado?

    
por aoeui 27.05.2012 / 23:44

3 respostas

26

Um BIOS precisaria saber como carregar um kernel, e isso tornaria o BIOS excessivamente complicado: imagine um BIOS que precisa saber como carregar os diferentes sistemas operacionais disponíveis, como passar parâmetros de kernel para eles, etc. ..

Assim, apenas inicializa o hardware e salta para um local conhecido onde o bootloader é armazenado; então, o controle é passado para ele.

De O Unix e Fundamentos da Internet HOWTO :

You may wonder why the BIOS doesn't load the kernel directly — why the two-step process with the boot loader? Well, the BIOS isn't very smart. In fact it's very stupid, and Linux doesn't use it at all after boot time. It was originally written for primitive 8-bit PCs with tiny disks, and literally can't access enough of the disk to load the kernel directly. The boot loader step also lets you start one of several operating systems off different places on your disk, in the unlikely event that Unix isn't good enough for you.

Quanto ao BIOS ser o primeiro programa executado: (de Wikipedia )

The BIOS software is built into the PC, and is the first code run by a PC when powered on ('boot firmware').

Mas um firmware é software. Então, eu diria que o manual do GRUB é pelo menos confuso nessa parte; o bootloader pode ser visto como o primeiro software definido pelo usuário que é executado no computador.

    
por 28.05.2012 / 00:01
10

O motivo é a flexibilidade. Você pode ter vários sistemas operacionais diferentes em um disco rígido (Windows, Linux, etc.) ou pode ter várias versões diferentes do mesmo sistema operacional. Portanto, é melhor ter um pedaço de código independente do sistema operacional que saiba onde cada sistema operacional instalado no disco rígido reside, como carregar cada um deles, qual carregar, se deve apresentar um menu ou não, etc. vv B B B v B B v es

O BIOS carrega e executa o código localizado em um local pré-definido em um disco rígido (primeiro setor). Nós chamamos esse código de bootloader, mas tecnicamente, se você instalou o Windows em um disco rígido vazio, este código também é instalado pelo Windows, então você pode chamá-lo de parte do Windows, especialmente porque o bootloader do Windows não pode carregar nenhum outro SO além do Windows.

Em relação ao primeiro programa de software que é executado quando um computador é iniciado: a distinção entre firmware / software é muito pequena e o processo de inicialização do computador moderno é muito complicado. O BIOS em si também não é um programa monolítico, mas vários estágios distintos encadeados juntos. No entanto, o bootloader é o primeiro código alterável pelo usuário que é executado. Esta é a primeira parte do código que o usuário pode danificar, apagar, infectar com um vírus, etc. Então, suponho que, embora tecnicamente o BIOS seja o primeiro software a ser executado, o bootloader é o primeiro caso se o computador não inicializa para verificar se está tudo bem.

    
por 28.05.2012 / 00:01
2

Why can't the BIOS load the OS kernel directly?

Três motivos:

  • O BIOS na plataforma original do PC, quando foi introduzido em 1981, deveria funcionar no mesmo papel que o do sistema operacional CP / M - ou seja, uma fina camada de abstração para alguns dispositivos e um bootloader de disco simples. CP / M tinha outra camada chamada "BDOS", que lidava com o sistema de arquivos. O DOS foi semelhante ao CP / M em muitos aspectos, pois era o sistema operacional em voga na época e foi estruturado de forma semelhante. O BIOS foi projetado para lidar com aspectos específicos de hardware da plataforma, uma função que os drivers nos sistemas operacionais cumprem agora.

  • A noção de um sistema de arquivos separado do sistema operacional ainda não se consolidou.

  • Neste momento, RAM e ROM eram recursos caros e escassos. O IBM 5150 PC original pode ser obtido com apenas 16 K de RAM ( referência ). O tamanho da ROM deste sistema era de 48K e incluía um interpretador BASIC. Também não existia um sistema de arquivos padrão naquele momento.

Desde que o DOS se tornou o sistema operacional mais popular para esta plataforma e, posteriormente, para o Windows, que trabalhou com essa configuração, ninguém pensou em estender o BIOS dessa maneira para incluir recursos reais de bootloading.

Não tenho certeza das capacidades da UEFI - ela pode ter recursos reais de bootloading que não são usados pelo Windows por um motivo ou outro (o Windows insiste em usar seu próprio gerenciador de inicialização quando você o instala). Outros firmwares que não são da BIOS, como o U-Boot e os de muitos telefones e roteadores, carregam e executam diretamente os kernels. Não houve uma razão técnica para isso desde que os BIOSes começaram a ter espaço na ROM para fazer mais coisas.

    
por 25.01.2014 / 23:38