GNU GRUB
GNU GRUB software | |
---|---|
![]() | |
![]() | |
Genere | Boot loader |
Sviluppatore | progetto GNU |
Data prima versione | 1995; 29 anni fa |
Ultima versione | 2.12 (20 dicembre 2023) |
Sistema operativo | GNU |
Linguaggio | C[1] linguaggio assembly |
Licenza | GNU General Public License 3+[1] (licenza libera) |
Lingua | Multilingua |
Sito web | www.gnu.org/software/grub/ |
Modifica dati su Wikidata · Manuale |
GNU GRUB (acronimo di GNU GRand Unified Bootloader, detto anche GRUB 2 per far riferimento all'ultima versione) è un boot loader del progetto GNU. Viene utilizzato in diverse distribuzioni Linux come gestore di avvio per ambienti dual boot o per avviare specifiche configurazioni del kernel.
Descrizione
Funziona su architetture PC basate su BIOS recenti di tipo UEFI o sulle precedenti IBM-compatibili, sulle PowerPC basate su OpenFirmware (come PowerMac e Pegasos), ma anche su RiscOS/ARM, su UltraSparc e Coreboot (ex LinuxBIOS). Semplice da usare, perché configurabile in maniera automatica o modificando un unico file di configurazione, è corredato da vari programmi ausiliari. Primo fra tutti, l'installatore grub-install, che appunto individua i vari kernel e altri sistemi presenti nella directory radice e negli altri dispositivi di memorizzazione di massa per e genera automaticamente la configurazione.
Identificare i dispositivi
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/18/GNU_GRUB_on_MBR_partitioned_hard_disk_drives.svg/220px-GNU_GRUB_on_MBR_partitioned_hard_disk_drives.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/GNU_GRUB_on_GPT_partitioned_hard_disk_drives.svg/220px-GNU_GRUB_on_GPT_partitioned_hard_disk_drives.svg.png)
GRUB utilizza una nomenclatura dei moduli diversa rispetto a quella che è utilizzata in LILO o all'interno di Linux, anche perché non è un bootloader dedicato solo a Linux. GRUB richiede che le unità cui si fa riferimento siano indicate fra parentesi tonde, e deve essere specificato sia il tipo di unità che il numero cardinale progressivo (iniziano a contare dal numero 0 e non 1) ed, eventualmente, la partizione utilizzata.
Qualche esempio chiarirà meglio la situazione: (hd0,1) indica che ci si sta riferendo ad un hard disk (hd), e tra tutti i dischi fissi presenti sul computer, si indica proprio il primo della catena (hd0). GRUB non fa alcuna differenza tra IDE, SCSI o SATA: tutto dipende dalla catena di riconoscimento del BIOS, che può essere impostata a piacere. In genere, i dischi EIDE hanno la precedenza sui restanti, e vengono identificati con i numeri più bassi.
Il secondo numero dopo la virgola indica la partizione del disco specificato alla quale ci si sta riferendo: le partizioni primarie vengono identificate come 0, 1, 2 e 3 mentre le partizioni logiche iniziano sempre da 4, indipendentemente dal numero di primarie presenti. Nell'esempio, (hd0,1) indica la seconda partizione primaria, mentre (hd0,4) indica la prima partizione logica sempre dello stesso disco. Nel caso ci si stia riferendo ad un disco EIDE, secondo la convenzione Linux, (hd0,1) corrisponde a hda2, mentre (hd0,4) corrisponde a hda5.
Rispetto ad altri boot loader, GRUB è in grado di sfogliare file all'interno dei file system. Attualmente supporta i seguenti file system:
- Ext2/Ext3/Ext4
- ReiserFS
- XFS di SGI (sperimentale)
- Journaled File System (JFS)
- UFS
- VFAT (FAT16 e FAT32).
- NTFS
GRUB è normalmente utilizzato attraverso monitor e tastiera del computer, ma può essere configurato anche per interagire con una console seriale.
Processo di avvio
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/GNU_GRUB_components.svg/310px-GNU_GRUB_components.svg.png)
boot.img
has the exact size of 446 Bytes and is written to the MBR (sector 0). core.img
is written to the empty sectors between the MBR and the first partition, if available (for legacy reasons the first partition starts at sector 63 instead of sector 1, but this is not mandatory). The /boot/grub
-directory can be located on an distinct partition, or on the /-partition.GRUB è un bootloader a stadi poiché la sua esecuzione è scandita da vari stadi (stage) di avvio, ognuno dei quali è rappresentato da un file:
- due stage essenziali (file stage1 e stage2)
- vari stage opzionali (indicati con i files che contengono nel proprio nome stage1_5)
stage1
Questo è un file essenziale per poter effettuare il boot con GRUB. Tipicamente si trova nel MBR o nel boot sector di una partizione. Poiché un boot sector è grande 512 byte, la dimensione di tale file è esattamente 512 byte. Tutto ciò che fa stage1 è di caricare il file stage2 o lo specifico file *stage1_5 dal disco (stage1 non gestisce nessun tipo di filesystem).
stage2
Questo è il nucleo di GRUB. Generalmente risiede su un filesystem, ma ciò non è necessario.
stage1_5
Questa famiglia di file ha lo scopo di collegare il file stage1 al file stage2. Cioè un ipotetico file che contenga nel proprio nome stage1_5 significa che quest'ultimo è caricato da stage1 e, a sua volta, caricherà stage2. Lo specifico stage1_5 rende GRUB capace di gestire un determinato filesystem. In questo modo, si può spostare il file stage2 in una posizione diversa sul filesystem senza dover necessariamente reinstallare GRUB.
Il processo di avvio può essere così riassunto:
1) Il BIOS cerca le periferiche avviabili e dà il controllo al settore di avvio (MBR) del floppy[2] o dell'hard disk.
2) Il Master Boot Record può caricare lo stage 1.5 (risiede nei 30 kB successivi all'MBR) che a sua volta caricherà lo stage 2 oppure caricare direttamente lo stage 2, collocato in qualsiasi punto del disco.
3) Lo stage 2 contiene il menu di avvio con la lista dei kernel avviabili.
4) GRUB carica il kernel selezionato nella memoria e lo esegue.
Versioni
Una prima versione del software, prima chiamata GRUB e poi rinominata GRUB Legacy, è stata sviluppata fino alle versioni 0.9x. Sulla distribuzione Ubuntu, per esempio, l'ultima versione legacy inclusa è stata la 0.9.10.
L'attuale GRUB 2 non costituisce un mero aggiornamento della precedente versione, perché nasce da una completa riscrittura con il fine di semplificare il codice del precedente e aumentare modularità e portabilità. Il software nasce con il progetto PUPA, volto appunto alla ricerca sulle evoluzioni di GRUB. Tra le caratteristiche più interessanti della versione 2 spiccano: il supporto per lo scripting; il caricamento dinamico di moduli, per estendere le funzionalità in run-time piuttosto che in compile-time; un supporto grafico particolarmente avanzato per un boot loader, che supporta VGA, VESA framebuffer, font e anche un terminale grafico (gfxterm).
Note
Voci correlate
Altri progetti
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/StartUp-Manager.png/220px-StartUp-Manager.png)
Altri progetti
- Wikimedia Commons
Wikimedia Commons contiene immagini o altri file su GRUB
Collegamenti esterni
- (EN) Sito ufficiale, su gnu.org.
- GNU GRUB / GNU GRUB (altra versione) / GNU GRUB (altra versione) / GNU GRUB (altra versione) / GNU GRUB (altra versione) / GNU GRUB (altra versione), su packages.debian.org.
- Repository sorgenti di GNU GRUB, su git.savannah.gnu.org.
- (EN) Sito di segnalazione bug, su savannah.gnu.org.
- (EN) GNU GRUB, su Free Software Directory.
- (EN) Il manuale ufficiale, su gnu.org.
- (EN) Pagine wiki di GRUB, su grub.enbug.org. URL consultato il 10 dicembre 2005 (archiviato dall'url originale il 28 agosto 2006).
- (EN) Linux+Win+Grub HowTo, su tldp.org.
- (EN) GRUB su Win32, su skyjammer.com. URL consultato il 1º luglio 2005 (archiviato dall'url originale il 20 agosto 2006).
- (EN) GRUB4DOS and WinGRUB, su grub4dos.sourceforge.net.
- (EN) GRUB Installer for Windows, su geocities.com. URL consultato il 1º luglio 2005 (archiviato dall'url originale il 14 aprile 2005).
- (EN, ZH) GRUB per DOS, su grub.linuxeden.com. URL consultato il 1º luglio 2005 (archiviato dall'url originale il 28 settembre 2007).
- Guida a Grub in Italiano, su guide.debianizzati.org.
- (EN) Grub 2 (comunità Ubuntu), su help.ubuntu.com.
- (EN) GNU GRUB Wiki, su grub.enbug.org. URL consultato il 10 dicembre 2005 (archiviato dall'url originale il 28 agosto 2006).
V · D · M | ||
---|---|---|
Storia | Manifesto GNU · Free Software Foundation (FSF Europe · FSF India · FSF Latin America) · Storia del software libero | ![]() |
Licenze | GNU General Public License · GNU Lesser General Public License · GNU Free Documentation License · GPL linking exception · GNU Affero General Public License | |
Software | GNU (Varianti) · GNU Hurd · GTK · GNOME · GIMP · Jami · Bash · Emacs · Screen · GCC · Gnash · gzip · GRUB · Pacchetti GNU | |
Rappresentanti | Richard Stallman · Robert J. Chassell · Bradley M. Kuhn · John Sullivan · Eben Moglen · Loïc Dachary · Georg C. F. Greve · Alexandre Oliva · Benjamin Mako Hill · Federico Heinz · Joshua Gay · Matt Lee · Ricardo Galli | |
Voci correlate | Revolution OS · BadVista · Defective by Design · Controversia sul nome GNU/Linux |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/12/Nuvola_apps_emacs.svg/25px-Nuvola_apps_emacs.svg.png)