diff -ur grub-1.97.2/util/grub.d/00_header.in grub-1.97.2-multiterm/util/grub.d/00_header.in
--- grub-1.97.2/util/grub.d/00_header.in	2010-01-24 12:13:30.000000000 -0600
+++ grub-1.97.2-multiterm/util/grub.d/00_header.in	2010-02-22 03:38:42.000000000 -0600
@@ -39,19 +39,21 @@
 set default=${GRUB_DEFAULT}
 EOF
 
-case ${GRUB_TERMINAL_INPUT}:${GRUB_TERMINAL_OUTPUT} in
-  serial:* | *:serial)
-    if ! test -e ${grub_prefix}/serial.mod ; then
-      echo "Serial terminal not available on this platform." >&2 ; exit 1
-    fi
+for GRUB_TERMINAL in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT} ; do
+  case ${GRUB_TERMINAL} in
+    serial)
+      if ! test -e ${grub_prefix}/serial.mod ; then
+        echo "Serial terminal not available on this platform." >&2 ; exit 1
+      fi
 
-    if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
-      grub_warn "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used."
-      GRUB_SERIAL_COMMAND=serial
-    fi
-    echo "${GRUB_SERIAL_COMMAND}"
-  ;;
-esac
+      if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
+        grub_warn "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used."
+        GRUB_SERIAL_COMMAND=serial
+      fi
+      echo "${GRUB_SERIAL_COMMAND}"
+    ;;
+  esac
+done
 
 case x${GRUB_TERMINAL_INPUT} in
   x)
@@ -69,7 +71,7 @@
 esac
 
 case x${GRUB_TERMINAL_OUTPUT} in
- xgfxterm)
+ x*gfxterm*)
     # Make the font accessible
     prepare_grub_to_access_device `${grub_probe} --target=device ${GRUB_FONT_PATH}`
 
@@ -78,11 +80,22 @@
   set gfxmode=${GRUB_GFXMODE}
   insmod gfxterm
   insmod ${GRUB_VIDEO_BACKEND}
-  if terminal_output gfxterm ; then true ; else
+  if terminal_output ${GRUB_TERMINAL_OUTPUT} ; then true ; else
     # For backward compatibility with versions of terminal.mod that don't
     # understand terminal_output
-    terminal gfxterm
+    terminal ${GRUB_TERMINAL_OUTPUT}
   fi
+EOF
+    FALLBACK_GRUB_TERMINAL_OUTPUT=`echo "${GRUB_TERMINAL_OUTPUT}" | sed 's,\(gfxterm\ *\|\ *gfxterm\),,g'`
+    if [ "x${FALLBACK_GRUB_TERMINAL_OUTPUT}" != "x" ] ; then
+      cat << EOF
+else
+  if terminal_output console ${FALLBACK_GRUB_TERMINAL_OUTPUT} ; then true ; else
+    terminal console ${FALLBACK_GRUB_TERMINAL_OUTPUT}
+  fi
+EOF
+    fi
+    cat << EOF
 fi
 EOF
   ;;
diff -ur grub-1.97.2/util/grub-mkconfig.in grub-1.97.2-multiterm/util/grub-mkconfig.in
--- grub-1.97.2/util/grub-mkconfig.in	2010-01-24 12:13:30.000000000 -0600
+++ grub-1.97.2-multiterm/util/grub-mkconfig.in	2010-02-22 03:48:10.000000000 -0600
@@ -140,8 +140,18 @@
   GRUB_TERMINAL_OUTPUT="${GRUB_TERMINAL}"
 fi
 
-case x${GRUB_TERMINAL_OUTPUT} in
-  x | xgfxterm)
+# XXX: replace 'gfxterm' with 'console', gfxterm does not work as an input type
+GRUB_TERMINAL_INPUT=`echo ${GRUB_TERMINAL_INPUT} | sed s,gfxterm,console,`
+
+# XXX: necessary for 'for' loop below
+if [ "x${GRUB_TERMINAL_OUTPUT}" = "x" ] ; then
+  GRUB_TERMINAL_OUTPUT="x"
+fi
+
+BUILD_GRUB_TERMINAL_OUTPUT=""
+for GRUB_TERMINAL in ${GRUB_TERMINAL_OUTPUT} ; do
+case ${GRUB_TERMINAL} in
+  x | gfxterm)
     # If this platform supports gfxterm, try to use it.
     if test -e ${grub_prefix}/gfxterm.mod ; then
       GRUB_VIDEO_BACKEND=
@@ -152,18 +162,18 @@
         fi
       done
       if [ -n "${GRUB_VIDEO_BACKEND}" ] ; then
-        GRUB_TERMINAL_OUTPUT=gfxterm
-      elif [ "${GRUB_TERMINAL_OUTPUT}" = "gfxterm" ] ; then
+        GRUB_TERMINAL=gfxterm
+      elif [ "${GRUB_TERMINAL}" = "gfxterm" ] ; then
         echo "No suitable backend could be found for gfxterm." >&2 ; exit 1
       fi
     fi
   ;;
-  xconsole | xserial | xofconsole) ;;
-  *) echo "Invalid output terminal \"${GRUB_TERMINAL_OUTPUT}\"" >&2 ; exit 1 ;;
+  console | serial | ofconsole) ;;
+  *) echo "Invalid output terminal \"${GRUB_TERMINAL}\"" >&2 ; exit 1 ;;
 esac
 
 # check for terminals that require fonts
-case ${GRUB_TERMINAL_OUTPUT} in
+case ${GRUB_TERMINAL} in
   gfxterm)
     if [ -n "$GRUB_FONT" ] ; then
       if is_path_readable_by_grub ${GRUB_FONT} > /dev/null ; then
@@ -191,13 +201,18 @@
     fi
     if [ -z "${GRUB_FONT_PATH}" ] ; then
       # fallback to the native terminal for this platform
-      unset GRUB_TERMINAL_OUTPUT
+      unset GRUB_TERMINAL
     fi
   ;;
   *)
     # make sure all our children behave in conformance with ascii..
     export LANG=C
 esac
+if [ "x${GRUB_TERMINAL}" != "xx" ] ; then
+  BUILD_GRUB_TERMINAL_OUTPUT="${GRUB_TERMINAL} ${BUILD_GRUB_TERMINAL_OUTPUT}"
+fi
+done
+GRUB_TERMINAL_OUTPUT="${BUILD_GRUB_TERMINAL_OUTPUT}"
 
 # These are defined in this script, export them here so that user can
 # override them.
