StartUp-Manager.
**GNU GRUB** (xestor de arrinque unificado ou ***GR**and **U**nified **B**ootloader*  en inglés) é un programa de arrinque para computadoras. Sitúase despois das secuencias de post e antes do sistema operativo en si, xa que o seu traballo é precisamente xestionar a carga do sistema operativo na memoria. Cando o ordenador acolle varios sistemas (iso é chamado sistema dual, ou multiarrinque), permite que o usuario escolla entre os diferentes kernels dispoñibles.

GRUB é un software libre. Permite a inicialización de sistemas GNU/Linux , Windows, BSD ou Solaris polo que é moi utilizado en casos de multiarrinque. GRUB é configurable dende a súa propia interface mediante comandos nun arquivo de configuración, tendo o usuario acceso a personalizar o arrinque da computadora en múltiples parámetros. 

Grub debe ser capaz de recoñecer *todos* os sistemas de arquivos que poden chegar a ser necesarios para facer o boot. É por esta razón moito máis voluminoso que LILO, o bootloader clásico de sistemas GNU Linux, que só recoñece sistemas de arquivos *ext* nativos de Linux.

Características
---------------

* A diferenza de LILO, GRUB non ten que ser reiniciado para actualizar a súa configuración. GRUB asume dinámicamene os trocos feitos no seu ficheiro de configuración (*.conf*).
* No caso de que o ficheiro de configuración fose incorrecto, GRUB pode proporcionar un shell para permitir que un usuario experimentado cargue o sistema operativo manualmente facendo as modificacións necesarias nel.
* GRUB é moi independente do sistema operativo: permite cargar coa mesma efectividade sistemas pensados para multiboot ou sistemas pensados para ser utilizados en exclusiva (como Microsoft Windows). GRUB soporta ademais unha morea de sistemas de ficheiros como ext3, VFAT ou NTFS. GRUB tamén é compatible co modo enderezamento para bloques lóxicos (LBA).
* GRUB pode ser utilizado con diferentes interfaces. Moitas distribucións GNU/Linux usan os gráficos de apoio do GRUB para mostrar na inicialización do ordenador un menú cunha imaxe de fondo, e ás veces soporte para o rato.
* GRUB pode descargar imaxes de sistemas operativos dende a rede, o que permite que os usuarios poidan arrincar un sistema operativo sen necesidade de ter disco duro no que conter a imaxe. GRUB pode descomprimila e cargala a continuación.
* GRUB tamén soporta sistemas operativos non Linux contendo  bootloader tales como os de Windows, ou outra versión del mesmo, xa que existen dúas versións de GRUB, o GRUB Legacy e unha máis moderna chamada GRUB 2.

Funcionamento
-------------

GNU GRUB en MBR, particionado do disco duro e unidades.
GNU GRUB en GUID Partition Table

### GRUB versión 1

O MBR xeralmente contén a sección 1 do GRUB, mais pode tamén conter outro bootloader que pode enlazar a sección 1 de GRUB con outro sector de arrinque, tales como o principio doutro disco ou unha partición lóxica do tipo DOS. Debido ao pequeno tamaño do MBR, a parte 1 conténtase con cargar a sección seguinte do GRUB (que pode ser situada en calquera lugar dentro dos primeiros 1024 cilindros do disco). A sección 1 pode directamente cargar a segunda, ou cargar a sección 1.5, que se atopa nos 30 kilobytes seguintes ao *master boot record*. Esta sección 1.5 carga logo a parte  2.

### GRUB versión 2

Esta versión é semellante á versión 1 do GRUB, o *boot.img* é almacenado no MBR ou sector de arranque do volume como parte primeira do disco, con todo, pode cargar un sector de calquera LBA48. GRUB 2 carga o primeiro sector *do core.img* (xerado a partir de *diskboot.img*), que é entón utilizado para cargar o resto do arquivo. O ficheiro *core.img* é normalmente situado na mesma localización que a sección 1.5 tendo polo tanto os mesmos problemas. Secasí, pode ser desprazado a unha partición ou sistema de ficheiros diferentes.

Unha vez executado, o ficheiro *core.img* carga os ficheiros de configuración e os restates módulos necesarios.

### GRUB cargado

En canto GRUB é cargado, presenta unha interface que permite ao usuario escoller que sistema operativo utilizar, por medio normalmente dunha cotorna de menú gráfico. Se esta contorna non está dispoñible ou se o usuario prefire un control máis directo, GRUB ten o seu propio sistema de comandos. O usuario pode daquela precisar manualmente os parámetros de posta en marcha. GRUB pode ser cofigurado para cargar automaticamente un determinado módulo de kernel despois dun tempo de espera definido polo usuario.

Unha vez as opcións de inicio definidas, GRUB carga o kernel escollido en memoria e cédelle o control. GRUB pode pasar o control do inicio a un outro cargador, utilizando a carga en cadea. É este método o que é usado para cargar en memoria sistemas operativos como Windows, que non soportan multiboot. Deste xeito GRUB non ten problemas en ceder o traballo ao Windows Boot Manager.

Instalación
-----------

A diferenza de LILO, GRUB non ten que ser reinstalado no MBR cada vez que se modifica o ficheiro  *.conf*

Nun sistema GNU/Linux, o comando *grub-install* é unicamente utilizado para instalar a sección 1 de GRUB dentro do MBR ou nunha partición. Os ficheiros de configuración de GRUB  deben ser situados nunha partición utilizable, caso contrario a sección primeira executa automaticamente o intérprete de comandos.

O nome e a localización do ficheiro de varía dun sistema a outro. Por exemplo, na distribución Debian GNU/Linux, este ficheiro está situado en `/boot/grub/menu.lst,`, de xeito que Fedora pon en `/boot/grub/grub.conf` (este último utiliza unha ligazón simbólica para a localización `/etc/grub.conf` e que apunta a `/boot/grub/grub.conf` por razóns de compatibilidade).

Ademais, GRUB pode ser instalado nun dispositivo extraíble, como un disquete ou memoria USB formateada, para cargar un sistema que non podería arrincar dende o seu propio disco.

Configuración básica
--------------------

A configuración non é moi complexa, é necesario coñecer :

* o periférico onde está o núcleo (*kernel*) :

```
 hd0 : corresponde ao primeiro disco,
 hd1 : corresponde ao segundo disco,
 hd0,2 : corresponde ao primeiro disco, terceira partición Grub Legacy, segunda partición Grub2
```

* O nome do *kernel*
* O nome do *initrd* (disco RAM inicial, usado para facer os arranxos antes que o sistema de arquivos root sexa montado)
* Despois : *boot*

No ficheiro */boot/grub/menu.lst* atópanse os elementos de cores e *timeout* para o menú. Con posterioridade son definidos os núcleos dos sistemas operativos que poden ser cargados, ficando nunha lista uns encima dos outros.

```
 default 0
 timeout 5
#
 foreground = ffffff
 background = 000000
#
splashimage=(hd0,1)/boot/grub/leaf_splash.xpm.gz
#
 title Gentoo
 root (hd0,1)
 kernel /boot/vmlinuz root=/dev/sda2 quiet
#
 title Windows
 root (hd1)
 chainloader +1
```

Para o sistema propietario de Microsoft non hai ruta que leve a un núcleo para cargar en memoria. O truco consiste en escoller o primeiro disco e despois iniciar sobre o primeiro octeto dese disco vía « chainloader +1 ». O comando «boot» ten a utilidade de lanzar a execución.

Desenvolvemento
---------------

O termo "GRUB" xeralmente refírese a *GRUB Legacy*. Esta versión segue a recibir parches, pero ningunha nova función é engadida. Os desenvolvedores de GRUB decidiron concentrarse no GRUB 2, unha completa reformulación do programa para facelo máis seguro, máis limpo, máis poderoso e máis robusto.

GNU GRUB 2
----------

É a nova versión por defecto adoptada progresivamente por numerosas distribucións Linux. Os desenvolvedores quixeron con esta nova versión:  

* poder facer scripts para GRUB, con estruturas tales como sentenzas iterativas ou condicións
* unha interface gráfica de usuario
* un sistema para cargar módulos en tempo de execución, en vez de facer pesada a compilación
* maior portabilidade
* o apoio a caracteres non-ASCII
* o soporte para ficheiros ext4 dende o 13 de xullo de 2008
* o novo sistema de ficheiros btrfs
* unha mellor accesibilidade (sistema de etiquetas de voz...)

### Variantes

Outros proxectos procuran as súas propias versións (forks) do código de GRUB. Isto inclúe a Super Disco Grub (cuxos novos comandos inclúen "setgrubdevice" e "usbshift") e GRUB4DOS.
OpenSolaris utiliza unha versión modificada do GRUB Legacy que soporta os nomes para os discos, a selección automática de sistemas de 64 bits, e o inicio desde ZFS (con compresión e ambientes de multi-arrinque),. O proxecto Syllabe OS fixo unha versión modificada de GRUB para cargar o sistema dende o sistema de ficheiros AtheOS.

Notas e referencias
-------------------

1. ↑
2. ↑
3. ↑  x86: Modifying Boot Behavior by Editing the GRUB Menu at Boot Time Arquivado 19 de xullo de 2011 en Wayback Machine. Modifying Solaris Boot Behavior on x86 Based Systems (Task Map) - System Administration Guide: Basic Administration
4. ↑  x86: Supported GRUB Implementations Arquivado 21 de outubro de 2009 en Wayback Machine. (System Administration Guide: Basic Administration) - Sun Microsystems
5. ↑  2.3 Why does Syllable have its own version of GRUB? Arquivado 07 de xaneiro de 2011 en Wayback Machine. Syllable Documentation, Syllable

Véxase tamén
------------

### Outros artigos

* Xestor de arranque
* SILO
* LILO
* Linux

### Ligazóns externas

* Páxina oficial do proxecto
* GRUB2 UbuntuWiki
* GNU GRUB Manual 1.99*(en inglés)*
* GRUB - Guía Ubuntu
* GrubWiki Command List (Comandos para GRUB Legacy e GRUB 2)
* GRUBack: ferramenta para recuperar GRUB dende Windows
* Grub from the Ground Up
* Recuperar GRUB - Guía Ubuntu