User Tools

Site Tools


doc:appunti:linux:tux:grub

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:tux:grub [2014/04/04 11:54] – [Installazione di GRUB] niccolodoc:appunti:linux:tux:grub [2024/09/27 15:35] (current) – [Boot interattivo dal prompt grub>] niccolo
Line 103: Line 103:
 ^ /etc/grub.d/         | Snippet usati da ''update-grub'' per generare il menu.  | ^ /etc/grub.d/         | Snippet usati da ''update-grub'' per generare il menu.  |
  
 +**ATTENZIONE**! Non fare confusione tra l'UUID del block device (utilizzato nei contesti di cui sopra) e l'**UUID dei volumi RAID**. Questi ultimi si visualizzano con il comando:
 +
 +<code>
 +mdadm --detail /dev/md0
 +</code>
 +
 +oppure eseguendo **''/usr/share/mdadm/mkconf''**. L'UUID dei volumi RAID sono usati solo nel contesto di assemblaggio dei volumi stessi, quindi nel file **''/etc/mdadm/mdadm.conf''**.
 ===== fdisk e modo DOS-compatibile ===== ===== fdisk e modo DOS-compatibile =====
  
Line 144: Line 151:
 mklabel gpt mklabel gpt
  
-mkpart primary   1.0MB   10.0MB                                   +mkpart primary   1.0MB   10.0MB 
-mkpart primary  10.0MB   60.0GB                                   +mkpart primary  10.0MB   60.0GB 
-mkpart primary  60.0GB   80.0GB                                   +mkpart primary  60.0GB   80.0GB 
-mkpart primary  80.0GB  200.0GB                                   +mkpart primary  80.0GB  200.0GB 
-mkpart primary 200.0GB  100%                                     +mkpart primary 200.0GB  100%
  
 name 2 rootfs name 2 rootfs
Line 162: Line 169:
 set 1 bios_grub on set 1 bios_grub on
 </code> </code>
 +
 +Se si vuole utilizzare unità di misura più precise, ad esempio il byte, dare il comando **''unit B''**.
  
 Il risultato visibile con **''print''** è il seguente: Il risultato visibile con **''print''** è il seguente:
Line 265: Line 274:
  
 Come impostare il modo video per GRUB e per il kernel che viene avviato: vedere la pagina **[[..:sa:console]]**. Come impostare il modo video per GRUB e per il kernel che viene avviato: vedere la pagina **[[..:sa:console]]**.
 +
 +===== Bootstrap dal prompt grub> =====
 +
 +Vedere questo tutorial: [[http://tuxers.com/main/instigating-a-manual-boot-from-the-grub-prompt/|Instigating a Manual Boot from the GRUB Prompt]].
 +
 +La sequenza minimale per avviare dal prompt **''grub>''** è la seguente:
 +
 +<code>
 +ls
 +set root=(md/4)
 +linux /vmlinuz ro root=/dev/md4
 +initrd /initrd.img
 +boot
 +</code>
 +
 +Con il primo comando si elencano i filesystem riconosciuti dai quali è possibile leggere l'immagine del kernel e dell'initrd. La riga di comando per caricare il kernel deve indicare il root filesystem, si può utilizzare il nome del device oppure l'UUID con **''root=UUID=''**. L'UUID di un filesystem si può vedere in **''/dev/disk/by-uuid/''** oppure con il comando **''dumpe2fs''**.
 +
 +===== Installare GRUB in un'altra partizione =====
 +
 +Questa la sequenza tipica di boot con GRUB (verificare con lo script **bootinfoscript**):
 +
 +  - **MBR** di /dev/sda -> carica ''core.img'' dal settore 1 di ''/dev/sda''
 +  - **core.img** -> cerca un filesystem, ad esempio tramite //MD UUID//
 +  - Filesystem **''/boot/grub/''** -> esegue il menut ''grub.cfg''
 +
 +Se si vuole abilitare il GRUB che sta su in filesystem diverso (es. ''/dev/md4'') da quello di boot (es. ''/dev/md0''):
 +
 +<code>
 +mount /dev/md4 /mnt
 +grub-install --boot-directory=/mnt/boot /dev/sda
 +</code>
 +
 +===== GRUB su sistema EFI =====
 +
 +I PC a partire dall'anno 2010 dovrebbero supportare nel BIOS il bootstrap secondo lo standard **[[wpit>UEFI]]** che si contrappone al vecchio sistema dell'MBR che viene quindi chiamato generalmente **legacy**. Nella configurazione legacy il codice di GRUB si installa, oltre che nel settore MBR, anche in una partizione dedicata identificata dal flag **bios_grub**. In una installazione EFI invece è necessario creare sul disco una partizione FAT32 generalmente identificata dai flag **boot** ed **esp**.
 +
 +Il boot legacy oppure EFI viene generalmente impostato nel programma di setup del BIOS, una volta effettuato il bootstrap in GNU/Linux è possibile sapere se il sistema è EFI verificando l'esistenza della pseudo directory **/sys/firmware/efi/**. Il programma **grub-install** è in grado di determinare l'impostazione del sistema e installare GRUB nello spazio opportuno.
 +
 +===== GRUB su sistema EFI dual boot =====
 +
 +Vedere questa [[https://wiki.debian.org/GrubEFIReinstall|guida]].
 +
 +Scenario: installazione Debian Wheezy su disco con Windows 7, che si avvia in modalità EFI.
 +
 +Fortunatamente Windows 7 consente il ridimensionamento della partizione direttamente dal disk manager nativo. Dopo aver effettuato l'installazione Debian da CD o chiavetta USB si scopre che il boot manager (EFI) è rimasto inalterato e si avvia solo Windows 7.
 +
 +Occorre riavviare da chiavetta USB, modalità rescue, e fare l'installazione di Grub sulla partizione EFI. Bisogna guadagnare una shell chroot nell'ambiente target (montando ''/dev'', ''/dev/pts'', ''/proc'' e ''/sys'', ecc.)
 +
 +Se la partizione EFI è ''/dev/sda'' si fa qualcosa del genere:
 +
 +<code>
 +mount /dev/sda1 /boot/efi
 +apt-get install --reinstall grub-efi
 +grub-install /dev/sda
 +</code>
 +
 +Nel caso in cui si esegua nuovamente **''grub-install''**, ricordarsi sempre di montare prima la partizione EFI in ''/boot/efi'', altrimenti la voce Windows 7 nel menu di Grub viene persa.
 +
 +===== Boot interattivo dal prompt grub> =====
 +
 +Se se interrompe il bootstrap oppure l'host non riesce a completare il normale boot, è possibile avviare manualmente un boostrap alternativo dal prompt **%%grub>%%** (ammesso che esista un kernel e una initrd valida). Ecco un esempio che utilizza il kernel dalla partizione RAID **/dev/md4**.
 +
 +<code>
 +grub> ls (md/4)/boot
 +initrd.img-6.1.0-25-amd64 vmlinuz-6.1.0-25-amd64 ...
 +
 +grub> set prefix=(md/4)/boot/grub
 +grub> set root=(md/4)
 +
 +grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/md4
 +grub> initrd /boot/initrd.img-3.13.0-29-generic
 +grub> boot
 +</code>
 +
 +La sintassi **%%(md/4)%%** viene utilizzata per indicare le partizioni RAID. La sintassi per indicare la partizioni normali di un disco SATA è invece del tipo **%%(hd0,1)%%**, dove i dischi fissi sono numerati a partire da **zero** e le partizioni a partire da **1**.
 +
 +
 +===== GRUB_DEFAULT Selezione kernel predefinito =====
 +
 +Le nuove installazioni di GRUB2 hanno il menu di avvio organizzato in **menuentry** e **submenu**. Per selezionare come predefinita una delle opzioni, si edita **''/etc/default/grub''**.
 +
 +L'indice di ogni voce inizia da zero, quindi se il sumbenu appare in posizione 2 e si vuole selezionare la quarta menuentry di tale submemu, si deve mettere:
 +
 +<file>
 +GRUB_DEFAULT="1>3"
 +</file>
 +
 +quindi eseguire **update-grub**.
doc/appunti/linux/tux/grub.1396605296.txt.gz · Last modified: 2014/04/04 11:54 by niccolo