In un sistema a doppio avvio, come fa il BIOS a scegliere quale bootloader eseguire?


24

Ho un doppio avvio di Windows e Ubuntu. Quando accendo la macchina, il BIOS esegue il POST e successivamente si avvia il bootloader.

Voglio capire come il BIOS sceglie quale bootloader eseguire. Voglio conoscere il processo in corso tra il BIOS e il bootloader in un computer a doppio avvio.


Risposte:


40

Il firmware del BIOS in realtà non sceglie il bootloader. Carica il codice dal settore 0 di un'unità e lo esegue. Qualunque cosa sia lì, verrà eseguita. Eventualmente è un bootloader (o qualcosa che carica un bootloader) ma non deve esserlo. Nei primi giorni del PC c'erano giochi su floppy disk che si sarebbero semplicemente avviati ed eseguiti senza un sistema operativo - questi ora sono chiamati "booters".

Il firmware UEFI attualmente comprende partizioni e filesystem e scansiona le unità per un tipo di partizione di sistema UEFI. Poiché si tratta di un file system, qui è possibile posizionare più bootloader. Il firmware UEFI dovrebbe fornire un menu o un altro modo per selezionare quale bootloader viene utilizzato.

Molti sistemi UEFI si stanno avviando in "Modalità legacy" - dove l'UEFI carica un "Modulo di servizio compatibilità" - qualcosa che lo fa sembrare un BIOS - e in realtà funziona come il BIOS.

GRUB è un bootloader open source comune che può avviare Linux o "chainload" (dare il controllo a) un bootloader di Windows (in genere winload.exe nella cartella Boot di una partizione Windows). GRUB è ciò che ti dà la possibilità di prendere una decisione. GRUB è in grado di leggere i file di configurazione e di sceglierne uno predefinito.

Leggi questo se vuoi dettagli copiosi e cruenti.


Questo è uno dei motivi per cui, su Ubuntu, hai bisogno sudoo fai il root per scrivere qualsiasi cosa su un disco non montato; se un programma o un utente malintenzionato scrive malware nella partizione di avvio ...
wizzwizz4,

Grazie LawrenceC la tua spiegazione mi rende ancora più chiara la mia comprensione. Grazie ancora
Prashant Singh

13

Questo diagramma mostra come passa il controllo dal firmware (BIOS o UEFI) al bootloader e dal bootloader al sistema operativo in Ubuntu.

inserisci qui la descrizione dell'immagine
          BIOS vs. UEFI

Se i sistemi operativi sono stati installati in diverse modalità (BIOS e UEFI), l'avvio doppio di Windows e Ubuntu non possono funzionare.


Conversione di Ubuntu in modalità UEFI

  1. Avviare Boot-Repair e selezionare Opzioni avanzate -> scheda Posizione GRUB .
  2. Se non vedi un'opzione di partizione separata / boot / efi , questo significa che il tuo PC non ha alcuna partizione UEFI.
  3. Se vedi un'opzione di partizione separata / boot / efi , metti un segno di spunta nella casella a sinistra, quindi fai clic sul pulsante Applica nell'angolo in basso a destra.

    Conversione di Ubuntu in modalità UEFI

  4. Configurare il BIOS in modo che avvii il disco rigido in modalità UEFI. Il modo di regolare questa impostazione dipende dal modello specifico del computer, ma generalmente questa impostazione si trova nelle impostazioni di priorità di avvio nella scheda Boot dell'utilità di configurazione BIOS / UEFI.


7

In modalità legacy (avvio BIOS e non UEFI) il BIOS controlla l'ordine dell'unità. C'era una volta questo era controllato dai cavi; ma cambiare un'impostazione del BIOS batte aprire la scatola e cambiare i cavi.

Il BIOS carica (in memoria) il primo settore (512 byte di disco chiamato MBR o record di avvio principale) del primo disco (o ordine di unità controllato dal BIOS) e quindi passa il controllo (CPU) a questo "bootloader". Il BIOS ha quindi completato il suo lavoro e il codice nel primo settore viene eseguito.


SORRY signore, ma sono un po 'confuso poiché il BIOS dà il controllo al boot loader e la finestra e Linux hanno un boot loader diverso, quindi a quale boot loader dà il controllo. Quale processo bios passa attraverso per scegliere il boot loader
Prashant Singh

2
Il tuo sistema può avere un solo boot loader per disco (e solo uno è mai attivo). In genere, se sul sistema sono presenti due sistemi operativi, il secondo installato possiede il bootloader poiché ha scritto il proprio codice nell'MBR. Questo è il motivo per cui GNU / Linux (Ubuntu) usa GRUB; è un sistema multi-step (il passo 1 è l'MBR, i passaggi 1.5 e 2 si trovano in / boot) che apre il menu chiedendo quale sistema operativo si desidera caricare / eseguire (quelli che comunque conoscono, più qualunque ISO si abbia aggiunto ad esso). Se si dispone di due unità disco; puoi avere un boot loader su ogni unità, ma il BIOS determinerà quale verrà eseguito.
Guiverc,

Quindi, se ho 2 sistema operativo nel mio computer, allora è necessario che GRUB visualizzi il menu chiedendo quale sistema operativo voglio caricare perché non il caricatore di avvio di Windows metta quel menu perché ho entrambi i sistemi operativi nel mio computer.
Prashant Singh,

Windows ha anche un caricatore di avvio (comunque fino a Vista); ma non è intelligente come grub. la versione windoze non cerca prodotti non msft (e non è in grado di leggere ext / reiserfs / xfs / zfs / btrfs / ...) quindi devi aggiungere tu stesso * nix; e il prossimo aggiornamento ..... la versione windoze non vale la pena usare come grub è molto meglio. Se il windoze fosse su un disco, Ubuntu dall'altro potresti cambiare l'avvio dal BIOS; ma grub è più veloce / più facile. (se soddisfatto della mia risposta; accettalo per chiudere la domanda)
guiverc

3
@Prashant Singh: Il motivo fondamentale per cui il bootloader di Windows non lo fa (o non lo sapevo, quando sapevo un po 'di Windows) è che MicroSoft non guadagna permettendoti di eseguire altri sistemi operativi.
jamesqf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.