[Ltsp-server] Патчи для ltsp
Michael A. Kangin
mak на rsmu.ru
Пт Ноя 9 03:55:13 MSK 2007
Добрый день.
Я тут лениво пинаю ltsp для связки с windows-сервером, и возникающие проблемы
пытаюсь тупо решить самопальными патчиками. Наверняка я делаю что-то не
то. :)
Давайте я начну закидывать сюда эти патчи, а вы мне расскажите, где я
совершенно зря их делал и где можно было обойтись меньшей кровью :)
1. Проблема: не берётся рутовский пароль из /etc/ltsp/ltsp-build-client.conf
(хотя вроде такая функциональность заявлена, переменная ROOTPASS).
Модифицированный файл 095-rootpass справляется с этой несправедливостью.
2. Проблема: каждый раз приходится подсовывать ручками lts.conf в
свежепостроенное дерево . Патч 010-etc-common копирует все файлы из
специальной директории /ets/ltsp/etc в $ROOT/etc, так что можно там держать
все нужные конфигурационные файлы. Может, resolv.conf какой нетривиальный.
3. Почему-то терминалочка не может получить своё имя хоста от DHCPD.
011-get-hostname-from-dhcp слегка пропатчит rc.sysinit на этот предмет.
4. Бутсплеш. А то без него уныло. Добавьте в EARLY_PACKAGES любимый
design-bootsplash-, и создайте в /etc/ltsp/ltsp-build-client.conf переменную
BOOTSPLASH_RESOLUTION с нужным разрешением. Обратите внимание, разные темы
могут вести себя по разному на разных разрешениях (сорри за тавтологию).
Например, на 1024x768 design-bootsplash-desktop не отрисовывает прогресс-бар,
а design-bootsplash-ThinkLinux - вполне успешно.
ВНИМАНИЕ!!!
столкнулся с тем, что при включении бутсплеша в скриптах из
$ROOT/usr/lib/ltsp/screen.d команда tty может в некотором проценте случаев
выдавать результат "not a tty". Не знаю, может таймаут какой куда добавить...
Я пока исправил для себя (и вас!) скрипт rdp, но это может всплыть и на
других screen'ах.
Добавляет функциональность бутсплеша файл 035-bootsplash.
Все эти патчики нужно записать
в /usr/share/ltsp/plugins/ltsp-build-client/ALTLinux.
--
wbr, Michael A. Kangin
-------------- next part --------------
# copy all files in config dir /etc/ltsp/etc into $ROOT/etc/
case "$MODE" in
after-install)
[ -d /etc/ltsp/etc ] && cp -a /etc/ltsp/etc/* $ROOT/etc/
;;
esac
-------------- next part --------------
# allow detect hostname from DHCP server
case "$MODE" in
after-install)
sed -i -e '/^action.*hostname/i\
HOSTNAME=`hostname`' $ROOT/etc/rc.d/rc.sysinit
;;
esac
-------------- next part --------------
# Bootsplash functionality. Add any design-bootsplash-* package into EARLY_PACKAGES and set env var OOTSPLASH_RESOLUTION
case "$MODE" in
install)
echo "$BOOTSPLASH_RESOLUTION" | grep -q -E '[[:digit:]]{3,4}x[[:digit:]]{3,4}' && {
case "$BOOTSPLASH_RESOLUTION" in
1280x1024)
VESA_MODE=0x31A
;;
1024x768)
VESA_MODE=0x317
;;
800x600)
VESA_MODE=0x314
;;
640x480)
VESA_MODE=0x311
;;
esac
sed -i -e "s/\(^[[:blank:]]fbresolution\)=.*/\1=$BOOTSPLASH_RESOLUTION/" $ROOT/sbin/mkinitrd
sed -i -r -e "s/(^[[:blank:]]*BOOTPROMPT_OPTS=.*nfsroot.*)\"$/\1 vga=$VESA_MODE splash=silent\"/" $ROOT/usr/lib/ltsp/update-kernels
# FIX RDP screen
sed -i -e '/^tty=\$(tty)/a\
[ "$tty" == "not a tty" ] && tty="/dev/tty$((`env|grep "^SCREEN_.*rdp$" |cut -c8-9` + 0))"' $ROOT/usr/lib/ltsp/screen.d/rdp
} || true
;;
esac
-------------- next part --------------
case "$MODE" in
commandline)
add_option "prompt-rootpass" "`eval_gettext "prompt to set the root password, defaults to disabled"`" "advanced" "false"
;;
configure)
if [ -n "$option_prompt_rootpass_value" ]; then
ROOTPASS=prompt
fi
;;
after-install)
# Root password is empty by default, lock it
chroot $ROOT passwd -l root
;;
finalization)
if [ "$ROOTPASS" = "prompt" ]; then
# prompt for root password
chroot $ROOT passwd root
# take $ROOTPASS from /etc/ltsp/ltsp-build-client.conf
else
chroot $ROOT /bin/bash -c "echo "root:$ROOTPASS" |chpasswd"
fi
;;
esac
Подробная информация о списке рассылки Ltsp-server