Boot loader: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
m Aggiunto riferimento a Sblocco del bootloader (per disorfanare). |
||
(105 versioni intermedie di 70 utenti non mostrate) | |||
Riga 1:
{{F|software|febbraio 2013}}
[[File:GRUB_with_ubuntu_and_windows_vista.png|thumb|upright=1.4|[[GRUB]]]]
Il termine deriva dal fatto che il processo di avvio di un computer viene chiamato [[bootstrap]] (dal detto [[lingua inglese|inglese]] ''to lift oneself by one's own bootstrap'', "tirarsi su per le fibbie degli stivali").▼
Un '''boot loader''',<ref>Anche ''bootloader''. Lett. "caricatore di avvio".</ref> in [[informatica]], è il [[Programma (informatica)|programma]] che, nella fase di avvio ([[boot]]) del [[computer]], carica il [[kernel]] del [[sistema operativo]] dalla [[memoria secondaria]] (ad esempio un [[Disco rigido|hard disk]]) alla [[memoria primaria]] (generalmente la [[RAM]]), permettendone l'esecuzione da parte del [[processore]] e il conseguente avvio del sistema.
==Compiti==▼
* Molti kernel supportano la possibilità di ricevere parametri di avvio, e il boot loader si occupa di passarli al kernel. ▼
* Un boot loader può mostrare all'utente un menù di possibili kernel, con relativi parametri ed initrd, permettendo all'utente di scegliere quale sistema operativo avviare. ▼
▲Il termine deriva dal fatto che il [[processo (informatica)|processo]] di avvio di un [[computer]] viene chiamato [[
Il boot loader può essere installato nel [[master boot record]] (MBR) del disco di avvio, oppure nel primo settore della partizione che ospita il [[sistema operativo]] (nel qual caso deve essere richiamato da un [[boot manager]] installato nel MBR]).▼
== Descrizione ==
Esistono alcune limitazioni imposte dalla tecnica e dai produttori di hardware e firmware per cui solitamente si parla di boot in due stadi, lo stage 1 e lo stage 2, divisione logica che rispecchia la divisione fisica di molti boot loader moderni. Limitazioni di questo genere sono, per esempio, la possibilità di caricare dal dispositivo di boot nella [[RAM|memoria centrale]] solo una piccola quantità di byte e trovarla posizionata in un punto piuttosto sconveniente della memoria - è il caso emblematico dei sistemi basati sulla famiglia [[x86]] che carica i primi 512 byte che incontra sul dispositivo di boot a partire dall'indirizzo 0x07C0:0x0000 in avanti (ultimo byte in 0x07C0:0x01FF).▼
[[File:Windows_Boot_Manager.png|thumb|upright=1.1|[[Windows Boot Manager]]]]
▲=== Compiti ===
La funzione fondamentale di un boot loader è dunque caricare ed eseguire una kernel di sistema operativo, unitamente ai processi e servizi secondari. Nella maggior parte dei casi, questo richiede di accedere alla [[memoria di massa]], per leggere il kernel di sistema operativo, e potenzialmente altri [[file]]. Nei casi più semplici, il boot loader contiene l'indirizzo dei blocchi di disco in cui sono memorizzati i file da caricare, e deve quindi essere aggiornato se questi file vengono modificati. L'accesso al disco spesso avviene attraverso le funzioni fornite dal [[firmware]] (il [[BIOS]] nei sistemi [[PC IBM]] compatibili).
Alcuni boot loader posseggono la capacità di interpretare uno o più [[file system]] per trovare i file da caricare. In questo caso, possono anche caricare un [[file di configurazione]] dal disco, o permettere ad un utente avanzato di esplorare il disco alla ricerca di file da caricare.
Alcuni boot loader sono in grado di utilizzare le funzionalità fornite da alcune [[scheda di rete|schede di rete]] (tipicamente [[ethernet]]) per scaricare un kernel dalla rete, tipicamente via [[TFTP]].
Ogni sistema operativo installato anzi ogni volume avviabile (esistono infatti anche ambienti di ripristino o simili) ha uno specifico boot loader o, meglio, il file di configurazione di avvio (per [[Windows 10]] si chiama BCD, ad esempio) contiene le istruzioni di avvio specifiche che devono essere lette dal boot loader per ogni volume avviabile.
===Stage 1===▼
Lo stage 1, poc'anzi riferito anche come [[boot manager]], si occupa di mansioni molto elementari e che possono essere codificate in relativamente poco spazio, come ricercare la prima [[partizione di boot]] sul disco di boot, cercare, caricare il secondo stadio, più complesso ed esteso, in memoria e passargli il controllo. In questo stadio possono essere effettuate anche minime inizializzazioni di sistema utili al secondo stadio ma non è sempre il caso.▼
Funzionalità aggiuntive presenti in alcuni boot loader:
===Stage 2===▼
▲* Molti kernel supportano la possibilità di ricevere parametri di avvio
* Alcuni kernel prevedono che altri file siano resi disponibili al kernel durante il boot (per esempio nei sistemi [[Unix]]-like è comune l'uso di [[initrd]], un piccolo [[file system]] memorizzato in un file). Il caricamento di questi file viene gestito dal bootloader.
▲* Un boot loader può mostrare all'utente un menù di possibili kernel da caricare, con relativi parametri
* Un boot loader può richiedere una password per consentire l'avvio del sistema.
=== Funzionamento ===
[[File:SysLinux.png|thumb|upright=1.1|[[SYSLINUX]]]]
Il boot loader viene in molti casi installato in una posizione specifica di uno specifico dispositivo di [[memoria di massa]], tipicamente nel primo blocco del primo [[disco rigido|disco]] ("primo" rispetto all'ordine con cui i dispositivi sono collegati al calcolatore), da dove viene caricato dal [[firmware]] del calcolatore.
▲
▲Esistono alcune limitazioni imposte dalla tecnica e dai produttori di hardware e firmware per cui,
Con l'avvento della tecnologia [[Unified Extensible Firmware Interface|Uefi]] e del relativo partizionamento [[GUID Partition Table|GPT]] il funzionamento del boot loader è cambiato sostanzialmente a cominciare dal fatto che si trova, fisicamente, nella cartella efi contenuta nella relativa partizione di sistema.<ref>{{Cita web|lingua=en|url=https://conclusive.tech/glossary/what-is-a-bootloader-how-does-it-work/?utm_source=chatgpt.com|titolo=What is a Bootloader? How Does It Work In Embedded System? {{!}} Glossary|sito=conclusive.tech|accesso=2025-02-01}}</ref>
== Esempio di boot a stadi ==
[[File:U-boot.png|thumb|upright=1.1|[[Das U-Boot]]]]
Ecco una sommaria descrizione di un possibile boot a stadi:
▲=== Stage 1 ===
▲Lo stage 1, poc'anzi riferito anche come [[boot manager]], si occupa di mansioni molto elementari e che possono essere codificate in relativamente poco spazio, come ricercare
▲=== Stage 2 ===
Lo stage 2 è il vero e proprio gestore di avvio del programma esecutivo o del [[sistema operativo]]. Esso è molto più sofisticato, complesso ed esteso del primo stadio e si occupa principalmente, ma non solo, di scegliere quale [[kernel]] caricare in memoria per poi cedergli il controllo. Esso comincia ad assomigliare più nel dettaglio ad un vero e proprio sistema operativo per quanto minimale: è tuttavia più corretto chiamarlo programma esecutivo poiché manca di molte delle caratteristiche dei sistemi operativi moderni quali la [[multitasking|multiprogrammazione]], la gestione delle risorse e così via.
Un singolo boot loader è in grado di caricare molti tipi [[kernel]] (e quindi molti
Nota bene: quelli elencati sotto sono unicamente alcuni bootloader per [[PC]]<ref>A parte Windows Boot Manager in quanto le edizioni Windows recenti si utilizzano anche per dispositivi mobili.</ref> o simili (ad esempio i [[server]]).
Inoltre, è da tenere presente che computer sono anche, ad esempio, un navigatore satellitare o un [[Controllore logico programmabile|PLC]] e tanti altri tipi: questi hanno boot loader per lo più specifici.
* [[Windows Boot Manager|Winload]] - usato dai sistemi operativi [[Windows]] a partire da [[Windows Vista]]/[[Windows Server 2008 R2]]
▲==Boot loader famosi==
* [[NTLDR]] - usato dalle edizioni [[Windows]] basate su [[windows NT]]
* [[GRUB]] - usato nei sistemi [[Linux]] moderni
* [[LILO]] - usato storicamente da [[Linux]]
* [[
* [[SYSLINUX]] - usato per l'avvio da CD (CD di installazione e [[live CD]])
*
* [[Yaboot]] - usato su macchine di architettura [[PowerPC]]
* [[BootX]]▼
* XOSL (acronimo di e'''X'''tended '''O'''perating '''S'''ystem '''L'''oader)
* [[Das U-Boot]] - usato per caricare [[Linux]] su varie piattaforme hardware
I sistemi [[IBM]], [[Blade server]] o [[mainframe]], utilizzano bootloader proprietari<ref>Questa è la situazione tipica del vecchio [[Os/400]], ad esempio.</ref> quando non direttamente i comandi contenuti nell'[[UEFI]] oppure (se sono sistemi nella configurazione Linux based) i bootloader visti sopra (o specifici bootloader Linux ricompilati specificatamente per i [[Sistema operativo|sistemi operativi]] delle macchine IBM come "Petitboot").
[[Categoria:Boot loader]]▼
== Bootloader mobile ==
Anche il sistema operativo di uno [[smartphone]], [[Tablet PC|tablet]] o [[palmare]] contiene un boot loader. Nel campo dei [[Dispositivo mobile|dispositivi mobili]] i bootloader dei sistemi operativi originali sono spesso modificati dagli [[Original equipment manufacturer|OEM]] cioè i produttori del dispositivo, come succede per gli smartphone che montano [[Android]]. Questo, invece, non accade per i dispositivi [[Apple]] essendo realizzati dalla stessa azienda che sviluppa il sistema operativo ([[IOS]]).
I boot loader dei sistemi operativi installati su dispositivi mobili, con le relative limitazioni lato utente, hanno scatenato la "moda" del cosiddetto [[modding]] e delle operazioni conseguenti (''[[rooting|rootare]]'', [[Sblocco del bootloader|sbloccare]], ''flashare'', ecc.)<ref>[https://www.androidpit.it/bootloader-cose Guida al Bootloader: cos'è e a cosa serve - AndroidPIT]</ref>.
== Note ==
<references/>
== Voci correlate ==
* [[Boot manager]]
== Altri progetti ==
{{interprogetto}}
{{Portale|Informatica}}
▲[[Categoria:Boot loader| ]]
[[Categoria:BIOS]]
|