summaryrefslogtreecommitdiffstats
path: root/modules.d/10i18n/console_init.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-03 13:54:25 +0000
commit9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a (patch)
tree2efb72864cc69e174c9c5ee33efb88a5f1553b48 /modules.d/10i18n/console_init.sh
parentInitial commit. (diff)
downloaddracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.tar.xz
dracut-9cb1c4df7b9ce1a9ad1312621b0f2b16a94fba3a.zip
Adding upstream version 060+5.upstream/060+5
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'modules.d/10i18n/console_init.sh')
-rwxr-xr-xmodules.d/10i18n/console_init.sh89
1 files changed, 89 insertions, 0 deletions
diff --git a/modules.d/10i18n/console_init.sh b/modules.d/10i18n/console_init.sh
new file mode 100755
index 0000000..3ca0ac1
--- /dev/null
+++ b/modules.d/10i18n/console_init.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+[ -n "$DRACUT_SYSTEMD" ] && exit 0
+
+if [ -x "$systemdutildir"/systemd-vconsole-setup ]; then
+ "$systemdutildir"/systemd-vconsole-setup "$@"
+fi
+
+[ -e /etc/vconsole.conf ] && . /etc/vconsole.conf
+
+DEFAULT_FONT=eurlatgr
+DEFAULT_KEYMAP=/etc/sysconfig/console/default.kmap
+
+set_keyboard() {
+ local param
+
+ [ "${UNICODE}" = 1 ] && param=-u || param=-a
+ kbd_mode ${param}
+}
+
+set_terminal() {
+ local dev="$1"
+
+ if [ "${UNICODE}" = 1 ]; then
+ printf '\033%%G' >&7
+ stty -F "${dev}" iutf8
+ else
+ printf '\033%%@' >&7
+ stty -F "${dev}" -iutf8
+ fi
+}
+
+set_keymap() {
+ local utf_switch
+
+ if [ -z "${KEYMAP}" ]; then
+ [ -f "${DEFAULT_KEYMAP}" ] && KEYMAP=${DEFAULT_KEYMAP}
+ fi
+
+ [ -n "${KEYMAP}" ] || return 1
+
+ [ "${UNICODE}" = 1 ] && utf_switch=-u
+
+ # shellcheck disable=SC2086
+ loadkeys -q ${utf_switch} ${KEYMAP} ${EXT_KEYMAPS}
+}
+
+set_font() {
+ setfont "${FONT-${DEFAULT_FONT}}" \
+ -C "${1}" \
+ ${FONT_MAP:+-m "${FONT_MAP}"} \
+ ${FONT_UNIMAP:+-u "${FONT_UNIMAP}"}
+}
+
+dev_close() {
+ exec 6>&-
+ exec 7>&-
+}
+
+dev_open() {
+ local dev="$1"
+
+ exec 6< "${dev}" \
+ && exec 7>> "${dev}"
+}
+
+dev=/dev/${1#/dev/}
+
+[ -c "${dev}" ] || {
+ echo "Usage: $0 device" >&2
+ exit 1
+}
+
+dev_open "${dev}"
+
+for fd in 6 7; do
+ if ! [ -t ${fd} ]; then
+ echo "ERROR: File descriptor not opened: ${fd}" >&2
+ dev_close
+ exit 1
+ fi
+done
+
+set_keyboard
+set_terminal "${dev}"
+set_font "${dev}"
+set_keymap
+
+dev_close