web-dev-qa-db-fra.com

Erreur de commande inconnue hwmatch

Je reçois le message "Commande inconnue" à chaque démarrage après avoir installé Ubuntu 16.04 en procédant comme suit: https://Gist.github.com/umpirsky/6ee1f870e759815333c8 afin de configurer RAID0.

Attention particulière à la partie apt-get install -y grub-efi-AMD64 _ https://Gist.github.com/umpirsky/6ee1f870e759815333c8#file-ubuntu-raid-sh-L4

Pour une raison quelconque, je ne pouvais pas utiliser apt-get, je l'ai donc installé manuellement en téléchargeant deb et en utilisant dpkg -i.

Il y a un rapport de bogue lié à cette erreur https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/733836 .

Le système démarre normalement, mais je voudrais corriger cette erreur. Est-il possible de mettre à jour config et de le réparer?

UPDATE: Après un mois d'utilisation du système, un jour, il n'a pas réussi à démarrer avec cette erreur, se terminant dans l'invite initramfs, je l'ai restauré à partir de clonezilla sauvegarde, mais je crains que cela puisse se reproduire. Le pire, c'est que je ne sais pas pourquoi c'est arrivé.

UPDATE:

C'est arrivé à nouveau, et encore, souvent après un arrêt forcé de la batterie ou une panne de batterie. J'ai démarré USB en direct et exécuté fsck:

Sudo fsck /dev/sda1
fsck from util-linux 2.20.1
fsck.fat 3.0.26 (2014-03-07)
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 2
There are differences between boot sector and its backup.
This is mostly harmless. Differences: (offset:original/backup)
  65:01/00
1) Copy original to backup
2) Copy backup to original
3) No action

Il semble que certaines données restent incohérentes lorsque la batterie de l'ordinateur portable est épuisée ou que le téléphone est arrêté.

Aussi:

Sudo fsck /dev/md0
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
ext2fs_open2: Bad magic number in super-block
fsck.ext2: Superblock invalid, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/md0

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
 or
    e2fsck -b 32768 <device>

Mais e2fsck ne résout pas le problème:

Sudo e2fsck -b 8193 /dev/md0
e2fsck 1.42.9 (4-Feb-2014)
e2fsck: Bad magic number in super-block while trying to open /dev/md0

The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem.  If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>
 or
    e2fsck -b 32768 <device>

Merci.

Note des commentaires: Je ne peux pas reproduire ceci depuis la restauration à partir d'une sauvegarde Clonezilla.

5
umpirsky

En traitant strictement le problème hwmatch, examinez /etc/grub.d/10_linux et vous verrez qu'il est répertorié quelque chose comme ceci près du bas (9ème ligne vers le bas sur cet affichage):

# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
  echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
else
  cat << EOF
if [ "\${recordfail}" != 1 ]; then
  if [ -e \${prefix}/gfxblacklist.txt ]; then
    if hwmatch \${prefix}/gfxblacklist.txt 3; then
      if [ \${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
EOF
fi

Pour une raison quelconque, votre installation grub est incomplète et manque le module hwmatch. Vous devriez le voir parmi beaucoup d'autres fichiers lorsque vous utilisez ll /boot/grub/i386-pc:

-rw-r--r-- 1 root root  47292 Dec  5 07:13 hwmatch.mod
-rw-r--r-- 1 root root   2928 Dec  5 07:13 iorw.mod
-rw-r--r-- 1 root root   8656 Dec  5 07:13 iso9660.mod
-rw-r--r-- 1 root root   6168 Dec  5 07:13 jfs.mod
-rw-r--r-- 1 root root   6280 Dec  5 07:13 jpeg.mod
-rw-r--r-- 1 root root   5112 Dec  5 07:13 keylayouts.mod
-rw-r--r-- 1 root root   2044 Dec  5 07:13 keystatus.mod
-rw-r--r-- 1 root root   6608 Dec  5 07:13 ldm.mod
-rw-r--r-- 1 root root  29816 Dec  5 07:13 legacycfg.mod
-rw-r--r-- 1 root root  14536 Dec  5 07:13 legacy_password_test.mod
-rw-r--r-- 1 root root   8048 Dec  5 07:13 linux16.mod
-rw-r--r-- 1 root root  13184 Dec  5 07:13 linux.mod
-rw-r--r-- 1 root root    100 Dec  5 07:13 load.cfg
-rw-r--r-- 1 root root   5924 Dec  5 07:13 loadenv.mod
-rw-r--r-- 1 root root   3056 Dec  5 07:13 loopback.mod
-rw-r--r-- 1 root root   4872 Dec  5 07:13 lsacpi.mod
-rw-r--r-- 1 root root   2352 Dec  5 07:13 lsapm.mod
-rw-r--r-- 1 root root   1884 Dec  5 07:13 lsmmap.mod
-rw-r--r-- 1 root root   4136 Dec  5 07:13 ls.mod
-rw-r--r-- 1 root root   4928 Dec  5 07:13 lspci.mod
-rw-r--r-- 1 root root   6724 Dec  5 07:13 luks.mod
-rw-r--r-- 1 root root   6776 Dec  5 07:13 lvm.mod

Selon ce rapport de bogue ( bugs.launchpad.net - La mise à niveau d'Ubuntu de Lucid à ​​Precise entraîne une configuration grub cassée ) le moyen le plus simple d'obtenir tous les modules grub consiste à le réinstaller.

Vous devez exécuter Sudo dpkg-reconfigure grub-pc et lui demander d'installer le chargeur de démarrage quelque part, probablement/dev/vda.

Ci-dessus est une citation directe du rapport de bogue. Comme le fait remarquer un commentaire ici et en regardant votre lien, cela devrait être utilisé à la place:

Sudo dpkg-reconfigure grub-efi-AMD64

Cependant, en regardant ce post ( superuser.com - Comment réinstaller grub2 efi ), vous devez d’abord démarrer avec un USB/DVD en direct et utiliser:

Sudo mount /dev/sda2 /mnt #sda2 is the root partition
Sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
for i in /dev /dev/pts /proc /sys; do Sudo mount -B $i /mnt$i; done
Sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
modprobe efivars # make sure this is loaded
Sudo chroot /mnt

La première étape consiste à confirmer que le fichier hwmatch est vraiment manquant. Si tel est le cas, la méthode la plus simple consiste simplement à le copier à partir de:

/usr/lib/grub/i386-pc/hwmatch.mod

dans le répertoire:

/boot/efi/efi/grub

Ce nom de répertoire vient de ( https://help.ubuntu.com/community/UEFIBooting ) où ils disent que c'est "principalement" le nom du répertoire. S'il vous plaît confirmer pour votre installation.

Les méthodes plus complexes de dpkg-reconfigure doivent être abordées avec une extrême prudence et uniquement après des sauvegardes appropriées.

2
WinEunuuchs2Unix

Avez-vous essayé d'utiliser une copie différente de votre superbloc (je pense que 8193 et ​​32768 sont des exemples):

mke2fs -n /dev/XYZ 
...
Superblock-Sicherungskopien gespeichert in den Blöcken:
          32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, ...

Choisissez une copie du superbloc, par exemple le troisième: Dans ce cas 163840 et faites:

e2fsck -p -b 163840 /dev/XYZ
1
musbach

Pour un démarrage Legacy, Il n'y a aucune raison pour que vous ne puissiez pas simplement copier le fichier de secours à l'emplacement approprié, comme dans Sudo cp /usr/lib/grub/i386-pc/hwmatch.mod /boot/grub/i386-pc/hwmatch.mod

Comme mes tests indiquent qu'ils sont identiques:

$ diff -s /usr/lib/grub/i386-pc/hwmatch.mod /boot/grub/i386-pc/hwmatch.mod 
Files /usr/lib/grub/i386-pc/hwmatch.mod and /boot/grub/i386-pc/hwmatch.mod are identical

Pour le mode EFI:

J'ai vérifié une nouvelle installation de 16.04 en mode EFI et hwmatch.mod n'existe pas, donc je suppose que cela peut être ignoré en toute sécurité. Si cela vous agace, je vous suggère de sauvegarder votre fichier grub.cfg actuel, de rechercher dans votre fichier grub.cfg la ligne insmod hwmatch à l'origine du problème et de le commenter pour voir si cela atténue le problème.

0
Elder Geek