Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/Grub/Errori/ErroreSparseFileNotAllowed"
Differenze tra le versioni 16 e 29 (in 13 versioni)
Versione 16 del 07/06/2021 18.00.17
Dimensione: 3742
Commento:
Versione 29 del 29/11/2021 12.38.02
Dimensione: 4523
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
<<Anchor(grubenv)>>
= Messaggio: «error: sparse file not allowed» =
## 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 =
Linea 4: Linea 9:
Questo errore può verificarsi su file system '''Btrfs''' o '''ZFS''' quando nel file `/etc/default/grub` sono state specificate le seguenti opzioni:{{{ 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:{{{
Linea 7: Linea 18:
Queste opzioni specificano che '''Grub''' deve memorizzare la voce scelta dall'utente nel menù 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 ''error: sparse file not allowed''. 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.
Linea 9: Linea 21:
Per risolvere questo errore è necessario spostare il file `grubenv` in una partizione che rispetti i seguenti requisiti:
 * Deve risiedere in un disco '''GPT''' o '''MBR''', non '''RAID''', '''LVM''' o altro.
= 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.
Linea 12: Linea 26:
Linea 17: Linea 32:
 0. Spostare il file `grubenv` nella partizione designata digitando nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando::{{{
sudo mv /boot/grub/grubenv <puntodimontaggio>}}}
 Sostituire `<puntodimontaggio>` con il punto di montaggio della partizione. Se si intende utilizzare la partizione EFI, il suo punto di montaggio predefinito è `/boot/efi/`.
 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/`.
Linea 21: Linea 37:
 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/grub.d/00_header`.  0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] lo script `/etc/grub.d/00_header`.
Linea 23: Linea 39:
 0. All'inizio del file, subito dopo le note di copyright e di licenza, inserire una riga di questo tipo:{{{
GRUBENV="(hd0,gpt1)/grubenv"}}}
  `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...
 {{{#!wiki note
L'indice usato da `Grub` per identificare le partizioni si basa sull'ordine in cui queste sono collocate sul disco, mentre l'indice usato dal sistema è in ordine cronologico, ovvero in basa a quale partizione è stata creata prima. Ciò significa che la partizione `sda1` potrebbe non corrispondere a `gpt1` o `msdos1`.
 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
Linea 30: Linea 46:

 0. Subito dopo la prima occorrenza dell'espressione `cat << EOF` inserire la seguente riga:{{{
grubenv="$GRUBENV"}}}
 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`).
Linea 35: Linea 52:
$prefix/grubenv}}}con{{{ \$prefix/grubenv}}}
 
con{{{
Linea 39: Linea 57:
load_env}}}con{{{ load_env}}}
 
con{{{
Linea 43: Linea 62:
save_env}}}con{{{ save_env}}}
 
con{{{
Linea 51: Linea 71:
 Notare l'assenza del carattere `\`.  {{{#!wiki note
 Si noti
l'assenza del carattere `\`.
}}}
Linea 53: Linea 75:
 0. Salvare il file e chiudere l'editor di testo.  0. Salvare le modifiche e chiudere l'editor di testo.
Linea 57: Linea 79:
 {{{#!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


Guida verificata con Ubuntu: 20.04

Problemi in questa pagina? Segnalali in questa discussione

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:

  1. Spostare il file grubenv nella partizione designata digitando nel terminale il seguente comando:

    sudo mv /boot/grub/grubenv <puntodimontaggio>

    sostituendo «<puntodimontaggio>» con il punto di montaggio della partizione. Se si intende utilizzare la partizione EFI, il suo punto di montaggio predefinito è /boot/efi/.

  2. Aprire con i privilegi di amministrazione e con un editor di testo lo script /etc/grub.d/00_header.

  3. 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).

  4. Sostituire l'espressione

    \$prefix/grubenv

    con

    "\${grubenv}"
  5. Sostituire l'espressione

    load_env

    con

    load_env --file "\${grubenv}"
  6. Sostituire tutte le occorrenze dell'espressione

    save_env

    con

    save_env --file "\${grubenv}"
  7. Individuare la function initrdfail, che è preceduta dalla riga cat <<"EOF" e termina al successivo EOF.

  8. All'interno di questa funzione sostituire tutte le occorrenze dell'espressione

    "\${grubenv}"

    con

    "${grubenv}"
    • Si noti l'assenza del carattere \.

  9. Salvare le modifiche e chiudere l'editor di testo.
  10. Aggiornare la configurazione di Grub digitando nel terminale il seguente comando:

    sudo update-grub
    • 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


CategoryAmministrazione