diff --git a/config/data/coreboot/mkhelper.cfg b/config/data/coreboot/mkhelper.cfg
index de07b4c133437a8b31b93dfa0a8a6225bd96a5db..73cc957dd20ea9d1721aa11bc652849c38144a6e 100644
--- a/config/data/coreboot/mkhelper.cfg
+++ b/config/data/coreboot/mkhelper.cfg
@@ -7,7 +7,7 @@ seavgabiosrom="elf/seabios/default/libgfxinit/vgabios.bin"
 
 pv="payload_uboot payload_seabios payload_memtest payload_grub"
 v="initmode ubootelf grub_scan_disk uboot_config grubtree grubelf pname"
-v="$v displaymode tmprom"
+v="$v displaymode tmprom newrom"
 eval `setvars "n" $pv`
 eval `setvars "" $v`
 
diff --git a/include/rom.sh b/include/rom.sh
index d72ef243aadf0306698d23d2726213e6bc1bad40..72b7864c02b20163bbb51d89034770cb9ce24f85 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -104,10 +104,8 @@ mkcorebootbin()
 		    $dry add_seabios
 		[ "$payload_uboot" = "y" ] && pname="uboot" && $dry add_uboot
 	else
-		pname="custom" # coreboot's build system added payloads
-	fi
-	newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom"
-	$dry x_ mkdir -p "${newrom%/*}"; $dry x_ mv "$tmprom" "$newrom"
+		pname="custom" && cprom; :
+	fi; :
 }
 
 add_seabios()
@@ -126,7 +124,7 @@ add_seabios()
 	[ "$payload_memtest" = "y" ] && cbfs "$tmprom" \
 	    "elf/memtest86plus/memtest.bin" img/memtest
 
-	[ "$payload_grub" = "y" ] && pname="seagrub" && add_grub; return 0
+	cprom && [ "$payload_grub" = "y" ] && pname="seagrub" && add_grub; :
 }
 
 add_grub()
@@ -136,6 +134,11 @@ add_grub()
 	    > "$TMPDIR/tmpcfg" || $err "$target: !insert scandisk"
 	cbfs "$tmprom" "$TMPDIR/tmpcfg" scan.cfg raw
 	cbfs "$tmprom" "$grubdata/bootorder" bootorder raw
+	for keymap in config/data/grub/keymap/*.gkb; do
+		[ -f "$keymap" ] || continue
+		keymap="${keymap##*/}"
+		cprom "${keymap%.gkb}"
+	done
 }
 
 add_uboot()
@@ -145,7 +148,17 @@ add_uboot()
 	    ubootelf="$ubdir/u-boot"
 	[ -f "$ubootelf" ] || $err "cb/$target: Can't find u-boot"
 
-	cbfs "$tmprom" "$ubootelf" "fallback/payload"
+	cbfs "$tmprom" "$ubootelf" "fallback/payload"; cprom
+}
+
+cprom()
+{
+	newrom="bin/$target/${pname}_${target}_$initmode$displaymode.rom"
+	[ $# -gt 0 ] && newrom="${newrom%.rom}_$1.rom"
+
+	x_ mkdir -p "bin/$target"
+	x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && \
+	    cbfs "$newrom" "config/data/grub/keymap/$1.gkb" keymap.gkb raw; :
 }
 
 mkcoreboottar()