Boot loader: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Hce (discussione | contributi)
Boot loader famosi: completati gli usi tipici dei vari bootloader
m Aggiunto riferimento a Sblocco del bootloader (per disorfanare).
 
(101 versioni intermedie di 68 utenti non mostrate)
Riga 1:
{{F|software|febbraio 2013}}
{{C|Usa concetti e terminologia di specifici sistemi operativi senza chiarire il concetto generale sottostante e senza chiarire che si tratta di esempi (errore frequente nelle voci di informatica, che spesso sono scritte da persone che conoscono un solo sistema operativo e fanno fatica a distinguere il generale dal particolare). Alcune sezioni della voce sono implicitamente riferite a Unix, e altre a Microsoft, per cui non è nemmeno possibile spostare la voce a un titolo più adatto (come ''bootloader di Unix'').|informatica|ottobre 2007}}
[[File:GRUB_with_ubuntu_and_windows_vista.png|thumb|upright=1.4|[[GRUB]]]]
Il '''boot loader''' è un [[Programma (informatica)|programma]] che carica il [[kernel]] di un [[sistema operativo]] e ne permette l'avvio.
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==
* Il boot loader deve caricare ed eseguire un kernel di sistema operativo.
** Questo richiede di accedere alla [[memoria di massa]], e potenzialmente di interpretare un [[filesystem]] per trovare il file del kernel.
** Alcuni boot loader sono in grado di scaricare un kernel dalla rete.
* Molti kernel supportano la possibilità di ricevere parametri di avvio, e il boot loader si occupa di passarli al kernel.
* Alcuni kernel prevedono che un piccolo [[file system]] sia reso disponibile durante il boot (per esempio [[initrd]] nei sistemi [[Unix]]-like). Questo file system iniziale viene gestito dal bootloader.
* Un boot loader può mostrare all'utente un menù di possibili kernel, con relativi parametri, 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 [[bootstrapboot]]strap (dal detto [[lingua inglese|inglese]] ''to lift oneself by one's own bootstrap'', "tirarsi su per le fibbie degli stivali"). Nel caso di più sistemi operativi installati sulla stessa macchina, il caricamento da parte del boot loader è preceduto dalla selezione del sistema operativo desiderato da parte dell'utente tramite il [[boot manager]].
==Realizzazione==
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 0x0000:0x7C00 in avanti (ultimo byte in 0x0000:0x7E00).
[[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, eper configurare il loro comportamento; il boot loader si occupa di passarli al kernel., e in alcuni casi permette all'utente di editare questi parametri.
* Alcuni kernel prevedono che unaltri piccolo [[file system]]siano siaresi resodisponibili disponibileal kernel durante il boot (per esempio nei sistemi [[Unix]]-like è comune l'uso di [[initrd]], neiun sistemipiccolo [[Unixfile system]]-like memorizzato in un file). QuestoIl filecaricamento systemdi inizialequesti file viene gestito dal bootloader.
* Un boot loader può mostrare all'utente un menù di possibili kernel da caricare, con relativi parametri, permettendo all'utente di scegliere quale sistema operativo avviare.
* 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.
 
IlAd esempio, nell'architettura [[IBM compatibile]] il boot loader può essere installatomemorizzato nel [[master boot record]] (MBR) del [[disco di avvio]], oppure nel primo settore della [[partizione (informatica)|partizione]] che ospita il [[sistema operativo]] (nel qual caso deve essere richiamato da un [[boot manager]] installato nel MBR); oppure può essere anche nel primo settore di un [[Volume (informatica)|volume]] avviabile, come ad esempio un ambiente di ripristino (come [[Windows Recovery Environment]]).
 
Esistono alcune limitazioni imposte dalla tecnica e dai produttori di hardware e firmware per cui, solitamenteal si parlafine di aggirarle molti boot loader moderni operano ricorrendo al cosiddetto ''boot in due stadi'', lo stage 1 e lo stage 2, divisione logica che rispecchiarimarca ladiversi divisionemomenti fisicadella fase di molti boot loader moderniavvio. LimitazioniQuanto dialle questolimitazioni genereesse 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 [[Architettura x86|x86]] che carica i primi 512 byte che incontra sul dispositivo di boot a partire dall'indirizzo 0x0000:0x7C00 in avanti (ultimo byte in 0x0000:0x7E000x7DFF).
 
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 lail primaprimo [[partizionevolume di boot(informatica)|volume]] di sistema 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.
 
=== 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 [[sistema operativo|Sistemisistemi operativi]]) differenti su partizioni diverse. Naturalmente può essere caricato un solo kernel per volta.
 
== Boot loader famosipiù conosciuti ==
Per ulteriori informazioni circa quel che accade durante l'azione del boot loader, vedere la voce relativa alla [[Boot|fase di bootstrap]].
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]]
* [[GRUBBootX]] - usato neida sistemi linux moderni[[macOS]]
* [[SYSLINUX]] - usato per l'avvio da CD (CD di installazione e [[live CD]])
* [[PXELINUX]] - variante di SYSLINUX usata per l'avvio da rete (vedi [[Preboot Execution Environment]])
* [[BootX]] - usato da [[Mac OS X]]
* [[Yaboot]] - usato su macchine di architettura [[PowerPC]]
* XOSL (acronimo di e'''X'''tended '''O'''perating '''S'''ystem '''L'''oader)
* [[XOSL]]
* [[NTLDRDas U-Boot]] - usato daper caricare [[windows NTLinux]] esu varie piattaforme successivihardware
 
[[Categoria:Boot loader]]
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").
 
== 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 ==
* [[XOSLBoot]]
* [[Boot manager]]
 
== Altri progetti ==
{{interprogetto}}
 
{{Portale|Informatica}}
 
[[Categoria:Boot loader| ]]
[[ca:Carregador de l'arrencada]]
[[Categoria:BIOS]]
[[de:Boot-Loader]]
[[es:Arranque]]
[[fr:Boot]]
[[he:אתחול]]
[[nl:Boot (computer)]]
[[pt:Boot]]
[[ru:Загрузчик ОС]]