Erro desconhecido comando hwmatch [closed]

5

Estou recebendo a mensagem "unknown command hwmatch" em cada inicialização após instalar o Ubuntu 16.04 seguindo estas etapas: link para configurar o RAID0.

Atenção especial a apt-get install -y grub-efi-amd64 part link

Por alguma razão eu não pude usar o apt-get, então eu instalei manualmente baixando deb e usando o dpkg -i.

Existe um relatório de erros relacionado com este erro link .

O sistema inicializa normalmente, mas eu gostaria de corrigir esse erro. Existe alguma maneira de atualizar a configuração e corrigi-lo?

ATUALIZAÇÃO: Após um mês usando o sistema, um dia ele não conseguiu inicializar com este erro, terminando no prompt initramfs, eu o restaurei do backup do clonezilla, mas estou com medo pode acontecer novamente. O pior é que não sei porque aconteceu.

ATUALIZAÇÃO:

Aconteceu de novo, e novamente, muitas vezes após o desligamento forçado ou a falta de bateria. Eu inicializei o USB ao vivo e executei 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

Parece que alguns dados ficam inconsistentes quando o laptop fica sem bateria ou força o desligamento.

Além disso:

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>

Mas o e2fsck não corrige:

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>

Obrigado.

Nota dos comentários: não consigo reproduzir isso desde a restauração de um backup do Clonezilla.

    
por umpirsky 02.05.2016 / 14:44

3 respostas

2

Lidando estritamente com o problema do hwmatch , procure em /etc/grub.d/10_linux e você encontrará algo assim próximo ao final (9ª linha abaixo neste display):

# 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

Por alguma razão, sua instalação do grub está incompleta e faltando hwmatch module. Você deve vê-lo entre muitos outros arquivos quando usa 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

De acordo com este relatório de erros ( bugs.launchpad.net - Upgrade do Ubuntu do Lucid para Resultados precisos na configuração do grub quebrada ) a maneira mais fácil de obter todos os módulos do grub é reinstalá-lo.

  

Você deve executar sudo dpkg-reconfigure grub-pc e instruí-lo para   instale o carregador de boot em algum lugar, provavelmente / dev / vda.

Acima está uma citação direta do relatório de erros. Como um comentário aqui aponta e olha seu link, isso deve ser usado:

sudo dpkg-reconfigure grub-efi-amd64

No entanto, olhando para este post ( superuser.com - Como reinstalar o grub2 efi ) você deve primeiro inicializar com um USB / DVD ao vivo e usar:

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

O primeiro passo é confirmar que o arquivo hwmatch está realmente ausente. Em caso afirmativo, o método mais fácil é simplesmente copiá-lo de:

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

no diretório:

/boot/efi/efi/grub

Este nome de diretório vem de ( link ) onde eles dizem que é "principalmente" o nome do diretório. Por favor confirme para a sua instalação.

Os métodos mais complicados de dpkg-reconfigure devem ser abordados com extrema cautela e somente após backups apropriados.

    
por WinEunuuchs2Unix 09.01.2017 / 03:25
1

Você tentou usar uma cópia diferente do seu superbloco (acho que 8193 e 32768 são examaples):

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

Escolha uma cópia do superbloco, por exemplo o terceiro: Neste caso 163840 e faça:

e2fsck -p -b 163840 /dev/XYZ
    
por musbach 08.01.2017 / 15:37
0

Para uma inicialização herdada , não há motivo para que você não possa simplesmente copiar o arquivo sobressalente para o local apropriado, como em sudo cp /usr/lib/grub/i386-pc/hwmatch.mod /boot/grub/i386-pc/hwmatch.mod

Como meus testes indicam que são idênticos:

$ 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

Para o modo EFI:

Eu verifiquei uma nova instalação do 16.04 no modo EFI e o hwmatch.mod não existe, então eu diria que ele pode ser ignorado com segurança. Se isso o incomodar, sugiro que você faça o backup de seu grub.cfg atual, pesquisando seu grub.cfg para a linha insmod hwmatch que está causando o problema e comentando para ver se isso alivia o problema.

    
por Elder Geek 12.01.2017 / 20:48

Tags