/usr/sbin/ocs-lang-kbd-conf is in clonezilla 3.10.11-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | #!/bin/bash
# Author: Steven Shiau <steven _at_ nchc org tw>
# License: GPL
# Load DRBL setting and functions
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"
. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions
# Load keymap if it exists
[ -e /etc/ocs/ocs-live.conf ] && . /etc/ocs/ocs-live.conf
# Stop plymouth if running
#if [ -n "$(LC_ALL=C ps -efw | grep plymouth | grep -v grep)" ]; then
# plymouth quit
#fi
#
fb_term=""
get_fb_term
[ "$fb_term" = "bterm" -a ! -e "$uni_font" ] && exit 1
export LANG="en_US.UTF-8"
gen_locale_if_not_found en_US en_US.UTF-8
#
export CURRENT_TTY="$(tty)" # e.g. /dev/tty1, /dev/ttyS0...
# By default we will run "ocs-lang-kbd-conf" (same vc as $"$ocs_live_run_tty") in /dev/tty1 if ocs_live_run_tty is not specified. When "live-getty console=ttyS0,38400n81" is assigned, $ocs_live_run_tty is /dev/ttyS0. However, "ocs-lang-kbd-conf" might be run in runlevel 2 (e.g., called by /etc/rc2.d/S23start-ocs-live, in this case it's /dev/console) or after entering shell (when plymouth is started during booting, in this case it's the assigned console "$ocs_live_run_tty" or if it's not assigned, it's /dev/tty1).
if [ -n "$ocs_live_run_tty" ]; then
# tty is specified, e.g. /dev/ttyS0. Check if it is the current tty
if [ "$CURRENT_TTY" != "/dev/console" -a \
"$CURRENT_TTY" != "$ocs_live_run_tty" ]; then
echo "Not in /dev/console or \"$ocs_live_run_tty\", exiting $0..."
exit 3
fi
else
# No tty is specified to run "ocs-lang-kbd-conf". Default to run only on /dev/console (runlevel 2) or /dev/tty1 (after entering shell when plymouth is started).
# If it's not in /dev/tty1 or /dev/console (during rc), just exit.
if [ "$CURRENT_TTY" != "/dev/console" -a \
"$CURRENT_TTY" != "/dev/tty1" ]; then
echo "Not in /dev/console or /dev/tty1, exiting $0..."
exit 3
fi
fi
# ocs_live_keymap and live_keyboard_layouts are loaded from ocs-live.conf
if [ -z "$ocs_live_keymap" -a -z "$live_keyboard_layouts" ]; then
echo "Configuring keyboard..."
# keymap not set in ocs-live.conf, use interactive dialog to set it.
# Bterm/jfbterm can only be used (it's better since Asian fonts can be shown) when:
# (1) If bterm and uni fonts or jfbterm are available
# (2) If it's not in serial console
# (3) frambebuffer device exists
if [ -n "$fb_term" -a -z "$(grep -E "console=.*ttyS.*" /proc/cmdline)" ] && \
([ -e /dev/fb/0 ] || [ -e /dev/fb0 ]); then
case "$fb_term" in
"bterm")
export TERM=bterm
set +e
# bterm need full path command even it's in the PATH already.
bterm -l $LANG -f $uni_font `which ocs-langkbdconf-bterm`
set -e
;;
"jfbterm")
export TERM=jfbterm
set +e
jfbterm -q -e ocs-langkbdconf-bterm
set -e
;;
esac
else
# ocs-langkbdconf-bterm does keyboard config and language config. Here we have do the same 2 jobs. Otherwise locales will be empty and a lot of warnings will be shown when ruuning commands.
# (1) language
[ -z "$ocs_lang" ] && ocs_lang=en_US.UTF-8
# put the language setting so that later program can reuse
if [ -z "$(grep -E "^[[:space:]]*ocs_lang=" /etc/ocs/ocs-live.conf 2>/dev/null)" ]; then
# append it
echo "ocs_lang=$ocs_lang" >> /etc/ocs/ocs-live.conf
else
# modify it
perl -pi -e "s|^[[:space:]]*ocs_lang=.*|ocs_lang=\"$ocs_lang\"|g" /etc/ocs/ocs-live.conf
fi
# (2) keyboard
drbl-kbdchooser
fi
elif [ -n "$ocs_live_keymap" ]; then
# http://live.debian.net/manual/stable/html/live-manual.en.html#512
# //NOTE// ocs_live_keymap is deprecated! We won't use in the future. It's replaced by
# "$live-config.keyboard-model" and "$keyboard-model".
# "$live-config.keyboard-model" and "$keyboard-model" are processed by live-config during booting. Not here.
if [ -e "$ocs_live_keymap" \
-o "$ocs_live_keymap" = "NONE" \
-o "$ocs_live_keymap" = "KERNEL" ]; then
install-keymap $ocs_live_keymap
else
echo "File $ocs_live_keymap NOT found!"
echo "Press Enter to exit..."
read
exit 1
fi
fi
# Here we disable setting the system locale, since most of the cases, e.g. for Chinese, the terminal won't show the characters, unless it's in bterm/jfbterm.
# Varialble ocs_lang will be created in ocs-langkbdconf-bterm, and write to /etc/ocs/ocs-live.conf.
# Load ocs_lang if it exists
#[ -e /etc/ocs/ocs-live.conf ] && . /etc/ocs/ocs-live.conf
#if [ -n "${ocs_lang}" ]; then
# echo "Setting locale in /etc/default/locale... "
# cat <<-LOCALE_END > /etc/default/locale
#LC_ALL="${ocs_lang}"
#LANG="${ocs_lang}"
#LOCALE_END
#fi
|