[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