IMPORTANT: Degut a un error a la farga de la generalitat no es pot accedir com a usuari anonymous als fitxers dels cursos. Utilitzeu l'usuari: prova i la paraula de pas 123456

GRUB 2

De SergiTurWiki

Share/Save/Bookmark
Dreceres ràpides: navegació, cerca

La principal novetat de la versió 2 és que permet uns menús d'arrancada completament gràfics.

Paquets instal·lat en una Ubuntu Jaunty (9.04):

$ dpkg -l | grep grub
ii  grub                                       0.97-29ubuntu53                           GRand Unified Bootloader
ii  grub-common                                1.96+20080724-12ubuntu2                   GRand Unified Bootloader, version 2 (common 

Contingut

Fases de grub 2

Les fases per les que passa el procés d'arrancada amb GRUB són:

  1. La BIOs llegeix el IPL (fase 1) del MBR.
    1. S'executa el codi IPL del bootloader (/boot/grub/boot.img) que en el cas de Grub 2 és la fase 1, fixeu-vos que ocupa 512 bytes, el mateix que el MBR.
  2. Això executa el primer sector de la imatge principal (/boot/grub/diskboot.img), la localització d'aquest fitxer es troba guardada a algun lloc del fitxer de la fase 1 (/boot/grub/boot.img) i normalment es troba a la regió de compatibilitat de dos, és a dir a la resta de la pista 1 que no és el MBR (En sistemes duals amb Windows 7 pot ser diferent ja que aquesta secció ja no es troba lliure.) Això és el que abans era la fase 1.5
  3. Finalment s'executa la fase 2 amb l'imatge /boot/grub/core.img
  4. normal.mod executa i interpreta el fitxer de configuració de grub (típicament mostra el menú de GRUB).
$ ls -la /boot/grub/*img
-rw-r--r-- 1 root root   512 2010-12-27 09:17 /boot/grub/boot.img
-rw-r--r-- 1 root root   512 2010-12-27 09:17 /boot/grub/cdboot.img 
-rw-r--r-- 1 root root 23817 2010-12-27 09:17 /boot/grub/core.img
-rw-r--r-- 1 root root   512 2010-12-27 09:17 /boot/grub/diskboot.img
-rw-r--r-- 1 root root 10240 2010-12-27 09:17 /boot/grub/grldr.img
-rw-r--r-- 1 root root 29028 2010-12-27 09:17 /boot/grub/kernel.img
-rw-r--r-- 1 root root  1024 2010-12-27 09:17 /boot/grub/lnxboot.img
-rw-r--r-- 1 root root  1024 2010-12-27 09:17 /boot/grub/pxeboot.img

El sistema és més flexible, si us fixeu per exemple es pot precarregar la imatge pxeboot.img abans de la core.img per tal de tenir suport per a xarxa.

Instal·lació

Karmic Koala (9.10) en endavant

Sembla que ja vindrà instal·lat per defecte

Jaunty Jackalope (9.04) o anteriors

Per instal·lar

$ sudo apt-get install grub2

Apareixerà el següent missatge:

Que ens indica que GRUB 2 ha trobat fitxers antics de GRUB i ens recomanen que el GRUB 2 que instal·lem s'executi des de GRUB 1 mitjançant Chain Loading (és a dir tenir GRUB 1 i GRUB 2 al mateix temps conservant el GRUB 1 al MBR). Un cop comprovem que el GRUB 2 instal·lat és correcte se'ns indica que podrem passar GRUB 2 al MBR amb la comanda:

upgrade-from-grub-legacy

El Chain Loading el farà automàticament l'instal·lador.

Ara us mostrarà un missatge sobre les opcions del kernel. Accepteu:

Ara podeu provar el nou GRUB tornant a iniciar la màquina:

$ sudo reboot

Durant la càrrega estigueu atents per entrar al menú de GRUB (amb ESC) i trobareu una nova entrada:

Si us dona l'error:

Error 11: Unrecognized device String

Seguiu les passes deError 11: Unrecognized device String per solucionar el problema. El resultat serà quelcom similar a:

Si voleu fer els canvis permanents, inicieu el sistema i executeu:

$ sudo upgrade-from-grub-legacy

Installing GRUB to Master Boot Record of your first hard drive ... 

Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0)	/dev/sda  

GRUB Legacy has been removed, but its configuration files have been preserved,
since this script cannot determine if they contain valuable information.  If
you would like to remove the configuration files as well, use the following
command: 

  rm -f /boot/grub/menu.lst*

Canvis respecte a la versió anterior de Grub (Grub Legacy)


Temes

A la versió 1.96 encara no esta suportat. Ho estarà per la Karmic?

Vegeu:

http://grub.gibibit.com/

Notació de Grub 2

Hi ha canvis respecte Grub 1...

  • La notació del dispositiu (típicament un disc dur) és igual que a GRUB legacy. hd0 és el primer dispositiu (per exemple sda), hd1 és el segon (p. ex sdb)
  • La notació de les particions és diferent. Ara es comença a comptar des de 1

Exemples:

  • (hd0,1): és la primera partició del primer disc dur.
  • (hd0,2): és la segona partició del primer disc dur.
  • (hd1,2): és la segona partició del segon disc dur.

Consulteu també la notació de Grub 1 (Grub legacy) Grub#Notaci.C3.B3_Grub

Mòduls de grub 2

Els trobareu a la carpeta /boot/grub. Com que el MBR és molt petit com per contenir tots els mòduls de Grub 2, només el menú i algunes comandes molt bàsiques es troben al MBR. La gran part de la funcionalitat de GRUB2 es troba a /boot/grub en forma de mòduls (fitxer amb l'extensió .mod) i són inserits a mesura que és necessiten amb l'ordre insmod.

$ ls
915resolution.mod  cpuid.mod                    gcry_crc.mod        help.mod       multiboot2.mod       raid5rec.mod        ufs2.mod
acpi.mod           crc.mod                      gcry_des.mod        hexdump.mod    multiboot.mod        raid6rec.mod        uhci.mod
affs.mod           crypto.lst                   gcry_md4.mod        hfs.mod        nilfs2.mod           raid.mod            usb_keyboard.mod
afs_be.mod         crypto.mod                   gcry_md5.mod        hfsplus.mod    normal.mod           read.mod            usb.mod
afs.mod            cs5536.mod                   gcry_rfc2268.mod    iorw.mod       ntfscomp.mod         reboot.mod          usbms.mod
aout.mod           datehook.mod                 gcry_rijndael.mod   iso9660.mod    ntfs.mod             regexp.mod          usbtest.mod
ata.mod            date.mod                     gcry_rmd160.mod     jfs.mod        ohci.mod             reiserfs.mod        vbeinfo.mod
ata_pthru.mod      datetime.mod                 gcry_seed.mod       jpeg.mod       part_acorn.mod       relocator.mod       vbe.mod
at_keyboard.mod    diskboot.img                 gcry_serpent.mod    kernel.img     part_amiga.mod       scsi.mod            vbetest.mod
befs_be.mod        dm_nv.mod                    gcry_sha1.mod       keystatus.mod  part_apple.mod       search_fs_file.mod  vga.mod
befs.mod           drivemap.mod                 gcry_sha256.mod     linux16.mod    part_bsd.mod         search_fs_uuid.mod  vga_text.mod
biosdisk.mod       echo.mod                     gcry_sha512.mod     linux.mod      part_gpt.mod         search_label.mod    video_bochs.mod
bitmap.mod         efiemu32.o                   gcry_tiger.mod      lnxboot.img    partmap.lst          search.mod          video_cirrus.mod
bitmap_scale.mod   efiemu64.o                   gcry_twofish.mod    loadenv.mod    part_msdos.mod       serial.mod          video_fb.mod
blocklist.mod      efiemu.mod                   gcry_whirlpool.mod  locale         part_sun.mod         setjmp.mod          video.lst
boot.img           elf.mod                      gettext.mod         loopback.mod   part_sunpc.mod       setpci.mod          video.mod
boot.mod           example_functional_test.mod  gfxmenu.mod         lsmmap.mod     parttool.lst         sfs.mod             videotest.mod
bsd.mod            ext2.mod                     gfxterm.mod         ls.mod         parttool.mod         sleep.mod           xfs.mod
bufio.mod          extcmd.mod                   gptsync.mod         lspci.mod      password.mod         tar.mod             xnu.mod
cat.mod            fat.mod                      grldr.img           lvm.mod        password_pbkdf2.mod  terminal.lst        xnu_uuid.mod
cdboot.img         font.mod                     grub.cfg            mdraid.mod     pbkdf2.mod           terminal.mod        zfsinfo.mod
chain.mod          fshelp.mod                   grubenv             memdisk.mod    pci.mod              terminfo.mod        zfs.mod
cmostest.mod       fs.lst                       gzio.mod            memrw.mod      play.mod             test.mod
cmp.mod            functional_test.mod          halt.mod            minicmd.mod    png.mod              tga.mod
command.lst        gcry_arcfour.mod             handler.lst         minix.mod      probe.mod            trig.mod
configfile.mod     gcry_blowfish.mod            hashsum.mod         mmap.mod       pxeboot.img          true.mod
core.img           gcry_camellia.mod            hdparm.mod          moddep.lst     pxecmd.mod           udf.mod
cpio.mod           gcry_cast5.mod               hello.mod           msdospart.mod  pxe.mod              ufs1.mod  


Un dels mòduls més importants és linux.mod que té el suport per a les ordres initrd i linux. Consulteu l'apartat Grub shell per a més informació.

Grub shell

Cal tenir en compte que respecte a Grub 1 (Grub legacy) moltes ordres han canviat de sintaxi.

Com que el MBR és molt petit com per contenir tots els mòduls de Grub 2, només el menú i algunes comandes molt bàsiques es troben al MBR. La gran part de la funcionalitat de GRUB2 es troba a /boot/grub en forma de mòduls (fitxer amb l'extensió .mod) i són inserits a mesura que és necessiten.

La consola de Grub (Grub shell) apareix quan hi ha problemes.

Hi ha diferents consoles de shell, per exemple si us surt:

grub rescue>

És un conjunt restringit de la shell normal, per intentar activar la shell "normal" de Grub:

grub rescue> set prefix=(hdX,Y)/boot/grub
grub rescue> insmod (hdX,Y)/boot/grub/normal.mod
rescue:grub> normal

sh:grub>

En aquest últim cas vegeu com ha canviat el PROMPT, aquest prompt és el prompt de shell normal.

Anem a veure ara com es pot fer una arrencada "normal" amb ordres de Grub:

Algunes de les ordres disponibles a GRUB rescue són:

"insmod", "ls", "set" i "unset"

L'ordre ls us mostrarà les particions detectades.

El primer que cal saber és on està la partició que conté la carpeta /boot

grub rescue> set prefix=(hdX,Y)/boot/grub

on X és el número de disc físic i Y és el número de partició. Tingueu en compte que la notació de Grub 2 (GRUB_2#Notaci.C3.B3_de_Grub_2) és diferent que la de Grub 1,

Per exemple:

grub rescue> set prefix=(hd0,0)/boot/grub

Correspon a la primera partició del primer disc dur. El següent pas és inserir el modul de linux per tenir més comandes disponibles:

grub rescue> insmod (hdX,Y)/boot/grub/linux.mod


nota: Si /boot està a una partició a part cal ometre el prefix /boot: prefix=(hdX,Y)/grub i insmod (hdX,Y)/grub/linux.mod).

Ara teniu disponibles les ordres "linux" i "initrd" que són similars a les disponibles a Grub 1, per arrancar una sistema Linux:

set root=(hd0,5)
linux /boot/vmlinuz26 root=/dev/sda5
initrd /boot/kernel26.img
boot
IMPORTANT: Noteu com ara root no és un ordre sinó una variable que s'estableix amb l'ordre set

Suport de paginació

Per activar el suport de paginació:

sh:grub> set pager=1 

Podeu consultar també GRUB#GRUB_Shell.

Grub 2 commands

Resum dels canvis:

TODO:

find is replaced with search
geometry is gone and replaced by ls
kernel (in menu.lst) is replaced by linux (and other terms for different OSs)
title (in menu.lst) is replaced by menuentry (in grub.cfg)
root is still used but is now a variable
setup is gone; the work is done by grub-install
map is replaced by drivemap
device is replaced by loopback (makes a drive out of a file)
set is a GRUB 2 term used to set a variable

Splash images

Podeu instal·lar imatges splash amb:

$ sudo apt-get install grub2-splashimages

Ara les imatges es troben a:

/usr/share/images/grub/

Les podeu copiar a la carpeta de GRUB amb:

$ sudo cp /usr/share/images/grub/*.tga /boot/grub/

A:

http://members.iinet.net/~herman546/p20/GRUB2%20Splashimages.html

Trobareu thumbnails de les imatges.

Per utilitzar-les cal editar el fitxer

$ gksu gedit /etc/grub.d/05_debian_theme

Busqueu la línia:

for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

I canvieu-la per

for i in {/boot/grub,/usr/share/images/desktop-base}/Windbuchencom.{png,tga} ; do

On Windbuchencom és la imatge escollida. Ara executeu:

$ sudo grub-mkconfig 
Updating /boot/grub/grub.cfg …
Found Debian background: Windbuchencom.tga
Found linux image: /boot/vmlinuz-2.6.27-7-generic
Found initrd image: /boot/initrd.img-2.6.27-7-generic
Found memtest86+ image: /boot/memtest86+.bin
done

A Karmic Koala o

$ sudo update-grub
Found Debian background: Windbuchencom.tga
Updating /boot/grub/grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.28-11-generic
Found initrd image: /boot/initrd.img-2.6.28-11-generic
Found memtest86+ image: /boot/memtest86+.bin
done

En versions anteriors d'Ubuntu per tal d'escriure els canvis a la configuració de GRUB.

Recursos:

Resolució de problemes

Mostrar el menu de grub quan teniu un únic sistema operatiu (Ubuntu)

Cal modificar el fitxer:

$ sudo [joe]] /etc/default/grub

Cal comentar les línies:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true

Afegint un # al inici de la línia:

#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

Assegureu-vos també que teniu un valo de GRUB_TIMEOUT diferent de 0 (nombre de segons que teniu per escollir una opció del menú).

NO oblideu de fer:

$ sudo update-grub

Per tal d'aplicar els canvis.


No detecta correctament kopt del grub anterior?

Error 11: Unrecognized device String

Presioneu qualsevol tecla per tal de continuar. Seleccioneu la opció:

Chainload into GRUB 2

Pressioneu la tecla e per tal d'editar-la. Seleccioneu la opció:

root xxxxxxxxxxxxxxxxxxxx

On xxxxxxxxxxxxxxxxxxxx és el UUID del vostre disc dur. Torneu a editar premen la tecla e. Canvieu root per uuid:

uuid xxxxxxxxxxxxxxxxxx

I ara executeu b per iniciar amb els nous canvis. Per fer aquests canvis permanents cal editar el fitxer /boot/grub/menu.lst.

Recursos:

Vegeu també

Enllaços externs

OpenFPnet
IES Nicolau Copèrnic