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
|
#!/bin/sh
# crude and rudimentary script to use xdebconfigurator
# to configure X and XF86Config
debconf_cache=/var/cache/debconf
dirs="$debconf_cache"
. /etc/lessdisks/server.config
# debconf get and set commands
d_get () {
echo "GET $1" | debconf-communicate | awk '{print $2}'
}
d_set () {
echo "SET $@" | debconf-communicate
}
if [ -z "$rw" ]; then
rw=/var/state/lessdisks
fi
cd $rw
# TODO only populate the new debconf database with values relevent to dexconf,
# which would save a lot of ram
tar cpf - $dirs | tar xpf -
for a in $dirs ; do
mount --bind $rw/$a $a
done
# TODO only use certain xdebconfigurator options...
xdebconfigurator > /tmp/somelogfile 2>&1
# TODO test for existance of debconf-communicate
keyboard_model="$(d_get xserver-xfree86/config/inputdevice/keyboard/model)"
if [ -z "$keyboard_model" ]; then
echo "WARNING: keyboard not detected, setting keyboard model to pc104"
d_set xserver-xfree86/config/inputdevice/keyboard/model pc104
fi
test -r $rw/etc/XF86Config && mv -f $rw/etc/XF86Config $rw/etc/XF86Config.old
test -r $rw/etc/XF86Config-4 && mv -f $rw/etc/XF86Config-4 $rw/etc/XF86Config-4.old
dexconf -o $rw/etc/XF86Config
cd $rw/etc
xserver_package=$(d_get shared/default-x-server)
case $xserver_package in
xserver-xfree86) x_link=XFree86 ;;
*) x=$(echo $xserver_package | cut -d "-" -f 2 | tr [A-Z] [a-z])
XF86_$x ;;
esac
test -e X && mv -f X X.old
if [ -x /usr/bin/X11/$x_link ]; then
ln -sf /usr/bin/X11/$x_link X
elif [ -x /usr/X11R6/bin/$x_link ]; then
ln -sf /usr/X11R6/bin/$x_link X
elif [ -x /usr/bin/$x_link ]; then
ln -sf /usr/bin/$x_link X
else
echo "WARNING: X server $x_link not installed"
echo "you may need to:"
echo "apt-get install $xserver_package"
# package can be installed later, so make a best guess...
ln -sf /usr/bin/X11/$x_link X
sleep 10
fi
# clear these out, since they take up so much ram...
for d in $dirs; do
rm -rf $rw/$d
done
umount $dirs
|