Perché abbiamo bisogno di un boot loader?


29

Dopo l'avvio del BIOS, o qualcosa di simile che funge da firmware, il controllo viene passato al bootloader, per quanto ne so.

Perché il BIOS non può caricare direttamente il kernel del sistema operativo?

Inoltre, il manuale di GRUB dice: in breve, un boot loader è il primo programma software che viene eseguito all'avvio di un computer . Il BIOS non è il primo programma in esecuzione?


Risposte:


28

Un BIOS dovrebbe sapere come caricare un kernel, e questo renderebbe il BIOS eccessivamente complicato: immagina un BIOS che deve sapere come caricare i diversi sistemi operativi disponibili, come passare loro i parametri del kernel ecc ...

Pertanto, inizializza solo l'hardware e salta in un punto noto in cui è memorizzato il bootloader; quindi, il controllo viene passato ad esso.

Da The Unix and Internet Fundamentals HOWTO :

Potresti chiederti perché il BIOS non carica direttamente il kernel - perché il processo in due passaggi con il boot loader? Bene, il BIOS non è molto intelligente. In effetti è molto stupido e Linux non lo usa affatto dopo l'avvio. È stato originariamente scritto per PC a 8 bit primitivi con minuscoli dischi e letteralmente non può accedere a abbastanza del disco per caricare direttamente il kernel. Il passaggio del boot loader ti consente anche di avviare uno dei numerosi sistemi operativi da posizioni diverse sul disco, nel caso improbabile che Unix non sia abbastanza buono per te.

Per quanto riguarda il BIOS, è il primo programma in esecuzione: (da Wikipedia )

Il software BIOS è integrato nel PC ed è il primo codice eseguito da un PC all'accensione ("firmware di avvio").

Ma un firmware è un software. Quindi suppongo che il manuale di GRUB sia almeno confuso su quella parte; il bootloader può essere visto come il primo software definito dall'utente che viene eseguito sul computer.


10

Il motivo è la flessibilità. Potresti avere diversi sistemi operativi su un unico disco rigido (Windows, Linux, ecc.) Oppure potresti avere diverse versioni dello stesso sistema operativo. Pertanto, è meglio avere un pezzo di codice indipendente dal sistema operativo che sappia dove risiede ogni sistema operativo installato sul disco rigido, come caricare ciascuno di essi, quale caricare, se presentare un menu o meno, ecc. Questo è un bootloader.

Il BIOS carica ed esegue il codice situato in una posizione predefinita su un disco rigido (primo settore). Chiamiamo questo codice un bootloader, ma tecnicamente se hai installato Windows su un disco rigido vuoto, questo codice è installato anche da Windows, quindi puoi chiamarlo parte di Windows, soprattutto perché il bootloader di Windows non può caricare nessun altro sistema operativo oltre a Windows.

Per quanto riguarda il primo programma software che viene avviato all'avvio di un computer: la distinzione firmware / software è piuttosto sottile e il processo di avvio del computer moderno è molto complicato. Anche il BIOS in sé non è un programma monolitico, ma diverse fasi distinte concatenate. Tuttavia, bootloader è il primo codice modificabile dall'utente che viene eseguito. Questo è il primo pezzo di codice che l'utente può danneggiare, cancellare, infettare con un virus, ecc. Quindi suppongo che mentre tecnicamente il BIOS è il primo software in esecuzione, il bootloader è il primo nel senso che se il computer non avvia l'utente ha bisogno per verificare se è ok.


1
Per esperienza, un utente può certamente rompere il BIOS.
Smetti di fare del male a Monica

2

Perché il BIOS non può caricare direttamente il kernel del sistema operativo?

Tre motivi:

  • Il BIOS sulla piattaforma originale per PC, quando fu introdotto nel 1981, doveva funzionare nello stesso ruolo del sistema operativo CP / M, ovvero un sottile strato di astrazione per un paio di dispositivi e un semplice bootloader del disco. CP / M aveva un altro livello chiamato "BDOS" che gestiva il filesystem. DOS era simile a CP / M sotto molti aspetti in quanto era il sistema operativo in voga all'epoca, ed era strutturato in modo simile. Il BIOS era destinato a gestire aspetti specifici della piattaforma hardware, un ruolo che i driver nei sistemi operativi svolgono ora.

  • L'idea di un file system separato dal sistema operativo non ha ancora preso piede.

  • A quel tempo, RAM e ROM erano risorse costose e scarse. Il PC IBM 5150 originale poteva essere ottenuto con un minimo di 16 KB di RAM ( riferimento ). La dimensione della ROM di questo sistema era di 48 K e includeva un interprete BASIC. A quel tempo non esisteva nemmeno un file system standard.

Da quando DOS è diventato il sistema operativo più popolare per questa piattaforma e Windows da allora in poi, che ha funzionato con questa configurazione, nessuno ha pensato di estendere il BIOS in questo modo per includere la reale capacità di bootloading.

Non sono sicuro delle capacità di UEFI: potrebbe avere una reale capacità di bootloading che non viene utilizzata da Windows per un motivo o per l'altro (Windows insiste sull'utilizzo del proprio boot manager al momento dell'installazione). Altri firmware non BIOS come U-Boot e quelli in molti telefoni e router caricano ed eseguono direttamente i kernel. Non c'è stato un motivo tecnico per questo da quando i BIOS hanno iniziato ad avere spazio nella ROM per fare più cose.

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.