On Tue, Jan 25, 2011 at 12:11:53PM +0100, Marco Amadori wrote: > This bug seems to rely on two missing bits on two packages (patches included). > > the package "live-build" does not include console-setup-udeb in the cdrom > "pool/" directory and live-installer do not "Depends:" on console-setup-udeb. > > So the "/target" system have default "/etc/default/keyboard" file instead of > a > proper one.
Here's an alternative approach which I think is neater, because it follows along with Daniel's previous attempt to fix this bug. The attached patch series reconfigures keyboard-configuration as well as console-setup, and rearranges things a bit so that it actually reconfigures effectively based on the information kbd-chooser provides to /target in its post-base-installer hook. So far I've only done a single test of this with a British English keymap, but it worked fine for that case. I plan to also test some scenario where console-setup would normally use a different codeset to see if that works. Please review and comment. I can go ahead and push these patches to master if people like them. > Fixing those two above mentioned quirks is not enough it seems, because the > resulting target, although having a proper configuration file, still needs a > "setupcon" after reboot in order to have things working. I did not have this problem in my test. (I don't think it would be release-critical even if I did; this sort of problem is often a boot race and likely only affects the console, not X.) Cheers, -- Colin Watson [[email protected]]
>From 8fd2fdf36ca109c85ed9f5113a497e9cec91e910 Mon Sep 17 00:00:00 2001 From: Colin Watson <[email protected]> Date: Wed, 26 Jan 2011 01:31:21 +0000 Subject: [PATCH 1/3] Move console-setup hook from live-installer.d to post-base-installer.d, so that it can pick up the value of debian-installer/keymap set by kbd-chooser's post-base-installer hook. --- debian/changelog | 8 ++++++ debian/live-installer.install | 1 + live-installer.d/console-setup | 24 -------------------- .../25live-installer-console-setup | 24 ++++++++++++++++++++ 4 files changed, 33 insertions(+), 24 deletions(-) delete mode 100755 live-installer.d/console-setup create mode 100755 post-base-installer.d/25live-installer-console-setup diff --git a/debian/changelog b/debian/changelog index 01e8ea4..bc38ffd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +live-installer (30) UNRELEASED; urgency=low + + * Move console-setup hook from live-installer.d to post-base-installer.d, + so that it can pick up the value of debian-installer/keymap set by + kbd-chooser's post-base-installer hook. + + -- Colin Watson <[email protected]> Wed, 26 Jan 2011 01:30:15 +0000 + live-installer (29) unstable; urgency=low [ Otavio Salvador ] diff --git a/debian/live-installer.install b/debian/live-installer.install index d96b1cd..6f6a5ba 100644 --- a/debian/live-installer.install +++ b/debian/live-installer.install @@ -1,3 +1,4 @@ live-installer.d /usr/lib +post-base-installer.d /usr/lib finish-install.d /usr/lib support/* /lib/live-installer diff --git a/live-installer.d/console-setup b/live-installer.d/console-setup deleted file mode 100755 index 0ab0b5b..0000000 --- a/live-installer.d/console-setup +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -e - -# Unfortunately, we can't use in-target here as this doesn't allow to set the -# debconf frontend to noninteractive. - -. /lib/chroot-setup.sh - -if ! chroot_setup; then - logger -t live-installer -- "Unexpected error; command not executed: '$@'" - exit 1 -fi - -DEBIAN_FRONTEND=noninteractive -export DEBIAN_FRONTEND - -# Reconfigure console-setup -if [ -e /target/var/lib/dpkg/info/console-setup.postinst ]; then - log-output -t live-installer chroot /target \ - dpkg-reconfigure --no-reload console-setup - - chroot /target setupcon --save-only -fi - -chroot_cleanup diff --git a/post-base-installer.d/25live-installer-console-setup b/post-base-installer.d/25live-installer-console-setup new file mode 100755 index 0000000..0ab0b5b --- /dev/null +++ b/post-base-installer.d/25live-installer-console-setup @@ -0,0 +1,24 @@ +#!/bin/sh -e + +# Unfortunately, we can't use in-target here as this doesn't allow to set the +# debconf frontend to noninteractive. + +. /lib/chroot-setup.sh + +if ! chroot_setup; then + logger -t live-installer -- "Unexpected error; command not executed: '$@'" + exit 1 +fi + +DEBIAN_FRONTEND=noninteractive +export DEBIAN_FRONTEND + +# Reconfigure console-setup +if [ -e /target/var/lib/dpkg/info/console-setup.postinst ]; then + log-output -t live-installer chroot /target \ + dpkg-reconfigure --no-reload console-setup + + chroot /target setupcon --save-only +fi + +chroot_cleanup -- 1.7.2.3
>From 09ae1f6deddd0c3abb6b9b68e4c74b323e09e814 Mon Sep 17 00:00:00 2001 From: Colin Watson <[email protected]> Date: Wed, 26 Jan 2011 01:33:11 +0000 Subject: [PATCH 2/3] skip post-base-installer hook if live-installer/enable is false --- .../25live-installer-console-setup | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/post-base-installer.d/25live-installer-console-setup b/post-base-installer.d/25live-installer-console-setup index 0ab0b5b..6cb3055 100755 --- a/post-base-installer.d/25live-installer-console-setup +++ b/post-base-installer.d/25live-installer-console-setup @@ -3,6 +3,11 @@ # Unfortunately, we can't use in-target here as this doesn't allow to set the # debconf frontend to noninteractive. +if [ "$(debconf-get live-installer/enable)" != true ]; then + # live-installer wasn't run. Skip this. + exit 0 +fi + . /lib/chroot-setup.sh if ! chroot_setup; then -- 1.7.2.3
>From 572aca09f4c188ab7a056542c4d3e6b1028209c3 Mon Sep 17 00:00:00 2001 From: Colin Watson <[email protected]> Date: Wed, 26 Jan 2011 01:35:14 +0000 Subject: [PATCH 3/3] Try to reconfigure keyboard-configuration as well as console-setup. Remove existing configuration files in /target first so that this actually does effective reconfiguration (Closes: #603974). --- debian/changelog | 3 ++ .../25live-installer-console-setup | 26 +++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletions(-) diff --git a/debian/changelog b/debian/changelog index bc38ffd..4946f0d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,9 @@ live-installer (30) UNRELEASED; urgency=low * Move console-setup hook from live-installer.d to post-base-installer.d, so that it can pick up the value of debian-installer/keymap set by kbd-chooser's post-base-installer hook. + * Try to reconfigure keyboard-configuration as well as console-setup. + Remove existing configuration files in /target first so that this + actually does effective reconfiguration (Closes: #603974). -- Colin Watson <[email protected]> Wed, 26 Jan 2011 01:30:15 +0000 diff --git a/post-base-installer.d/25live-installer-console-setup b/post-base-installer.d/25live-installer-console-setup index 6cb3055..c1696ae 100755 --- a/post-base-installer.d/25live-installer-console-setup +++ b/post-base-installer.d/25live-installer-console-setup @@ -18,11 +18,35 @@ fi DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND -# Reconfigure console-setup +# Reconfigure keyboard-configuration and/or console-setup as appropriate. + +if [ -e /etc/default/keyboard ]; then + # console-setup-udeb will already have copied a reasonable + # /etc/default/keyboard into the chroot. /etc/default/console-setup + # may still need work. + rm -f /target/etc/default/console-setup +else + # kbd-chooser will have set debian-installer/keymap, but we need to + # clear out any existing configuration files in order for that to be + # noticed. + rm -f /target/etc/default/keyboard /target/etc/default/console-setup +fi + +do_setupcon= +if [ -e /target/var/lib/dpkg/info/keyboard-configuration.postinst ]; then + log-output -t live-installer chroot /target \ + dpkg-reconfigure --no-reload keyboard-configuration + + do_setupcon=1 +fi if [ -e /target/var/lib/dpkg/info/console-setup.postinst ]; then log-output -t live-installer chroot /target \ dpkg-reconfigure --no-reload console-setup + do_setupcon=1 +fi + +if [ "$do_setupcon" ] && chroot /target which setupcon >/dev/null 2>&1; then chroot /target setupcon --save-only fi -- 1.7.2.3

