Il conflitto tra ciò che dici sul fatto che il bootloader si trova nella ROM e che si trova nell'MBR è forse dovuto al bootloader utilizzato per qualsiasi codice che risolve come fare il minimo per caricare il codice per fare in modo che il computer faccia qualcosa di utile, incluso ogni stato in un avvio a più livelli.
Quindi, lo stato iniziale è avere un computer, che è un dispositivo programmabile, ma non sa come caricare il software da eseguire perché non ha alcun software caricato. (E quindi avviare da pull up up dai suoi bootstrap ).
Storicamente, c'erano alcune soluzioni diverse a questo problema, ma in questi giorni iniziamo con un po 'di codice nella ROM (probabilmente probabilmente rigorosamente EEPROM), che è abbastanza per farlo guardare diversi dispositivi e provarli a turno fino a quando non trova quello che è avviabile.
(Questo è il motivo per cui molti sistemi si avviano da un CD o DVD se si inserisce un disco di installazione del sistema operativo nel e dal disco rigido altrimenti, il BIOS [il codice sulla ROM, incluso il codice di cui stiamo parlando e un altro basso roba di livello che avvia le cose] è impostato per guardare prima l'unità CD / DVD, quindi su un disco rigido se non trova nulla, i tweaker spesso lo impostano per ignorare l'unità CD / DVD a meno che non sia richiesto manualmente non perde tempo a girare un disco non avviabile che è stato lasciato nell'unità).
Questo codice nella ROM è talvolta chiamato bootloader .
Quando sa quale unità guardare, guarderà quindi l'MBR, che contiene informazioni sulle partizioni primarie - come potresti guardare in seguito / o / boot o C: / (su un sistema Windows) se non avessi nemmeno sai quale parte del disco era quale partizione, non importa come era montata ogni partizione? - e un po 'di codice con ulteriori istruzioni da eseguire. (Per inciso, questo spiega perché alcuni SO - come Windows - possono essere installati solo su una partizione primaria, i dettagli di quelle partizioni sono nell'MBR e questa è l'unica informazione di partizione che il loro bootloader ha letto, e non carica l'EBR in conoscere le partizioni logiche, per quanto riguarda quelle partizioni non esistono ancora).
Quel codice eseguibile, è anche chiamato bootloader . Quando ci preoccupiamo di distinguere tra questo e ciò che viene dopo, viene chiamato boot loader primario (perché a meno che non stiamo realizzando il nostro BIOS, ignoriamo il bit della ROM come fuori dal nostro controllo).
Quel codice sarà molto piccolo in quanto ha solo circa 400 byte per adattarsi, quindi per fare qualcosa di reale, caricherà un po 'più di codice, che può essere più grande in quanto non deve affrontare questo vincolo.
Questo codice è anche noto come bootloader . Quando ci interessa distinguere tra questo e ciò che è accaduto prima, si chiama boot loader secondario .
Quel codice potrebbe forse essere la fase finale del processo. Lo farebbe se avessi un solo sistema operativo o se tutti i sistemi operativi sul tuo sistema utilizzassero caricatori di avvio compatibili (ad esempio due installazioni Linux che utilizzano entrambi GRUB, quindi qualsiasi GRUB che è stato aggiornato per ultimo può offrire l'avvio in uno di essi), allora presenta i menu (se desiderato) caricati in un kernel e passa il controllo sul sistema operativo.
Nel caso in cui tu abbia un sistema operativo non compatibile con quel bootloader, potrebbe caricarsi a catena. Ad esempio, se hai Windows e Linux sullo stesso computer, l'opzione GRUB per il caricamento di Windows caricherà infatti un altro bootloader che conosce solo l'installazione / i di Windows e gli passerà sopra. Mentre questa era una fase terziaria del processo, è ancora chiamata boot loader secondario , perché non sa né si preoccupa che prima ci fosse un altro boot loader secondario. Questo sarebbe anche il caso di un'installazione Linux che utilizzava un diverso tipo di bootloader secondario.
Principalmente quando parliamo del bootloader in termini di Linux, generalmente non intendiamo il codice ROM (non fa parte di Linux, o è cambiato installando Linux). Quando lo facciamo update-grub
, stiamo cambiando il bootloader secondario, che di solito è in / boot di una particolare installazione. Quando lo facciamo, install-grub
lo stiamo cambiando e anche il bootloader primario nell'MBR in modo che abbia abbastanza codice per sapere dove si trova / boot (forse avviando un RAID software mentre procede) e lo caricheremo ed eseguiremo quando esso stesso verrà eseguito .
Quindi, in sintesi, hai sbagliato a dire che la ROM faceva parte della memoria principale * perché era separata. (In effetti, la RAM è considerata antonymous per ROM). Avevi ragione sia nel dire che c'era un bootloader lì che nell'MBR, perché sono due passaggi del processo ed entrambi sono talvolta chiamati con quel nome. E la risposta a "I diversi SO memorizzano il loro bootloader in posti diversi?" è "principalmente", perché se i bootloader secondari incompatibili nasconderanno altri bootloader (se si installa Windows dopo aver installato Linux) o se si richiede il chainload nell'altro se richiesto (se si risolve tale situazione o si installa Linux dopo Windows), ma un sistema operativo possono condividere un bootloader secondario se sono compatibili (se installi Linux dopo un altro Linux che utilizza lo stesso tipo di bootloader secondario e può vedere l'altro Linux [a volte il software RAID confonde le cose e rende necessario il chainloading).
* Nei giorni in cui si usava a livello di programmazione sia la ROM che la RAM, questo era diverso. Su uno ZX Spectrum, ad esempio, la ROM sarebbe 16kiB e includerebbe un interprete BASIC, quindi oltre a darti il punto di partenza per caricare qualcosa nel suo 48kiB o 128KiB (paginato) o RAM, (nel qual caso, si sta essenzialmente avviando in quell'interprete BASIC e quindi usarlo per avviare ciò che era sul nastro), c'erano un sacco di funzioni dell'interprete BASIC che i programmi nella RAM potevano usare (perché scrivere una funzione trig quando il computer ne ha già una in una posizione nota ? specialmente quando hai solo 48 kB per l'esecuzione di tutto il tuo codice). Questa ROM era anche visibile allo stesso modo della RAM, solo a indirizzi diversi. In tal caso la ROM faceva parte della memoria principale quanto la RAM, ma non era scrivibile.
A small portion of a computer's main memory where the CPU expects to find its initial program is constructed from special nonvolatile memory cells. Such memory is known as read-only memory(ROM)
secondo lui. La memoria principale è composta da due parti, RAM e ROM. Voglio solo sapere se il cosiddetto bootloader è installato nella parte ROM della memoria principale ... @Sergey