Grub

De Jose Castillo Aliaga
Ir a la navegación Ir a la búsqueda

GNU GRUB (abreviatura de GNU de Grand Unified Bootloader) és un paquet de carregador d'arrencada del Projecte GNU. GRUB és la implementació de referència de de la Free Software Foundation Multiboot Specification, que proporciona a l'usuari l'opció d'arrencar diversos sistemes operatius instal·lats en un ordinador o escollir un paràmetre del nucli específic disponible a les particions d'un sistema operatiu en particular.

GNU GRUB es va desenvolupar a partir d'un paquet anomenat el carregador de Grand Unified. S'utilitza principalment per a sistemes tipus Unix. El sistema operatiu GNU utilitza GNU GRUB com el carregador d'arrencada, igual que la majoria de les distribucions de Linux. El sistema operatiu Solaris ha utilitzat GRUB com el carregador d'arrencada en sistemes x86, a partir de la versió Solaris 10.

En aquest article sols anem a parlar de la versió Grub2.

Grub2

Aquestes són algunes de les característiques clau que fan Grub2 més sofisticat i més fàcil per als desenvolupadors per mantenir.

  • Suport Scripting: Grub2 ofereix suport de scripting. Els desenvolupadors i els usuaris poden crear scripts personalitzats per dur a terme funcions especialitzades. Grub2 fins i tot li permet fer ús de sentències condicionals.
  • Mòdul dinàmic de càrrega: Fent gala d'un disseny modular, Grub2 ofereix un mòdul dinàmic, el que significa que tots i cada mòdul es pot carregar quan sigui necessari, durant el temps de la selecció o després d'ella.
  • Menús personalitzats i temes: Grub2 proporciona un ampli marge de maniobra per als dissenyadors per crear temes magnífics.
  • Suport a UUID: Grub2 té suport natiu per UUID (Universal Unique Identifier), que proporciona una solució més concreta per a la identificació de les particions.
  • Un sistema centralitzat per al rescat i la configuració: Grub2 ofereix fins i tot més robustes mesures de rescat en cas d'alguns problemes.

Arranc del sistema amb Grub

La BIOS busca un dispositiu d'inici (com el disc dur) i d'aquí passa el control al primer sector físic del dispositiu conegut com màster boot record, són els primers 512 bytes (primer sector) del disc dur i que formen la fase 1 de GRUB.

  • La fase 1 de GRUB carrega la següent fase de GRUB, situada físicament a qualsevol part del disc dur. La fase 1 pot carregar la 2.
  • La fase 2 de GRUB rep el control, i presenta a l'usuari el menú d'inici.
  • GRUB carrega el nucli seleccionat per l'usuari, en la memòria i li passa el control.

En el cas d'ordinadors amb sistema d'arrencada EFI, el firmware carrega el executable de GRUB directament (fase 2), sempre que estigui correctament instal·lat en la partició EFI i configurat a la NVRAM.

[Archivo:GNU GRUB components.svg.png]

Configuració del Grub

El directori on es configura el grub està en /boot/grub.

Dins del directori, el fitxer més important és grub.cfg Aquest fitxer és modificat en les actualitzacions del sistema. Per tant, si el modifiquem, podem perdre les nostres modificacions. Per a les configuracions personalitzades estàtiques, Grub2 proporciona un arxiu anomenat 40_custom que es troba a /etc/grub.d/. Per tant, aquesta és la llista de fitxers o directoris importants:

  • /boot/grub/: Directori de configuració i dels scripts per a que el sistema arranque.
  • /etc/grub.d/: Directori de configuracions i scripts del administrador del sistema. Aquests fitxers afecten al contingut de grub.cfg.
    • /etc/grub.d/10_linux Aquest fitxer conté ordres i scripts que s'encarreguen del nucli de linux a la partició principal.
    • /etc/grub.d/30_os-prober Aquest fitxer conté ordres i scripts que s'encarreguen d'altres sistemes operatius. L'arxiu té 4 seccions. Els canvis que realitzem en una secció no afectaran a la resta de les seccions. Les quatres seccions són Windows, altres particions Linux, OSX i Hurd.
  • /etc/defaults/grub: Fitxer de configuració dels menús de Grub2.

Configuracions

update-grub

Actualitza el grub llegint els sistemes operatius detectats al disc i modificant el grub.cfg

Modificar l'ordre del menú d'arranc

No és recomanable tocar el fitxer grub.cfg. Per tant, cal modificar el /etc/default/grub:

GRUB_DEFAULT = 0 / saved    # amb l'opció 0 fem que se seleccioni per defecte la primera entrada, amb l'opció 1, la segona, i així succesivamente. Amb l'opció saved, fem que sempre seleccioneu l'última entrada que es va executar.
GRUB_TIMEOUT = 10           # li posem el temps d'espera fins a executar l'entrada que tenim posada com a default.
GRUB_HIDDEN_TIMEOUT = 0,    # amaga el menú d'entrades del grub, si li posem un temps mes alt el que fa és amagar el menú, però esperar-se un temps fins continuar. Per fer-ho visible hem de comentar (escriure # al principi) de la línia.
GRUB_HIDDEN_MENU_QUIET = true / false # si està a "true" oculta el compte enrere, mentre que si està a "false" mostra el compte enrere.
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> /dev/null || echo Debian` # determina el nom de l'entrada del menú.
GRUB_CMDLINE_LINUX = "opcions" # similar al alt options de l'antic grub.
GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash" # quiet serveix per agrupar les entrades iguals, mentre que splash serveix perquè ens mostri la imatge de càrrega en comptes dels missatges del nucli
# GRUB_GFXMODE = 640x480  # descomentar la línia activa el grub gràfic. Mitjançant la comanda vbeinfo escrit en la línia d'ordres del grub veiem les possibilitats. Per exemple:
GRUB_GFXMODE = 1024x768
# GRUB_DISABLE_LINUX_RECOVERY = "true" # Descomenta aquesta línia perquè no aparegui l'opció de recovery mode al menú

Afegir entrades personalitzades

Encara que update-grub sol detectar correctament tots els sistemes operatius, en ocasions cal introduir un a mà. Per a fer-ho, tenim que modificar le fitxer /etc/grub.d/40_custom. Cada entrada en el fitxer ha de tindre:

  • menuentry name: El nom mostrat en el menú d'arranc.
  • set root=(hdx, y): El disc i partició on està.
  • linux /vmlinuz-xyz: Defineix el path de la imatge de Linux en cas de ser una entrada de Linux.
  • initrd /initramfs.img: Defineix ramfs del sistema, sols es necessita si el sistema depen de initrd (no necessari per a Windows)
# (1) teu_Linux
menuentry El teu Linux  {
set root=(hd0,2)
linux /vmlinuz-linux root=/dev/sda2 ro nomodeset
initrd /initramfs-linux26.img
}

Arrancar una ISO des del grub:

menuentry "ubuntu-14.04-desktop-amd64.iso" {
set isofile="/media/hd1/ubuntu-14.04-desktop-amd64.iso"
loopback loop (hd0,1)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash --
initrd (loop)/casper/initrd.lz
}

Encara que és més fàcil amb grml-rescueboot

Fer un USB Multiboot manualment

Les distintes solucions automàtiques com Multisystem i demés no solen estar molt actualitzades i no funcionen sempre en totes les distribucions. Per fer un USB es pot utilitzar una plantilla com aquesta: https://github.com/aguslr/multibootusb No obstant, no contempla totes les possibles distribucions que trobem en el mercat. Per això, cal modificar els fixters de configuració com en la secció anterior utilitzant les plantilles que dona el Wiki de ArchLinux. O aquest

Reinstal·lar el Grub

En ocasions es trenca l'arranc. Pot ser per una instal·lació fallida o per Windows. També pot ser perquè canvia el disc dur o les particions. En qualsevol cas, si el sistema encara està instal·lat en una partició, es pot reinstal·lar el Grub i recuperar l'arranc. Per fer-ho, cal muntar la partició i fer un chroot.

root@equipo:~# mount /dev/sdb7 /mnt
root@equipo:~# mount --bind /dev/ /mnt/dev
root@equipo:~# mount --bind /dev/pts /mnt/dev/pts
root@equipo:~# mount --bind /proc /mnt/proc
root@equipo:~# mount --bind /sys /mnt/sys
root@equipo:~# chroot /mnt

# update-grub 
# grub-install /dev/sda


Un altra manera pot ser amb:

# mount /dev/sdaXY /mnt
# grub-install root-directory=/mnt /dev/hdZ

Enllaços


TODO: http://clonezilla.org/show-live-doc-content.php?topic=clonezilla-live/doc/04_Create_Recovery_Clonezilla http://elpuig.xeill.net/Members/vcarceler/c1/didactica/apuntes/ud3/na8