## page was renamed from iononsbalgiomai/grubenv
#format wiki
#language it
<<Indice>>
<<BR>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=261868"; rilasci="20.04")>>
= Introduzione =

Questa guida spiega come risolvere il problema di '''Grub''' relativo al seguente messaggio di errore:{{{
«error: sparse file not allowed»
}}}

= Descrizione =

Questo errore può verificarsi su file system '''Btrfs''' o '''ZFS''', quando nel file `/etc/default/grub` sono state specificate le seguenti opzioni:{{{
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true}}}
Queste opzioni specificano che '''Grub''' deve memorizzare la voce scelta dall'utente nel menu di avvio per poi riproporla al successivo avvio come valore di default.<<BR>>
'''Grub''' scrive questo dato nel file `grubenv`, un file speciale della dimensione fissa di 1024 byte la cui posizione predefinita è nel percorso `/boot/grub/`. Tuttavia se il file `grubenv` si trova in una partizione con file system '''Btrfs''' o '''ZFS''', '''Grub''' non può modificarlo e visualizza il messaggio di errore sopra indicato.

= Soluzione =

Per risolvere questo errore è necessario spostare il file `grubenv` in una partizione che soddisfi i seguenti requisiti:
 * Deve risiedere in un disco interno '''GPT''' o '''MBR''', non '''RAID''', '''LVM''' o altro.
 * Deve avere un file system come '''ext4''', '''FAT32''', '''NTFS''' o un altro file system che non implementi il checksum a livello di blocco.

A tal scopo nei sistemi UEFI può essere sfrutta la partizione EFI, che utilizza il file system FAT32.
Se nel sistema non è presente una partizione che soddisfi questi requisiti, sarà necessario crearne una e montarla.

Procedere come segue:

 0. Spostare il file `grubenv` nella partizione designata digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo mv /boot/grub/grubenv <puntodimontaggio>
}}}
 sostituendo «`<puntodimontaggio>`» con il [[https://it.wikipedia.org/wiki/Mount|punto di montaggio]] della partizione. Se si intende utilizzare la partizione EFI, il suo punto di montaggio predefinito è `/boot/efi/`.

 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] lo script `/etc/grub.d/00_header`.

 0. All'inizio del file, subito dopo le note di copyright e di licenza, inserire le seguenti righe:{{{
GRUBENV="(hd0,gpt1)/grubenv"
cat << EOF
grubenv="$GRUBENV"
export grubenv
EOF
}}}
 sostituendo `hd0` e `gpt1` in base al disco e alla partizione in cui è stato spostato il file `grubenv`, se differenti.<<BR>>
 `hd0` si riferisce al primo disco fisso. Se la partizione si trova nel secondo disco scrivere `hd1`, per il terzo `hd2`, ecc.<<BR>>
 `gpt1` si riferisce alla prima partizione del disco, se questo è partizionato in GPT. Se invece è partizionato in MBR, usare la forma `msdos1`. Per riferirsi alla seconda partizione scrivere `gpt2` o `msdos2`, per la terza `gpt3` o `msdos3`, ecc.<<BR>>
 Il numero della partizione corrisponde a quello usato dal sistema (cioè `sda1` corrisponde a `gpt1` o `msdos1`).

 0. Sostituire l'espressione{{{
\$prefix/grubenv}}}
 con{{{
"\${grubenv}"}}}

 0. Sostituire l'espressione{{{
load_env}}}
 con{{{
load_env --file "\${grubenv}"}}}

 0. Sostituire tutte le occorrenze dell'espressione{{{
save_env}}}
 con{{{
save_env --file "\${grubenv}"}}}

 0. Individuare la `function initrdfail`, che è preceduta dalla riga `cat <<"EOF"` e termina al successivo `EOF`.

 0. All'interno di questa funzione sostituire tutte le occorrenze dell'espressione{{{
"\${grubenv}"}}}con{{{
"${grubenv}"}}}
 {{{#!wiki note
 Si noti l'assenza del carattere `\`.
}}}

 0. Salvare le modifiche e chiudere l'editor di testo.

 0. Aggiornare la configurazione di '''Grub''' digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo update-grub}}}
 {{{#!wiki note
 Il comando `update-grub` ricreerà un file `grubenv` nel percorso `/boot/grub/`. Tuttavia '''Grub''' utilizzerà il file che si trova nella partizione specificata nello script `00_header`.
}}}

= Ulteriori risorse =

 * [[https://www.gnu.org/software/grub/manual/grub/grub.html#Troubleshooting|Errori comuni di Grub (GNU GRUB Manual 2.06)]]
 * [[https://www.gnu.org/software/grub/manual/grub/html_node/Environment-block.html|L'environment block di Grub (GNU GRUB Manual 2.06)]]

----
CategoryAmministrazione