Ce message apparaît lorsque vous quittez le menu Grub et avant l'écran de démarrage Ubuntu.
Comment résoudre le problème pour effacer le message?
Et qu'est-ce que cela signifie?
error: Diskfilter writes are not supported
Le système démarre et semble fonctionner correctement.
Réponses:
C'est un bogue!
Il s'agit d'un bogue qui survient dans la version la plus récente d'Ubuntu Server LTS (Ubuntu Server 14.04 LTS) lorsque vous créez la partition de démarrage (ou la partition racine, lorsque la partition de démarrage n'existe pas) dans une partition LVM ou RAID. .
Vous pouvez obtenir plus d'informations sur ce bogue dans Ubuntu Launchpad: Bug n ° 1274320 "Erreur: les écritures de filtre de disque ne sont pas prises en charge" .
Mise à jour: Ce bogue est déjà corrigé dans Ubuntu Server 14.04 et certaines versions plus récentes d’Ubuntu. Probablement, il suffit de courir
apt-get upgrade
.Pourquoi ce bug se produit?
Lorsque le système démarre, GRUB lit les
load_env
données ( ) dans/boot/grub/grubenv
. Ce fichier s'appelle GRUB Environment Block .Du manuel GRUB:
Ce comportement peut être trouvé dans
/etc/grub.d/00_header
(update-grub
utilise ce fichier pour générer le/boot/grub/grub.cfg
fichier):Le problème est que l'
save_env
instruction ne fonctionne que dans des installations simples (vous ne pouvez pas exécuter à l'save_env
intérieur d'un disque RAID ou LVM). Du manuel GRUB:La fonction recordfail de GRUB utilise l'
save_env
instruction pour mettre à jour l'état recordfail (voir la section Aide Ubuntu - Grub 2 , section "Dernier échec du démarrage ou démarrage en mode de récupération"). Cependant, dans Ubuntu 14.04 (et dans les versions récentes de Debian), l’save_env
instruction (à l’intérieur de la fonctionnalité recordfail) est utilisée même si GRUB est installé dans un LVM ou un RAID.Voyons les lignes de 104 à 124 dans
/etc/grub.d/00_header
:GRUB ignore correctement la fonction recordfail lors de l’utilisation de systèmes de fichiers non pris en charge (btrfs, zfs, etc.), mais ne saute pas le LVM et le RAID à tout moment .
Comment GRUB se protège-t-il contre l'écriture dans RAID et LVM?
Pour lire / écrire correctement dans un système de fichiers, GRUB charge un module approprié.
GRUB utilise le module diskfilter (
insmod diskfilter
) dans les partitions RAID et le module lvm dans les partitions LVM.Voyons l'implémentation en lecture / écriture du module diskfilter :
Je colle le code ici (lignes 808 à 823). L'avertissement indiqué dans cette question apparaît à la ligne 821:
La
grub_diskfilter_read
fonction est implémentée (et GRUB peut lire les systèmes de fichiers RAID). Cependant, lagrub_diskfilter_write
fonction génère uneGRUB_ERR_NOT_IMPLEMENTED_YET
erreur.Pourquoi l'utilisation
quick_boot=0
résout-elle le problème? Et pourquoi est-ce la mauvaise solution?Si vous regardez une fois de plus dans le
/etc/grub.d/00_header
code, vous verrez que le recordfail présenté n'est utilisé que quandquick_boot=1
. Ainsi, passerquick_boot
de 1 à 0 désactive la fonctionnalité recordfail et désactive les écritures dans la partition RAID / LVM.Cependant, il désactivera de nombreuses autres fonctionnalités (exécutez
grep \$quick_boot /etc/grub.d/*
et vous verrez). Plus encore, si un jour vous changez votre/boot/grub
répertoire en dehors du RAID / LVM, la fonction recordfail sera toujours désactivée.En résumé, cette solution désactive inutilement les fonctionnalités, et ce n’est pas générique.
Quelle est la bonne solution?
La solution appropriée doit envisager de désactiver les
save_env
instructions lorsque GRUB se trouve dans des partitions LVM ou RAID.Un correctif a été proposé dans le système Debian Bug Tracker pour mettre en œuvre cette solution. Vous pouvez le trouver à l' adresse suivante : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754921.
L'idée derrière ce patch est:
grub-probe --target=abstraction "${grubdir}"
commande pour obtenir le type de modules d'abstraction que GRUB utilise pour lire / écrire des fichiers dans le/boot/grub
répertoire.diskfilter
oulvm
, ignorez l'save_env
instruction recordfail et écrivez un commentaire approprié dans le/boot/grub/grub.cfg
fichier;# GRUB lacks write support for /dev/md0, so recordfail support is disabled.
Comment appliquer la bonne solution?
Si vous ne voulez pas attendre que ce correctif soit appliqué par les gars d'Ubuntu / Debian dans le code officiel, vous pouvez utiliser mon correctif
00_header
:la source
00_header
fichier n'a fonctionné. Je ne vais pas désactiver lequick_boot
pour le faire partir.00_header
fichier modifié (comme recommandé ici) ne fonctionne pas. Je sais que ce n'est pas parce que cela fonctionne pour moi (et pour Rarylson Freitas) que cela fonctionnerait nécessairement pour tout le monde. Mais avez-vous veillé à donner les autorisations appropriées à l'ancien et au nouveau00_header
et à l'exécuterupdate-grub
? (Si vous venez d'éditer00_header
sur place, rienchmod
n'est requis, mais celaupdate-grub
reste nécessaire.)Je pense que cette erreur se produit à cause de RAID ou LVM partition.
Pour une solution temporaire à ce problème:
Modifier :
/etc/grub.d/10_linux
Remplacer
'quick_boot="1"' with 'quick_boot="0"'
Ensuite :
la source