Blob Blame History Raw
From 2e798d8f8029c16faa5550dd2334833b7dd26d22 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 5 Dec 2013 16:42:05 +0100
Subject: [PATCH] i18n: introduce i18n_install_all, to install everything

if i18n_install_all is set to "yes", then install all keyboard layouts
and fonts regardless of the hostonly setting.

This way, people can switch keyboard layouts, without having to recreate
the initramfs.
---
 dracut.conf.5.asc                 | 14 ++++++++++++--
 dracut.conf.d/fedora.conf.example |  1 +
 modules.d/10i18n/module-setup.sh  | 31 +++++++++++++++++--------------
 3 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
index c9c854a..30b7e03 100644
--- a/dracut.conf.5.asc
+++ b/dracut.conf.5.asc
@@ -122,10 +122,10 @@ If chrooted to another root other than the real root device, use --fstab and pro
 *kernel_only=*"__{yes|no}__"::
     Only install kernel drivers and firmware files. (default=no)
 
-*no_kernel=*"{yes|no}"::
+*no_kernel=*"__{yes|no}__"::
     Do not install kernel drivers and firmware files (default=no)
 
-*acpi_override=*"{yes|no}"::
+*acpi_override=*"__{yes|no}__"::
     [WARNING] ONLY USE THIS IF YOU KNOW WHAT YOU ARE DOING! +
     Override BIOS provided ACPI tables. For further documentation read
     Documentation/acpi/initrd_table_override.txt in the kernel sources.
@@ -158,6 +158,16 @@ If chrooted to another root other than the real root device, use --fstab and pro
 *show_modules=*"__{yes|no}__"::
     Print the name of the included modules to standard output during build.
 
+*i18n_vars="__<variable mapping>__"::
+    Distribution specific variable mapping.
+    See dracut/modules.d/10i18n/README for a detailed description.
+
+*i18n_default_font=*"__<fontname>__"::
+    The font <fontname> to install, if not specified otherwise. Default is "LatArCyrHeb-16".
+
+*i18n_install_all=*"__{yes|no}__"::
+    Install everything regardless of generic or hostonly mode.
+
 Files
 -----
 _/etc/dracut.conf_::
diff --git a/dracut.conf.d/fedora.conf.example b/dracut.conf.d/fedora.conf.example
index 1a56a86..495e8fb 100644
--- a/dracut.conf.d/fedora.conf.example
+++ b/dracut.conf.d/fedora.conf.example
@@ -3,6 +3,7 @@
 # i18n
 i18n_vars="/etc/sysconfig/keyboard:KEYTABLE-KEYMAP /etc/sysconfig/i18n:SYSFONT-FONT,FONTACM-FONT_MAP,FONT_UNIMAP"
 i18n_default_font="latarcyrheb-sun16"
+i18n_install_all="yes"
 stdloglvl=3
 sysloglvl=5
 install_items+=" vi /etc/virc ps grep cat rm "
diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh
index 2a83728..413ee12 100755
--- a/modules.d/10i18n/module-setup.sh
+++ b/modules.d/10i18n/module-setup.sh
@@ -18,15 +18,11 @@ depends() {
 
 install() {
     if dracut_module_included "systemd"; then
-        [[ -f /etc/vconsole.conf ]] || return 0
         unset FONT
         unset KEYMAP
-        . /etc/vconsole.conf
-        # if vconsole.conf has no settings, do not include anything
-        [[ $FONT ]] || [[ $KEYMAP ]] || return 0
+        [[ -f /etc/vconsole.conf ]] && . /etc/vconsole.conf
     fi
 
-    inst_multiple -o $systemdutildir/systemd-vconsole-setup
     KBDSUBDIRS=consolefonts,consoletrans,keymaps,unimaps
     DEFAULT_FONT="${i18n_default_font:-LatArCyrHeb-16}"
     I18N_CONF="/etc/locale.conf"
@@ -207,10 +203,20 @@ install() {
             inst_simple ${kbddir}/unimaps/${FONT_UNIMAP}.uni
         fi
 
-        mksubdirs ${initdir}${I18N_CONF}
-        mksubdirs ${initdir}${VCONFIG_CONF}
-        print_vars LC_ALL LANG >> ${initdir}${I18N_CONF}
-        print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF}
+        if dracut_module_included "systemd" && [[ -f ${I18N_CONF} ]]; then
+            inst_simple ${I18N_CONF}
+        else
+            mksubdirs ${initdir}${I18N_CONF}
+            print_vars LC_ALL LANG >> ${initdir}${I18N_CONF}
+        fi
+
+        if dracut_module_included "systemd" && [[ -f ${VCONFIG_CONF} ]]; then
+            inst_simple ${VCONFIG_CONF}
+        else
+            mksubdirs ${initdir}${VCONFIG_CONF}
+            print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF}
+        fi
+
         return 0
     }
 
@@ -234,16 +240,13 @@ install() {
         return 0
     }
 
-    if checks
-    then
+    if checks; then
         install_base
 
-        if [[ ${hostonly} ]]
-        then
+        if [[ ${hostonly} ]] && ! [[ ${i18n_install_all} ]]; then
             install_local_i18n || install_all_kbd
         else
             install_all_kbd
         fi
     fi
 }
-