## page was renamed from iononsbalgiomai/grubenv #format wiki #language it <> <
> <> = 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.<
> '''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 }}} sostituendo «``» 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.<
> `hd0` si riferisce al primo disco fisso. Se la partizione si trova nel secondo disco scrivere `hd1`, per il terzo `hd2`, ecc.<
> `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.<
> 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