grub выдает сообщение при загрузке - «ошибка - не удается найти команду hwmatch»

Этот вопрос Ошибка неизвестной команды hwmatch - это именно то, о чем я спрашиваю, но она была закрыта как невоспроизводимая. Мой очень воспроизводимый.

Ubuntu 18.04 недавно установлен на 64-битной машине UEFI. Параметры загрузки grub по умолчанию работают нормально, но я хотел добавить краткий обратный отсчет (мой обычный конфиг). После редактирования /etc/default/grub в обычном режиме и запуска sudo update-grub обратный отсчет работает, но я получаю сообщение об ошибке, отображаемое в заголовке вопроса.

Я попробовал решение (копирование файлов) в закрытом вопросе, но оно не подходило для моей конфигурации. Честно говоря, я нашел ответ запутанным.

Я также попытался отредактировать /etc/grub.d/10_linux, чтобы закомментировать структуру IF-THEN, которая использует hwmatch. После этого я сделал sudo update-grub, но все равно получил ошибку.

Как мне получить обратный отсчет и не увидеть эту ошибку?

Редактировать в комментариях -

Складной набор как установленный (показаны все некомментированные строки)

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

Отредактированный grub для отсчета времени (показаны все строки без комментариев)

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=countdown
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
1
задан 16 September 2019 в 01:00

2 ответа

Я прокомментировал если затем структура в /etc/grub.d/10_linux это использовало hwmatch, и это работало.

Обратите внимание, что это была Грубая сила, и Незнание фиксируют, потому что я не знал который из результатов в если затем структура выбирать. Тот, который я выбрал работавший для меня, это не может для Вас.

После выполнения sudo update-grub Я получил желаемый результат на начальной загрузке.

# 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
cat << EOF
export linux_gfx_mode
EOF

Примечание: сначала это не работало, потому что я скопировал /etc/grub.d/10_linux кому: /etc/grub.d/10_linux-backup прежде, чем отредактировать его. Но все исполняемые файлы в grub.d будьте забраны так, исходный был скопирован в также. Мне повезла загруженная система. Я устранил исполнимую установку из /etc/grub.d/10_linux-backup, повторно выполнился sudo update-grub, и это сделало это.

1
ответ дан 7 December 2019 в 14:58

Чтобы избавиться от сообщения об ошибке, добавьте эту строку в /etc/default/grub :

GRUB_GFXPAYLOAD_LINUX=keep

Источник: #4 комментарий к https://bugs.launchpad.net/ubuntu/+source/grub2-signed/+bug/1840560

Это позволит выполнить условие в коде оцениваются таким образом, что кодовый блок, ссылающийся на hwmatch, игнорируется.

Что касается того, насколько беспокоит отсутствие команды (или нет): согласно комментарию mook765, это часть только grub-pc, а не grub-efi, и предположительно упоминается как ошибка в случай установки grub-efi.

Добровольное замечание по поводу обратного отсчета/меню:

Использование

GRUB_TIMEOUT_STYLE=menu

вместо

GRUB_TIMEOUT_STYLE=countdown

сделает меню видимым (при этом функция обратного отсчета (внизу экрана) и автоматический выбор резервного варианта останутся нетронутыми).

Не забудьте запустить sudo update-grub после завершения редактирования.

3
ответ дан 18 December 2020 в 13:25

Другие вопросы по тегам:

Похожие вопросы: