LTSP/BuildYourself — различия между версиями

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
м (Профиль: s/base/basic/)
м (Настройка сервера: +ссылка на ltsp.git)
 
(не показаны 22 промежуточные версии 3 участников)
Строка 1: Строка 1:
 
[[Категория:LTSP]]
 
[[Категория:LTSP]]
{{Викифицировать}}
 
  
 
== Самостоятельная установка ALTSP ==
 
== Самостоятельная установка ALTSP ==
Подразумевается использование пакетов сборки ALT из 4.0/branch либо 5.1/branch; при желании собрать не просто систему, а ''инсталятор'' — читайте [[Mkimage/Profiles/Desktop|сюда]].  Имейте в виду, что '''терминальный сервер самому проще сделать из десктопа''' (которым он по софтовой части в основном и является), чем из сервера (который сперва всё равно придётся превратить в десктоп).
+
Здесь описан процесс превращения в терминальный сервер уже развёрнутой десктопной<ref>Терминальный сервер самому проще сделать из десктопа (которым он функциональности в основном и является), чем из сервера (который сперва всё равно придётся превратить в десктоп).</ref> системы. Обычно это слишком много труда и достаточно взять уже готовый [[LTSP/Download|дистрибутив терминального сервера]]<ref>При сильном желании модифицировать не просто отдельную систему, а сам инсталяционный образ — читайте [[Mkimage/Profiles/Desktop|про сборку дистрибутивов]].</ref>.
 
__TOC__
 
__TOC__
 
 
=== Версии ===
 
=== Версии ===
Изложение последний раз проверено 2007-09-11 {{man|mike}} на следующих версиях:
+
Для создания терминального сервера {{man|mike}} проверены пакеты из [[Branches|веток]]:
 +
* '''4.0''' (выделенная система, 2007-09-11);
 +
* '''p5'''&nbsp; (дистрибутив, 2010-03-15);
 +
* '''5.1''' (контейнер OpenVZ, 2011-04-03);
 +
* '''t6''' (дистрибутив, 2012-03-09);
 +
* '''[[LTSP/BuildYourself/p7|p7]]''' (из стартеркита, [https://lists.altlinux.org/pipermail/ltsp-server/2015-November/002692.html 2015-11-28])
  
* {{pkg|ltsp5-server-kde-5.0-alt0.12}}
+
Следует использовать пакеты из актуальной копии выбранного бранча либо из дистрибутива терминального сервера. Первые сборки 2006/2007 года имели известные недоработки и нюансы; соответствующие примечания ниже отмечены [OLD]<ref>Совсем старые пакеты назывались {{pkg|ltsp5-*}} и ориентировались на расположение терминального чрута в {{path|/var/lib/ltsp5/}}.</ref> и будут через некоторое время убраны как устаревшая документация.
* {{pkg|ltsp-utils-0.25.0-alt0.3}}
 
* {{pkg|ltspswapd-0-alt4.20070117}} (начиная с {{pkg|ltsp5-server-5.0-alt0.52}} можно (желательно?) использовать {{pkg|nbd-server >{{=}} 2.9.7-alt3}})
 
* {{pkg|ltspfs-0.3-alt3.20070117.1}}
 
* {{pkg|ltsp5-server-5.0-alt0.44}}
 
* {{pkg|ltsp5-server-basic-5.0-alt0.12}}
 
* {{pkg|ltsp5-server-enhanced-5.0-alt0.12}}
 
* {{pkg|spt-profiles-ltsp-root-0.0.8-alt1}} (начиная с {{pkg|ltsp5-server-5.0-alt0.45}} не требуется)
 
  
При более старых сборках первая рекомендация — постараться загрузить новые, поскольку исправления сейчас касаются именно того, что описывается в этом документе! Иначе по крайней мере обращайте внимание на места, помеченные [OLD].
+
Бранч 4.1 не применялся<ref>Переработанный {{pkg|alterator-backend-x11}} в 4.1/branch не работал без HAL; решено в бранчах 5.1/p5 пакетом {{pkg|ltsp-x11-autosetup}}.</ref> для создания дистрибутивов терминального сервера.
  
При более новых, чем {{pkg|5.1.1-alt0.1}} — произошло переименование пакетов из {{pkg|ltsp5-*}} в {{pkg|ltsp-*}} (это несущественно, поскольку <tt>Provides:</tt> расставлены) и соответственно каталогов — из {{path|ltsp5/}} в {{path|ltsp/}} (вот это может оказаться важным при неожиданной проблеме). По состоянию на 2008-04-21 это описывает пакеты и в Sisyphus, и в 4.0/branch.
+
Sisyphus по состоянию на весну 2012 года местами пригоден для создания терминального чрута; в {{pkg|kernel-image-ltsp-client-2.6.32-alt1+}} есть поддержка KMS, необходимая для текущего {{pkg|xorg}}.
 
 
Для 4.1/branch известна как минимум одна серьёзная проблема — {{pkg|alterator-backend-x11}} не работает без HAL.  Решена в рамках бранчей 5.0, 5.1 пакетом {{pkg|ltsp-x11-autosetup}}.
 
  
 
=== Настройка сервера ===
 
=== Настройка сервера ===
 
+
Предварительно необходимо [[apt|подключить]] один из поддерживаемых [[Branches|бранчей]].
* Установить пакет {{pkg|ltsp-server-{basic,enhanced,light,kde}}} (в {{pkg|basic}} и {{pkg|enhanced}} {{pkg|twm}}, в {{pkg|light}} — {{pkg|icewm}})
+
* Установить пакет {{pkg|ltsp-server-{basic,enhanced,light,kde}}} (в {{pkg|basic}} и {{pkg|enhanced}} оконным менеджером служит {{pkg|twm}}, в {{pkg|light}} — {{pkg|icewm}})
* Настроить {{pkg|dhcp}}; можно взять рабочую заготовку в пакете {{pkg|ltsp-server}}:
+
* Настроить {{pkg|dhcp}}; можно взять [http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/server/configs/ALTLinux/dhcpd.conf.in;h=c31ba0a2ee1f2e54e045fa0d312b793cf1dd41c6;hb=HEAD рабочую заготовку] в пакете {{pkg|ltsp-server}}:
 
<pre>mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.BAK
 
<pre>mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.BAK
 
cp -a /etc/ltsp/dhcpd.conf /etc/dhcp/</pre>
 
cp -a /etc/ltsp/dhcpd.conf /etc/dhcp/</pre>
* Настроить {{pkg|tftp-server}}: дописать в {{path|/etc/xinetd.d/tftp}} рядом с остальными строчку {{term|only_from {{=}} 192.168.0.0/24}} (или другую сеть, на которую был настроен DHCP-сервер) и
+
* Настроить {{pkg|tftp-server}}: дописать в {{path|/etc/xinetd.d/tftp}} рядом с остальными строчку {{term|only_from {{=}} 192.168.0.0/24}} (или [[LTSP/Network|другую сеть]], на которую настроен DHCP-сервер) и выполнить команды
 
<pre>chkconfig tftp on
 
<pre>chkconfig tftp on
 
chkconfig xinetd on</pre>
 
chkconfig xinetd on</pre>
* [OLD] Настроить {{pkg|ltspswapd}} (при необходимости свопа для бездисковых станций; настройки по умолчанию обычно достаточны): {{path|/etc/sysconfig/ltspswapd}}
+
* Разрешить удалённый доступ к {{pkg|portmap}}<ref>Как вариант, '''за'''комментировать {{term|PORTMAP_ARGS{{=}}"-l"}} в {{path|/etc/sysconfig/portmap}}</ref> и обеспечить автозапуск сервиса<ref>В Sisyphus и бранчах старше 5.1/p5 замените {{term|portmap}} на {{term|rpcbind}}.</ref>:
* Настроить {{pkg|nbd-server}} (при использовании {{pkg|nbd-server}} вместо устаревшего (?) {{pkg|ltspswapd}}):
+
control portmap server
** {{pkg|nbd-server >{{=}} 2.9.7-alt3}}, {{pkg|ltsp-server >{{=}} 5.0-alt0.52}}
+
chkconfig portmap on
** можно взять за основу {{path|/etc/ltsp/nbd-server.config}} — скопировать его в {{path|/etc/nbd-server/config}}; размер свопа устанавливается (в порядке уменьшения приоритета): вторым параметром команды в {{term|prerun{{=}}<...>}} в {{path|/etc/nbd-server/config}}, {{term|SWAP_SIZE}} в {{path|/etc/ltsp/clients.conf}}, 128М — по умолчанию (в скрипте {{cmd|/usr/share/ltsp/scripts/mkswapfile}})
+
* Настроить {{pkg|nfs-server}}<ref>При использовании в контейнере [[OpenVZ]] вместо {{pkg|nfs-server}} придётся взять {{pkg|unfs3}}, это приведёт к удалению метапакета {{pkg|ltsp-server-basic}} — не страшно, его роль только втащить нужные пакеты по зависимостям.</ref>: дописать в {{path|/etc/exports}} строчку
** по умолчанию swap удаляется при корректном закрытии клиента и создаётся (если ещё не существует) при старте; это поведение можно изменить в {{path|/etc/nbd-server/config}} заданием параметров {{term|prerun/postrun}}
+
/var/lib/ltsp/i586 (ro,no_root_squash,async)
** {{cmd|chkconfig nbd on; service nbd start}}
+
и выполнить
* Настроить DM:
+
chkconfig nfs on
 +
* При [[LTSP/Hardware#Терминалы|объёме памяти бездисковых станций]] менее 64..128Mb рекомендуется организовать [[LTSP/Swap|сетевой своп]].
 +
* Настроить Display Manager:
 
** выполнить {{cmd|chkconfig dm on}}
 
** выполнить {{cmd|chkconfig dm on}}
 
** для {{pkg|kdm}}: в секции {{term|[Xdmcp]}} файла {{path|/etc/X11/kdm/kdmrc}} обеспечить {{term|Enable{{=}}true}}
 
** для {{pkg|kdm}}: в секции {{term|[Xdmcp]}} файла {{path|/etc/X11/kdm/kdmrc}} обеспечить {{term|Enable{{=}}true}}
** в случае неиспользования локальной X-сессии на сервере закомментировать в {{path|/etc/X11/xdm/Xservers}} строку
+
** для {{pkg|gdm}} смотрим файл {{path|/etc/X11/gdm/custom.conf}}:
 +
*** в секции {{term|[Xdmcp]}} требуется {{term|Enable{{=}}true}},
 +
*** в секции {{term|[daemon]}} — {{term|RemoteGreeter{{=}}/usr/lib/gdm/gdmgreeter}}
 +
** в случае неиспользования локальной X-сессии на сервере (в т.ч. в контейнере [[OpenVZ]]) закомментировать в {{path|/etc/X11/xdm/Xservers}} строку
 
<pre>:0 local /etc/X11/xinit/xserverrc</pre>
 
<pre>:0 local /etc/X11/xinit/xserverrc</pre>
* Разрешить удалённый доступ к {{pkg|portmap}} ('''за'''комментировать {{term|PORTMAP_ARGS{{=}}"-l"}} в {{path|/etc/sysconfig/portmap}}) и обеспечить запуск сервиса:
+
* При необходимости<ref>для {{pkg|ltsp-client >{{=}} 5.0-alt0.49}} {{pkg|xfs}} необязателен.</ref> разрешить удалённый доступ к {{pkg|xfs}} в {{path|/etc/sysconfig/xfs}} должно быть следующее:
<pre>chkconfig portmap on</pre>
+
ARGS="-daemon -user xfs"
* Разрешить удалённый доступ к {{pkg|xfs}} (значение {{term|ARGS}} в {{path|/etc/sysconfig/xfs}} должно быть примерно таким: {{term|ARGS{{=}}"-daemon -user xfs"}}) (для {{pkg|ltsp-client >{{=}} 5.0-alt0.49}} {{pkg|xfs}} необязателен)
 
 
 
=== Профиль ===
 
Для справки можно подсматривать в [http://git.altlinux.org/people/mike/packages/mkimage-profiles-desktop.git профиль], по которому собирался дистрибутив ALT Linux 4.0 Terminal, и [http://git.altlinux.org/people/mike/packages/installer-feature-ltsp.git фрагмент инсталятора]. Оттуда видно, что, скорее всего, будет достаточно установить в VE по вкусу один из пакетов {{pkg|ltsp5-server-{basic,enhanced,light,kde}}} и все, что он вытащит по зависимостям, а также выполнить действия по мотивам написанного в [http://git.altlinux.org/people/mike/packages/installer-feature-ltsp.git?p=installer-feature-ltsp.git;a=blob;f=installer-feature-ltsp/preinstall.d/98-ltsp;hb=HEAD скрипте настройки].
 
  
 
=== Сборка LTSP chroot ===
 
=== Сборка LTSP chroot ===
Для сборки чрута из пакетов требуется:
+
Для сборки чрута из пакетов требуется<ref>[OLD] В ранних сборках также был необходим пакет {{pkg|hasher}}.</ref>:
* [OLD] проверить, установлен ли пакет {{pkg|hasher}};
 
 
* отредактировать (при необходимости):
 
* отредактировать (при необходимости):
** {{path|/etc/ltsp/update-kernels.conf}} (скорее всего, для standalone-сервера рациональнее будет <tt>NFSROOT_OPTS=tcp</tt> вместо {{term|udp}} (по умолчанию); {{term|tcp}}, к сожалению, не работает (?) в контейнере OpenVZ -- скорее ядерный nfsd не работает, тогда нужен unfs3);
+
** {{path|/etc/ltsp/update-kernels.conf}}<ref>[OLD] Для standalone-сервера рациональнее будет <tt>NFSROOT_OPTS=tcp</tt> вместо {{term|udp}} (по умолчанию); с {{term|tcp}} наблюдались проблемы в контейнере OpenVZ.</ref>;
 
** {{path|/etc/ltsp/ltsp-update-kernels.conf}};
 
** {{path|/etc/ltsp/ltsp-update-kernels.conf}};
** {{path|/etc/ltsp/ltsp-build-client.conf}}:
+
** '''{{path|/etc/ltsp/ltsp-build-client.conf}}''':
*** {{term|ARCH}}, {{term|BASE}}, {{term|MIRROR}} (скорее всего, настроить на локальный репозиторий)
+
*** {{term|ARCH}}, {{term|BASE}}<ref>В {{term|BASE}}, если необходимо, изменить путь к chroot, расположив его на разделе без ''noexec''.</ref>, {{term|MIRROR}}<ref>Если в {{term|MIRROR}} указать полную строчку из {{path|sources.list}}, начинающуюся с {{term|rpm}}, то реконструкция с использованием {{term|ARCH}} и {{term|COMPONENTS}} производиться не будет, а строчка попадёт «как есть».</ref> (настроить на доступный репозиторий)
***: в {{term|BASE}}, если необходимо, изменить путь к chroot, расположив его на разделе без ''noexec''.
 
***: если в {{term|MIRROR}} указать полную строчку из {{path|sources.list}}, начинающуюся с {{term|rpm}}, то реконструкция с использованием {{term|ARCH}} и {{term|COMPONENTS}} производиться не будет, а строчка попадёт «как есть»
 
 
*** {{term|ROOTPASS}} ({{term|prompt}} — спросить при генерации);
 
*** {{term|ROOTPASS}} ({{term|prompt}} — спросить при генерации);
 
*** возможно, {{term|EXTRA_MIRROR}} (например, {{term|EXTRA_MIRROR{{=}}"file:/var/ftp/ltsp5 i586 ltsp5;file:/var/ftp/ltsp5 noarch ltsp5"}});
 
*** возможно, {{term|EXTRA_MIRROR}} (например, {{term|EXTRA_MIRROR{{=}}"file:/var/ftp/ltsp5 i586 ltsp5;file:/var/ftp/ltsp5 noarch ltsp5"}});
*** возможно, {{term|KERNEL}} (по умолчанию — {{term|kernel-image-std-smp}}, можно {{term|std-smp}});
+
*** возможно, {{term|KERNEL}} (по умолчанию — {{term|kernel-image-std-smp}}; достаточно указывать только суффикс {{term|std-smp}});
*** возможно, {{term|KERNEL_MODULES}} (субпакеты через пробел; в конфиге по умолчанию {{term|alsa}})
+
*** возможно, {{term|KERNEL_MODULES}} (субпакеты через пробел; по умолчанию — {{term|alsa}})
*** {{term|CHROOT_IMAGE}} (если используется заранее приготовленный с помощью {{term|spt}} и {{term|spt-profiles-ltsp-root}} (или другим способом) корень).
+
*** {{term|CHROOT_IMAGE}}<ref>{{term|CHROOT_IMAGE}} имеет смысл, если используется заранее приготовленный с помощью {{term|spt}} и {{term|spt-profiles-ltsp-root}} (или другим способом) корень.</ref>;
* Удостовериться, что репозиторий для архитектуры {{term|$ARCH}} (в том числе и {{term|noarch}}) доступен.
+
* удостовериться, что репозиторий для архитектуры {{term|$ARCH}} (в том числе и {{term|noarch}}) доступен;
* Выполнить {{cmd|ltsp-build-client}}
+
* '''выполнить команду {{cmd|ltsp-build-client}}'''<ref>Для ранних пакетов {{pkg|ltsp}} также были актуальны следующие замечания:<br />
** [OLD] Для успешной сборки может быть необходимо поправить {{path|/usr/share/ltsp/profile/ltsp-root/packages}} из пакета {{pkg|spt-profiles-ltsp-root}}, добавив туда {{term|which, xinitrc, libhw-tools}}
+
* [OLD] Для успешной сборки могло быть необходимо поправить {{path|/usr/share/ltsp/profile/ltsp-root/packages}} из пакета {{pkg|spt-profiles-ltsp-root}}, добавив туда {{term|which, xinitrc, libhw-tools}}.
* [OLD] Проверить права доступа на чтение в {{path|/var/lib/tftpboot/ltsp5}}
+
* [OLD] После сборки следовало проверить права доступа на чтение в {{path|/var/lib/tftpboot/ltsp5}}
* [OLD] Возможно, поправить {{path|/etc/exports}} на предмет лишнего пробела, иначе unfs3 не даст клиенту подмонтировать корень
+
* [OLD] Также доводилось поправить {{path|/etc/exports}} на предмет лишнего пробела, иначе старый {{cmd|unfs3}} не разрешал клиенту подмонтировать корень; в {{pkg|unfs3-0.9.18}} была добавлена опция проверки корректности конфигурации и она теперь используется в инитскрипте, с {{pkg|0.9.17}} и {{pkg|ltsp5-server-5.0-alt0.44}} тоже всё в порядке.</ref>;
*: (NB: я такого не наблюдаю, но вообще-то в {{pkg|unfs3-0.9.18}} добавлена опция проверки корректности конфигурации и она теперь используется в инитскрипте; с {{pkg|0.9.17}} и {{pkg|ltsp5-server-5.0-alt0.44}} у меня тоже всё в порядке — 2007-09-11 mike@)
+
* запустить {{cmd|apt-get update}}, поскольку при предыдущем шаге конфигурация {{pkg|apt}} подменялась.
  
 
=== Запуск ===
 
=== Запуск ===
* Запустить необходимые сервисы (<div style="display: inline; color: red;">внимание</div>: проверьте, что настройка dhcpd не пересекается с имеющейся локальной сетью!):
+
{| style="border:1px solid #AAA; background:#F9F9F9; width:200px; margin: 0 0 1em 1em; padding:.2em; text-align:center; float: right;" class=noprint
 +
|-
 +
|[[Image:Gnome-dialog-warning.svg]]
 +
|-
 +
| [[LTSP/Network|'''Внимание:''' проверьте, чтобы&nbsp;настроенный DHCPD '''не&nbsp;пересёкся'''<br />с&nbsp;уже используемым в&nbsp;локальной сети]]!
 +
|}
 +
* Запустить необходимые сервисы:
  
 
<pre>service dhcpd restart
 
<pre>service dhcpd restart
Строка 80: Строка 78:
 
service portmap restart
 
service portmap restart
 
service nfs restart
 
service nfs restart
service ltspswapd restart
+
service ltspswapd restart || service nbd-server restart
service xfs restart (для ltsp-client >= 5.0-alt0.49 xfs необязателен)
+
service xfs restart # для ltsp-client >= 5.0-alt0.49 xfs необязателен
 
service dm restart</pre>
 
service dm restart</pre>
  
Строка 102: Строка 100:
 
echo fuse >> /etc/modules
 
echo fuse >> /etc/modules
 
modprobe fuse
 
modprobe fuse
vzctl set ltsp5 --devnodes fuse:rw --save
+
vzctl set ltsp --devnodes fuse:rw --save
# VE, которое --name ltsp5:
+
# VE, которое --name ltsp:
 
control fusermount public</pre>
 
control fusermount public</pre>
  
== dnsmasq ==
+
== Вариации на тему ==
 +
=== dnsmasq ===
 
Роль сервера DHCP, TFTP и DNS вместо {{pkg|dhcpd}}, {{pkg|tftp-server}} и {{pkg|bind}} прекрасно исполняет {{pkg|dnsmasq}} со следующим конфигурационным файлом:
 
Роль сервера DHCP, TFTP и DNS вместо {{pkg|dhcpd}}, {{pkg|tftp-server}} и {{pkg|bind}} прекрасно исполняет {{pkg|dnsmasq}} со следующим конфигурационным файлом:
  
Строка 128: Строка 127:
 
</pre>
 
</pre>
  
== ALTSP inside OpenVZ ==
+
=== ALTSP inside OpenVZ ===
 
Недавно повторено и описано [http://admdev.blogspot.com/2008/11/altsp-inside-openvz-ve.html тут] enp@.
 
Недавно повторено и описано [http://admdev.blogspot.com/2008/11/altsp-inside-openvz-ve.html тут] enp@.
  
== ltsp kernel на локальных HDD ==
+
=== Загрузка тонких клиентов с локальных HDD ===
Описано [[LTSP/LocalBoot|здесь]].
+
{{main|LTSP/LocalBoot}}
 +
 
 +
== Шпаргалка ==
 +
Для справки можно подсматривать в [http://git.altlinux.org/people/mike/packages/mkimage-profiles-desktop.git профиль], по которому собирался дистрибутив ALT Linux 4.0 Terminal, и [http://git.altlinux.org/people/mike/packages/installer-feature-ltsp.git фрагмент инсталятора]. Оттуда видно, что, скорее всего, будет достаточно установить в VE по вкусу один из пакетов {{pkg|ltsp-server-{basic,enhanced,light,kde}}} и все, что он вытащит по зависимостям, а также выполнить действия по мотивам написанного в [http://git.altlinux.org/people/mike/packages/installer-feature-ltsp.git?p=installer-feature-ltsp.git;a=blob;f=installer-feature-ltsp/preinstall.d/98-ltsp;hb=HEAD скрипте настройки].
 +
 
 +
== Примечания ==
 +
<references />
  
 
{{Category navigation|title=LTSP|category=LTSP|sortkey={{SUBPAGENAME}}}}
 
{{Category navigation|title=LTSP|category=LTSP|sortkey={{SUBPAGENAME}}}}

Текущая версия на 09:43, 22 июня 2016


Самостоятельная установка ALTSP[править]

Здесь описан процесс превращения в терминальный сервер уже развёрнутой десктопной[1] системы. Обычно это слишком много труда и достаточно взять уже готовый дистрибутив терминального сервера[2].

Версии[править]

Для создания терминального сервера mike@ проверены пакеты из веток:

  • 4.0 (выделенная система, 2007-09-11);
  • p5  (дистрибутив, 2010-03-15);
  • 5.1 (контейнер OpenVZ, 2011-04-03);
  • t6 (дистрибутив, 2012-03-09);
  • p7 (из стартеркита, 2015-11-28)

Следует использовать пакеты из актуальной копии выбранного бранча либо из дистрибутива терминального сервера. Первые сборки 2006/2007 года имели известные недоработки и нюансы; соответствующие примечания ниже отмечены [OLD][3] и будут через некоторое время убраны как устаревшая документация.

Бранч 4.1 не применялся[4] для создания дистрибутивов терминального сервера.

Sisyphus по состоянию на весну 2012 года местами пригоден для создания терминального чрута; в kernel-image-ltsp-client-2.6.32-alt1+ есть поддержка KMS, необходимая для текущего xorg.

Настройка сервера[править]

Предварительно необходимо подключить один из поддерживаемых бранчей.

  • Установить пакет {{pkg|ltsp-server-{basic,enhanced,light,kde}}} (в basic и enhanced оконным менеджером служит twm, в lighticewm)
  • Настроить dhcp; можно взять рабочую заготовку в пакете ltsp-server:
mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.BAK
cp -a /etc/ltsp/dhcpd.conf /etc/dhcp/
  • Настроить tftp-server: дописать в /etc/xinetd.d/tftp рядом с остальными строчку only_from = 192.168.0.0/24 (или другую сеть, на которую настроен DHCP-сервер) и выполнить команды
chkconfig tftp on
chkconfig xinetd on
  • Разрешить удалённый доступ к portmap[5] и обеспечить автозапуск сервиса[6]:
control portmap server
chkconfig portmap on
  • Настроить nfs-server[7]: дописать в /etc/exports строчку
/var/lib/ltsp/i586 (ro,no_root_squash,async)

и выполнить

chkconfig nfs on
  • При объёме памяти бездисковых станций менее 64..128Mb рекомендуется организовать сетевой своп.
  • Настроить Display Manager:
    • выполнить chkconfig dm on
    • для kdm: в секции [Xdmcp] файла /etc/X11/kdm/kdmrc обеспечить Enable=true
    • для gdm смотрим файл /etc/X11/gdm/custom.conf:
      • в секции [Xdmcp] требуется Enable=true,
      • в секции [daemon] — RemoteGreeter=/usr/lib/gdm/gdmgreeter
    • в случае неиспользования локальной X-сессии на сервере (в т.ч. в контейнере OpenVZ) закомментировать в /etc/X11/xdm/Xservers строку
:0 local /etc/X11/xinit/xserverrc
  • При необходимости[8] разрешить удалённый доступ к xfs в /etc/sysconfig/xfs должно быть следующее:
ARGS="-daemon -user xfs"

Сборка LTSP chroot[править]

Для сборки чрута из пакетов требуется[9]:

  • отредактировать (при необходимости):
    • /etc/ltsp/update-kernels.conf[10];
    • /etc/ltsp/ltsp-update-kernels.conf;
    • /etc/ltsp/ltsp-build-client.conf:
      • ARCH, BASE[11], MIRROR[12] (настроить на доступный репозиторий)
      • ROOTPASS (prompt — спросить при генерации);
      • возможно, EXTRA_MIRROR (например, EXTRA_MIRROR="file:/var/ftp/ltsp5 i586 ltsp5;file:/var/ftp/ltsp5 noarch ltsp5");
      • возможно, KERNEL (по умолчанию — kernel-image-std-smp; достаточно указывать только суффикс std-smp);
      • возможно, KERNEL_MODULES (субпакеты через пробел; по умолчанию — alsa)
      • CHROOT_IMAGE[13];
  • удостовериться, что репозиторий для архитектуры $ARCH (в том числе и noarch) доступен;
  • выполнить команду ltsp-build-client[14];
  • запустить apt-get update, поскольку при предыдущем шаге конфигурация apt подменялась.

Запуск[править]

Gnome-dialog-warning.svg
Внимание: проверьте, чтобы настроенный DHCPD не пересёкся
с уже используемым в локальной сети
!
  • Запустить необходимые сервисы:
service dhcpd restart
service xinetd restart
service portmap restart
service nfs restart
service ltspswapd restart || service nbd-server restart
service xfs restart # для ltsp-client >= 5.0-alt0.49 xfs необязателен
service dm restart
  • Требуется также обеспечить обратный резолвинг IP клиентов, чтобы избежать таймаутов при отрабатывании dm («крестик на экране») — либо путём настройки DNS на терминальном сервере с обратной зоной для выдаваемых по DHCP адресов, либо хотя бы выполнить нечто вроде (для локального доменного суффикса ltsp):
grep -q ^192.168.0.1 /etc/hosts || echo "192.168.0.1 server server.ltsp" >> /etc/hosts
grep -q ^192.168.0.250 /etc/hosts || {
        for i in `seq 20 250`; do
                echo "192.168.0.$i ws$i ws$i.ltsp" >> /etc/hosts
        done
}
update_chrooted conf
  • При потребности в использовании локальных устройств (CD-ROM, флэшки) выполнить:
# вариант "на железе"
echo fuse >> /etc/modules
modprobe fuse
control fusermount public
# вариант "под OpenVZ"
# HN:
echo fuse >> /etc/modules
modprobe fuse
vzctl set ltsp --devnodes fuse:rw --save
# VE, которое --name ltsp:
control fusermount public

Вариации на тему[править]

dnsmasq[править]

Роль сервера DHCP, TFTP и DNS вместо dhcpd, tftp-server и bind прекрасно исполняет dnsmasq со следующим конфигурационным файлом:

bind-interfaces
interface=lan
interface=lo

resolv-file=/etc/resolv.conf.dnsmasq
strict-order

expand-hosts
domain=mydomain.com

dhcp-range=192.168.0.100,192.168.0.199

enable-tftp

tftp-root=/diskless/altsp/boot/i586
dhcp-boot=pxelinux.0

ALTSP inside OpenVZ[править]

Недавно повторено и описано тут enp@.

Загрузка тонких клиентов с локальных HDD[править]

Основная статья: LTSP/LocalBoot


Шпаргалка[править]

Для справки можно подсматривать в профиль, по которому собирался дистрибутив ALT Linux 4.0 Terminal, и фрагмент инсталятора. Оттуда видно, что, скорее всего, будет достаточно установить в VE по вкусу один из пакетов {{pkg|ltsp-server-{basic,enhanced,light,kde}}} и все, что он вытащит по зависимостям, а также выполнить действия по мотивам написанного в скрипте настройки.

Примечания[править]

  1. Терминальный сервер самому проще сделать из десктопа (которым он функциональности в основном и является), чем из сервера (который сперва всё равно придётся превратить в десктоп).
  2. При сильном желании модифицировать не просто отдельную систему, а сам инсталяционный образ — читайте про сборку дистрибутивов.
  3. Совсем старые пакеты назывались ltsp5-* и ориентировались на расположение терминального чрута в /var/lib/ltsp5/.
  4. Переработанный alterator-backend-x11 в 4.1/branch не работал без HAL; решено в бранчах 5.1/p5 пакетом ltsp-x11-autosetup.
  5. Как вариант, закомментировать PORTMAP_ARGS="-l" в /etc/sysconfig/portmap
  6. В Sisyphus и бранчах старше 5.1/p5 замените portmap на rpcbind.
  7. При использовании в контейнере OpenVZ вместо nfs-server придётся взять unfs3, это приведёт к удалению метапакета ltsp-server-basic — не страшно, его роль только втащить нужные пакеты по зависимостям.
  8. для ltsp-client >= 5.0-alt0.49 xfs необязателен.
  9. [OLD] В ранних сборках также был необходим пакет hasher.
  10. [OLD] Для standalone-сервера рациональнее будет NFSROOT_OPTS=tcp вместо udp (по умолчанию); с tcp наблюдались проблемы в контейнере OpenVZ.
  11. В BASE, если необходимо, изменить путь к chroot, расположив его на разделе без noexec.
  12. Если в MIRROR указать полную строчку из sources.list, начинающуюся с rpm, то реконструкция с использованием ARCH и COMPONENTS производиться не будет, а строчка попадёт «как есть».
  13. CHROOT_IMAGE имеет смысл, если используется заранее приготовленный с помощью spt и spt-profiles-ltsp-root (или другим способом) корень.
  14. Для ранних пакетов ltsp также были актуальны следующие замечания:
    • [OLD] Для успешной сборки могло быть необходимо поправить /usr/share/ltsp/profile/ltsp-root/packages из пакета spt-profiles-ltsp-root, добавив туда which, xinitrc, libhw-tools.
    • [OLD] После сборки следовало проверить права доступа на чтение в /var/lib/tftpboot/ltsp5
    • [OLD] Также доводилось поправить /etc/exports на предмет лишнего пробела, иначе старый unfs3 не разрешал клиенту подмонтировать корень; в unfs3-0.9.18 была добавлена опция проверки корректности конфигурации и она теперь используется в инитскрипте, с 0.9.17 и ltsp5-server-5.0-alt0.44 тоже всё в порядке.