diff --git a/package/systemd/Config.in b/package/systemd/Config.in
index bea717a456..89ce62d1d2 100644
--- a/package/systemd/Config.in
+++ b/package/systemd/Config.in
@@ -563,10 +563,19 @@ config BR2_PACKAGE_SYSTEMD_UTMP
 config BR2_PACKAGE_SYSTEMD_VCONSOLE
 	bool "enable vconsole tool"
 	default y
+	select BR2_PACKAGE_KBD if BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP != ""
 	help
 	  systemd-vconsole-setup is an early boot service that
 	  configures the virtual console font and console keymap.
 
 	  https://www.freedesktop.org/software/systemd/man/systemd-vconsole-setup.service.html
 
+config BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP
+	string "default keymap"
+	default "us"
+	depends on BR2_PACKAGE_SYSTEMD_VCONSOLE
+	help
+	  Default keymap for the system. Leave empty to not set a
+	  default keymap.
+
 endif
diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
index 0aa1da3fb8..3ce0634594 100644
--- a/package/systemd/systemd.mk
+++ b/package/systemd/systemd.mk
@@ -348,7 +348,9 @@ SYSTEMD_CONF_OPTS += -Dutmp=false
 endif
 
 ifeq ($(BR2_PACKAGE_SYSTEMD_VCONSOLE),y)
-SYSTEMD_CONF_OPTS += -Dvconsole=true
+SYSTEMD_CONF_OPTS += \
+	-Dvconsole=true \
+	-Ddefault-keymap=$(call qstrip,$(BR2_PACKAGE_SYSTEMD_VCONSOLE_DEFAULT_KEYMAP))
 else
 SYSTEMD_CONF_OPTS += -Dvconsole=false
 endif