Em um sistema de inicialização dupla, como o BIOS escolhe qual gerenciador de inicialização executar?

24

Eu tenho uma inicialização dupla do Windows e Ubuntu. Quando ligo a máquina, o BIOS faz o POST e depois o carregador de inicialização é iniciado.

Quero entender como o BIOS escolhe qual gerenciador de inicialização executar. Quero saber o processo que está ocorrendo entre o BIOS e o carregador de inicialização em um computador de inicialização dupla.

Prashant Singh
fonte

Respostas:

40

O firmware do BIOS realmente não escolhe o gerenciador de inicialização. Ele carrega o código do setor 0 de uma unidade e o executa. O que quer que esteja lá, ele será executado. Espero que seja um gerenciador de inicialização (ou algo que carrega um gerenciador de inicialização), mas não precisa ser. Nos primeiros dias do PC, você tinha jogos em disquetes que simplesmente inicializavam e rodavam sem um sistema operacional - agora são chamados de "inicializadores".

O firmware UEFI realmente entende partições e sistemas de arquivos e verifica as unidades em busca de um tipo de partição do sistema UEFI. Como este é um sistema de arquivos, vários gerenciadores de inicialização podem ser colocados aqui. O firmware UEFI deve fornecer um menu ou outra maneira para você selecionar qual gerenciador de inicialização é usado.

Muitos sistemas UEFI estão inicializando no "Modo herdado" - onde o UEFI carrega um "Módulo de Serviço de Compatibilidade" - algo que faz com que pareça um BIOS - e realmente funcionem como o BIOS.

O GRUB é um carregador de inicialização de código aberto comum que pode inicializar o Linux ou "carregar em cadeia" (controlar) um carregador de inicialização do Windows (geralmente winload.exe na pasta Boot de uma partição do Windows). O GRUB é o que lhe dá a capacidade de tomar uma decisão. O GRUB pode ler arquivos de configuração e escolher sua opção padrão.

Leia isso se você quiser detalhes copiosos e sangrentos.

LawrenceC
fonte
Essa é uma das razões pelas quais, no Ubuntu, você precisa sudoou faz o root para gravar qualquer coisa em um disco desmontado; se um programa ou usuário malicioso escreve malwares para a partição de boot ...
wizzwizz4
Graças LawrenceC sua explicação faz meu entendimento .thanks mais claras, mais uma vez
Prashant Singh
13

Este diagrama mostra como o controle passa do firmware (BIOS ou UEFI) para o gerenciador de inicialização e do gerenciador de inicialização para o sistema operacional no Ubuntu.

insira a descrição da imagem aqui
          BIOS vs. UEFI

Se os sistemas operacionais foram instalados em modos diferentes (BIOS e UEFI), a inicialização dupla do Windows e do Ubuntu não funcionará.


Convertendo o Ubuntu para o modo UEFI

  1. Inicie o Reparo de inicialização e selecione Opções avançadas -> guia Localização do GRUB .
  2. Se você não encontrar uma opção de partição Separate / boot / efi , isso significa que o seu PC não possui nenhuma partição UEFI.
  3. Se você vir uma opção Separar / inicializar / efi , marque a caixa de seleção à esquerda e clique no botão Aplicar no canto inferior direito.

    Convertendo o Ubuntu para o modo UEFI

  4. Configure o BIOS para inicializar o disco rígido no modo UEFI. A maneira de ajustar essa configuração depende do modelo específico do computador, mas geralmente essa configuração está localizada nas configurações de prioridade de inicialização na guia Inicialização do utilitário de configuração BIOS / UEFI.

karel
fonte
7

No modo legado (inicialização do BIOS e não UEFI), o BIOS controla a ordem das unidades. Era uma vez isso costumava ser controlado pelos cabos; mas alterar uma configuração do BIOS é melhor do que abrir a caixa e trocar os cabos.

O BIOS carrega (na memória) o primeiro setor (512 bytes de disco chamado MBR ou registro mestre de inicialização) do primeiro disco (ou a ordem da unidade controlada pelo BIOS) e passa o controle (CPU) para esse 'carregador de inicialização'. Assim, a BIOS concluiu seu trabalho e o código no primeiro setor é executado.

guiverc
fonte
Senhor desculpe, mas eu sou pouco confuso como bios dar controle para o carregador de inicialização e janelas e linux tem carregador de inicialização diferente, de modo a que boot loader que dar o controle .o bios processo passar por escolher o carregador de inicialização
Prashant Singh
2
Seu sistema pode ter apenas um único carregador de inicialização por disco (e apenas um está ativo). Geralmente, se você possui dois sistemas operacionais em seu sistema, o segundo instalado possui o gerenciador de inicialização, pois ele escreveu seu próprio código no MBR. É por isso que o GNU / Linux (Ubuntu) usa o GRUB; é um sistema de várias etapas (a etapa 1 é o MBR, as etapas 1.5 e 2 são encontradas em / boot) que exibe o menu perguntando qual sistema operacional você deseja carregar / executar (o que o grub conhece de qualquer maneira, mais qualquer ISO que você tenha adicionado a ele). Se você tiver duas unidades de disco; você pode ter um carregador de inicialização em cada unidade, mas o BIOS determinará qual será executado.
guiverc
Então, se eu tiver 2 sistemas operacionais no meu computador, é necessário que o GRUB abra o menu perguntando qual sistema operacional eu quero carregar, por que não o carregador de inicialização da janela coloca esse menu, pois eu tenho os dois sistemas operacionais no meu computador.
Prashant Singh
O Windows também possui um gerenciador de inicialização (até o Vista de qualquer maneira); mas não é tão inteligente quanto o grub. a versão windoze não procura produtos não-msft (e não pode ler ext / reiserfs / xfs / zfs / btrfs / ...), portanto, você precisa adicionar o * nix; e próxima atualização ..... a versão windoze não vale a pena usar, pois o grub é muito melhor. Se o windoze estivesse em uma unidade, o Ubuntu na outra, você poderia alterar a inicialização pelo BIOS; mas o grub é mais rápido / fácil. (se feliz com a minha resposta; aceito-o para fechar a questão)
guiverc
3
@ Singhant Singh: A razão mais fundamental pela qual o carregador de inicialização do Windows não faz isso (ou não, quando eu sabia um pouco sobre o Windows) é que a MicroSoft não ganha dinheiro permitindo que você execute outros sistemas operacionais.
jamesqf