Call hwmatch only on the grub-pc platform
authorMauricio Faria de Oliveira <mfo@canonical.com>
Fri, 20 Aug 2021 13:15:06 +0000 (10:15 -0300)
committerFelix Zielcke <fzielcke@z-51.de>
Wed, 11 Jun 2025 15:42:34 +0000 (17:42 +0200)
Call hwmatch only on i386/pc as it is only available there.
This avoids "error: can't find command `hwmatch'." on e.g., x86_64/efi.

The equivalent behavior is linux_gfx_mode=keep because grub is special:
the `if hwmatch` clause is true on that error and `$match = 0` is true
too, as it is undefined (confirmed in grub shell.) A quick fix for now.

Before and After:

    grub> hwmatch
    error: can't find command `hwmatch'.

    grub> echo $grub_platform
    efi

    grub> echo $linux_gfx_mode
    keep

Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1840560
Bug-Debian: https://bugs.debian.org/990836
Forwarded: no
Last-Update: 2020-08-20

Gbp-Pq: Name hwmatch-only-on-grub-pc-platform.patch

util/grub.d/10_linux.in

index 0cea76b2562926632c424531584958a2a7547954..041521c12df54a348e3719503c217b090db87f46 100644 (file)
@@ -262,7 +262,9 @@ else
   cat << EOF
 if [ "\${recordfail}" != 1 ]; then
   if [ -e \${prefix}/gfxblacklist.txt ]; then
-    if hwmatch \${prefix}/gfxblacklist.txt 3; then
+    if [ \${grub_platform} != pc ]; then
+      set linux_gfx_mode=keep
+    elif hwmatch \${prefix}/gfxblacklist.txt 3; then
       if [ \${match} = 0 ]; then
         set linux_gfx_mode=keep
       else