Add non-interactive timezone, locale and keyboard configuration

This commit is contained in:
Serge Schneider 2017-11-09 17:25:18 +00:00
parent 5fd793fcbf
commit 35b44f1615

View File

@ -290,20 +290,47 @@ do_change_pass() {
} }
do_configure_keyboard() { do_configure_keyboard() {
dpkg-reconfigure keyboard-configuration && printf "Reloading keymap. This may take a short while\n"
printf "Reloading keymap. This may take a short while\n" && if [ "$INTERACTIVE" = True ]; then
invoke-rc.d keyboard-setup start || return $? dpkg-reconfigure keyboard-configuration
else
local KEYMAP="$1"
sed -i /etc/default/keyboard -e "s/^XKBLAYOUT.*/XKBLAYOUT=\"$KEYMAP\"/"
dpkg-reconfigure -f noninteractive keyboard-configuration
fi
invoke-rc.d keyboard-setup start
setsid sh -c 'exec setupcon -k --force <> /dev/tty1 >&0 2>&1' setsid sh -c 'exec setupcon -k --force <> /dev/tty1 >&0 2>&1'
udevadm trigger --subsystem-match=input --action=change udevadm trigger --subsystem-match=input --action=change
return 0 return 0
} }
do_change_locale() { do_change_locale() {
dpkg-reconfigure locales if [ "$INTERACTIVE" = True ]; then
dpkg-reconfigure locales
else
local LOCALE="$1"
if ! LOCALE_LINE="$(grep "^$LOCALE " /usr/share/i18n/SUPPORTED)"; then
return 1
fi
local ENCODING="$(echo $LOCALE_LINE | cut -f2 -d " ")"
echo "$LOCALE $ENCODING" > /etc/locale.gen
sed -i "s/^\s*LANG=\S*/LANG=$LOCALE/" /etc/default/locale
dpkg-reconfigure -f noninteractive locales
fi
} }
do_change_timezone() { do_change_timezone() {
dpkg-reconfigure tzdata if [ "$INTERACTIVE" = True ]; then
dpkg-reconfigure tzdata
else
local TIMEZONE="$1"
if [ ! -f "/usr/share/zoneinfo/$TIMEZONE" ]; then
return 1;
fi
rm /etc/localtime
echo "$TIMEZONE" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
fi
} }
get_wifi_country() { get_wifi_country() {
@ -1469,23 +1496,12 @@ do_apply_os_config() {
if [ -n "$DEBLANGUAGE" ]; then if [ -n "$DEBLANGUAGE" ]; then
printf "Setting language to %s based on os_config.json from NOOBS. May take a while\n" "$DEBLANGUAGE" printf "Setting language to %s based on os_config.json from NOOBS. May take a while\n" "$DEBLANGUAGE"
cat << EOF | debconf-set-selections do_change_locale "$DEBLANGUAGE"
locales locales/locales_to_be_generated multiselect $DEBLANGUAGE UTF-8
EOF
rm /etc/locale.gen
dpkg-reconfigure -f noninteractive locales
update-locale LANG="$DEBLANGUAGE"
cat << EOF | debconf-set-selections
locales locales/default_environment_locale select $DEBLANGUAGE
EOF
fi fi
if [ -n "$NOOBSKEYBOARD" -a "$NOOBSKEYBOARD" != "gb" ]; then if [ -n "$NOOBSKEYBOARD" -a "$NOOBSKEYBOARD" != "gb" ]; then
printf "Setting keyboard layout to %s based on os_config.json from NOOBS. May take a while\n" "$NOOBSKEYBOARD" printf "Setting keyboard layout to %s based on os_config.json from NOOBS. May take a while\n" "$NOOBSKEYBOARD"
sed -i /etc/default/keyboard -e "s/^XKBLAYOUT.*/XKBLAYOUT=\"$NOOBSKEYBOARD\"/" do_configure_keyboard "$NOOBSKEYBOARD"
dpkg-reconfigure -f noninteractive keyboard-configuration
setupcon -k --force
udevadm trigger -p ID_INPUT_KEY=1
fi fi
return 0 return 0
} }