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