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
Last revisionBoth sides next revision
doc:appunti:linux:tux:grub [2012/09/13 09:49] – [Installare GRUB2 su disco non di boot] niccolodoc:appunti:linux:tux:grub [2017/01/11 12:29] – [GRUB su disco EFI dual boot] niccolo
Line 2: Line 2:
  
 ===== Installazione di GRUB ===== ===== Installazione di GRUB =====
 +
 +**ATTENZIONE**: Queste istruzioni valgono per **GRUB versione inferiore a 2**, ad esempio grub 0.97 in Debian 4 Etch, fino a Debian 5 Lenny. A partire da Debian 6 Squeeze il pacchetto fittizio grub 0.97-64 effettua il passaggio a GRUB 2 (pacchetto **grub-pc 1.99**).
 +
 +Una delle principali **differenze** nel passaggio da GRUB a GRUB 2 è la **numerazione delle partizioni**, che è passata da **base 0** a **base 1**.
  
 Teoricamente il comando **''grub-install''** dovrebbe provvedere a fare l'autodetect di tutto e installare opportunamente GRUB sul disco fisso. Una installazione manuale dalla shell di GRUB potrebbe invece essere questa: Teoricamente il comando **''grub-install''** dovrebbe provvedere a fare l'autodetect di tutto e installare opportunamente GRUB sul disco fisso. Una installazione manuale dalla shell di GRUB potrebbe invece essere questa:
Line 99: 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 140: Line 151:
 mklabel gpt mklabel gpt
  
-mkpart primary 10.0MB +mkpart primary   1.0MB   10.0MB                                   
-mkpart primary 10.0MB 20.0GB +mkpart primary  10.0MB   60.0GB                                   
-mkpart primary 20.0GB  21.0GB +mkpart primary  60.0GB   80.0GB                                   
-mkpart primary 20.9GB 60GB +mkpart primary  80.0GB  200.0GB                                   
-mkpart primary 59.9GB 2001GB+mkpart primary 200.0GB  100%                                     
  
 name 2 rootfs name 2 rootfs
 name 3 swap name 3 swap
-name 4 lvm +name 4 var 
-name 5 storage+name 5 home
  
 set 2 raid on set 2 raid on
Line 158: 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 163: Line 176:
 <code> <code>
 Number  Start   End     Size    File system  Name     Flags Number  Start   End     Size    File system  Name     Flags
-      17.4kB  10.0MB  10.0MB                        bios_grub +      1049kB  10.5MB  9437kB               primary  bios_grub 
-      10.0MB  20.0GB  20.0GB               rootfs   raid +      10.5MB  60.0GB  60.0GB               rootfs   raid 
-      20.0GB  21.0GB  1000MB               swap     raid +      60.0GB  80.0GB  20.0GB               swap     raid 
-      21.0GB  60.0GB  39.0GB               lvm      raid +      80.0GB  200GB   120GB                var      raid 
-      60.0GB  2000GB  1940GB               storage  raid+      200GB   2000GB  1800GB               home     raid
 </code> </code>
  
 Uscire con **''quit''**, non importa salvare che le modifiche vengono salvate volta volta. Uscire con **''quit''**, non importa salvare che le modifiche vengono salvate volta volta.
 +
 +Attenzione al messaggio di errore **Warning: The resulting partition is not properly aligned for best performance**, per la prima partizione dovrebbe bastare allineare l'inizio non a zero, ma ad esempio ad 1 Mb. Si può usare anche un numero negativo per esprimere l'offset dalla fine del disco:
 +
 +<code>
 +mkpart primary ext4 1 -1
 +</code>
 ===== Logical and physical sector size ===== ===== Logical and physical sector size =====
  
Line 188: Line 207:
 Il comando ''grub-install'' genera ex-novo vari file, tra cui **''boot.img''** e **''core.img''**, quest'ultimo soprattutto è importante perché contiene il riferimento al root device. Per ispezionare il contenuto di GRUB installato sui vari dischi è ottimo lo script **[[http://sourceforge.net/projects/bootinfoscript/|bootinfoscript]]**. Il comando ''grub-install'' genera ex-novo vari file, tra cui **''boot.img''** e **''core.img''**, quest'ultimo soprattutto è importante perché contiene il riferimento al root device. Per ispezionare il contenuto di GRUB installato sui vari dischi è ottimo lo script **[[http://sourceforge.net/projects/bootinfoscript/|bootinfoscript]]**.
  
 +Ricordarsi sempre di **''eseguire update-grub''** e **''update-initramfs -u -k all''**.
 ===== Installare GRUB2 su disco non di boot ===== ===== Installare GRUB2 su disco non di boot =====
  
-**ATTENZIONE!** ''grub-setup'' come viene usato in questo paragrafo non aggiorna il file **''core.img''** e quindi non aggiorna il root device. Usare lo script **''bootinfoscript''** per verificare.+**ATTENZIONE!** ''grub-setup'' come viene usato in questo paragrafo non aggiorna il file **''core.img''** e quindi non aggiorna il root device usato in fase di boot. Usare lo script **''bootinfoscript''** per verificare che l'installazione sia corretta.
  
 :!: Il manuale recita: //You should not normally run grub-setup directly. Use grub-install instead.// Quindi questa va considerata una operazione manuale a basso livello. :!: Il manuale recita: //You should not normally run grub-setup directly. Use grub-install instead.// Quindi questa va considerata una operazione manuale a basso livello.
Line 209: Line 229:
  
 ===== Installare GRUB2 sul secondo disco di un RAID1 ===== ===== Installare GRUB2 sul secondo disco di un RAID1 =====
 +
 +**Attenzione!** Dovrebbe bastare fornire un file ''device.map'' corretto ed eseguire **''grub-install /dev/sdb''**. Verificare sempre con **''bootinfoscript''** che GRUB sia installato correttamente sui due dischi e che il root device sia lo stesso che si identifica con ''/usr/share/mdadm/mkconf''.
  
 :!: Il manuale recita: //You should not normally run grub-setup directly. Use grub-install instead.// Quindi questa va considerata una operazione manuale a basso livello. :!: Il manuale recita: //You should not normally run grub-setup directly. Use grub-install instead.// Quindi questa va considerata una operazione manuale a basso livello.
Line 227: Line 249:
 </file> </file>
  
 +È possibile indicare il root device anche usando l'UUID raid, non si sa bene che vantaggio ci sia, ma viene accettato:
 +
 +<code>
 +grub-setup --root-device='(mduuid/88664fd86258ca80ceb66df7290a9ad9)' /dev/sda
 +</code>
 ===== Bug con GRUB2 sul secondo disco di un RAID1 ===== ===== Bug con GRUB2 sul secondo disco di un RAID1 =====
  
Line 247: 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 disco 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.
 +
 +===== 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.txt · Last modified: 2023/02/08 15:41 by niccolo